| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/disassembler.h" | 5 #include "vm/disassembler.h" |
| 6 | 6 |
| 7 #include "vm/globals.h" // Needed here to get TARGET_ARCH_IA32. | 7 #include "vm/globals.h" // Needed here to get TARGET_ARCH_IA32. |
| 8 #if defined(TARGET_ARCH_X64) | 8 #if defined(TARGET_ARCH_X64) |
| 9 #include "platform/utils.h" | 9 #include "platform/utils.h" |
| 10 #include "vm/allocation.h" | 10 #include "vm/allocation.h" |
| (...skipping 1400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1411 get_modrm(*current, &mod, ®op, &rm); | 1411 get_modrm(*current, &mod, ®op, &rm); |
| 1412 AppendToBuffer("movups "); | 1412 AppendToBuffer("movups "); |
| 1413 current += PrintRightXMMOperand(current); | 1413 current += PrintRightXMMOperand(current); |
| 1414 AppendToBuffer(", %s", NameOfXMMRegister(regop)); | 1414 AppendToBuffer(", %s", NameOfXMMRegister(regop)); |
| 1415 } else if (opcode == 0x10) { | 1415 } else if (opcode == 0x10) { |
| 1416 // movups xmm, xmm/m128 | 1416 // movups xmm, xmm/m128 |
| 1417 int mod, regop, rm; | 1417 int mod, regop, rm; |
| 1418 get_modrm(*current, &mod, ®op, &rm); | 1418 get_modrm(*current, &mod, ®op, &rm); |
| 1419 AppendToBuffer("movups %s, ", NameOfXMMRegister(regop)); | 1419 AppendToBuffer("movups %s, ", NameOfXMMRegister(regop)); |
| 1420 current += PrintRightXMMOperand(current); | 1420 current += PrintRightXMMOperand(current); |
| 1421 } else if (opcode == 0x50) { |
| 1422 int mod, regop, rm; |
| 1423 get_modrm(*current, &mod, ®op, &rm); |
| 1424 AppendToBuffer("movmskps %s,", NameOfCPURegister(regop)); |
| 1425 current += PrintRightXMMOperand(current); |
| 1421 } else if (opcode == 0xA2 || opcode == 0x31) { | 1426 } else if (opcode == 0xA2 || opcode == 0x31) { |
| 1422 // RDTSC or CPUID | 1427 // RDTSC or CPUID |
| 1423 AppendToBuffer("%s", mnemonic); | 1428 AppendToBuffer("%s", mnemonic); |
| 1424 | 1429 |
| 1425 } else if ((opcode & 0xF0) == 0x40) { | 1430 } else if ((opcode & 0xF0) == 0x40) { |
| 1426 // CMOVcc: conditional move. | 1431 // CMOVcc: conditional move. |
| 1427 int condition = opcode & 0x0F; | 1432 int condition = opcode & 0x0F; |
| 1428 const InstructionDesc& idesc = cmov_instructions[condition]; | 1433 const InstructionDesc& idesc = cmov_instructions[condition]; |
| 1429 byte_size_operand_ = idesc.byte_size_operation; | 1434 byte_size_operand_ = idesc.byte_size_operation; |
| 1430 current += PrintOperands(idesc.mnem, idesc.op_order_, current); | 1435 current += PrintOperands(idesc.mnem, idesc.op_order_, current); |
| (...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1928 pc); | 1933 pc); |
| 1929 pc += instruction_length; | 1934 pc += instruction_length; |
| 1930 } | 1935 } |
| 1931 | 1936 |
| 1932 return; | 1937 return; |
| 1933 } | 1938 } |
| 1934 | 1939 |
| 1935 } // namespace dart | 1940 } // namespace dart |
| 1936 | 1941 |
| 1937 #endif // defined TARGET_ARCH_X64 | 1942 #endif // defined TARGET_ARCH_X64 |
| OLD | NEW |