OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1544 emit_operand(3, dst); | 1544 emit_operand(3, dst); |
1545 } | 1545 } |
1546 | 1546 |
1547 | 1547 |
1548 void Assembler::nop() { | 1548 void Assembler::nop() { |
1549 EnsureSpace ensure_space(this); | 1549 EnsureSpace ensure_space(this); |
1550 emit(0x90); | 1550 emit(0x90); |
1551 } | 1551 } |
1552 | 1552 |
1553 | 1553 |
1554 void Assembler::not_(Register dst) { | 1554 void Assembler::emit_not(Register dst, int size) { |
1555 EnsureSpace ensure_space(this); | 1555 EnsureSpace ensure_space(this); |
1556 emit_rex_64(dst); | 1556 emit_rex(dst, size); |
1557 emit(0xF7); | 1557 emit(0xF7); |
1558 emit_modrm(0x2, dst); | 1558 emit_modrm(0x2, dst); |
1559 } | 1559 } |
1560 | 1560 |
1561 | 1561 |
1562 void Assembler::not_(const Operand& dst) { | 1562 void Assembler::emit_not(const Operand& dst, int size) { |
1563 EnsureSpace ensure_space(this); | 1563 EnsureSpace ensure_space(this); |
1564 emit_rex_64(dst); | 1564 emit_rex(dst, size); |
1565 emit(0xF7); | 1565 emit(0xF7); |
1566 emit_operand(2, dst); | 1566 emit_operand(2, dst); |
1567 } | 1567 } |
1568 | 1568 |
1569 | 1569 |
1570 void Assembler::notl(Register dst) { | |
1571 EnsureSpace ensure_space(this); | |
1572 emit_optional_rex_32(dst); | |
1573 emit(0xF7); | |
1574 emit_modrm(0x2, dst); | |
1575 } | |
1576 | |
1577 | |
1578 void Assembler::Nop(int n) { | 1570 void Assembler::Nop(int n) { |
1579 // The recommended muti-byte sequences of NOP instructions from the Intel 64 | 1571 // The recommended muti-byte sequences of NOP instructions from the Intel 64 |
1580 // and IA-32 Architectures Software Developer's Manual. | 1572 // and IA-32 Architectures Software Developer's Manual. |
1581 // | 1573 // |
1582 // Length Assembly Byte Sequence | 1574 // Length Assembly Byte Sequence |
1583 // 2 bytes 66 NOP 66 90H | 1575 // 2 bytes 66 NOP 66 90H |
1584 // 3 bytes NOP DWORD ptr [EAX] 0F 1F 00H | 1576 // 3 bytes NOP DWORD ptr [EAX] 0F 1F 00H |
1585 // 4 bytes NOP DWORD ptr [EAX + 00H] 0F 1F 40 00H | 1577 // 4 bytes NOP DWORD ptr [EAX + 00H] 0F 1F 40 00H |
1586 // 5 bytes NOP DWORD ptr [EAX + EAX*1 + 00H] 0F 1F 44 00 00H | 1578 // 5 bytes NOP DWORD ptr [EAX + EAX*1 + 00H] 0F 1F 44 00 00H |
1587 // 6 bytes 66 NOP DWORD ptr [EAX + EAX*1 + 00H] 66 0F 1F 44 00 00H | 1579 // 6 bytes 66 NOP DWORD ptr [EAX + EAX*1 + 00H] 66 0F 1F 44 00 00H |
(...skipping 1464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3052 | 3044 |
3053 | 3045 |
3054 bool RelocInfo::IsInConstantPool() { | 3046 bool RelocInfo::IsInConstantPool() { |
3055 return false; | 3047 return false; |
3056 } | 3048 } |
3057 | 3049 |
3058 | 3050 |
3059 } } // namespace v8::internal | 3051 } } // namespace v8::internal |
3060 | 3052 |
3061 #endif // V8_TARGET_ARCH_X64 | 3053 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |