| 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 1404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1415 get_modrm(*current, &mod, ®op, &rm); | 1415 get_modrm(*current, &mod, ®op, &rm); |
| 1416 AppendToBuffer("movups "); | 1416 AppendToBuffer("movups "); |
| 1417 current += PrintRightXMMOperand(current); | 1417 current += PrintRightXMMOperand(current); |
| 1418 AppendToBuffer(", %s", NameOfXMMRegister(regop)); | 1418 AppendToBuffer(", %s", NameOfXMMRegister(regop)); |
| 1419 } else if (opcode == 0x10) { | 1419 } else if (opcode == 0x10) { |
| 1420 // movups xmm, xmm/m128 | 1420 // movups xmm, xmm/m128 |
| 1421 int mod, regop, rm; | 1421 int mod, regop, rm; |
| 1422 get_modrm(*current, &mod, ®op, &rm); | 1422 get_modrm(*current, &mod, ®op, &rm); |
| 1423 AppendToBuffer("movups %s, ", NameOfXMMRegister(regop)); | 1423 AppendToBuffer("movups %s, ", NameOfXMMRegister(regop)); |
| 1424 current += PrintRightXMMOperand(current); | 1424 current += PrintRightXMMOperand(current); |
| 1425 } else if (opcode == 0x50) { |
| 1426 int mod, regop, rm; |
| 1427 get_modrm(*current, &mod, ®op, &rm); |
| 1428 AppendToBuffer("movmskps %s,", NameOfCPURegister(regop)); |
| 1429 current += PrintRightXMMOperand(current); |
| 1425 } else if (opcode == 0xA2 || opcode == 0x31) { | 1430 } else if (opcode == 0xA2 || opcode == 0x31) { |
| 1426 // RDTSC or CPUID | 1431 // RDTSC or CPUID |
| 1427 AppendToBuffer("%s", mnemonic); | 1432 AppendToBuffer("%s", mnemonic); |
| 1428 | 1433 |
| 1429 } else if ((opcode & 0xF0) == 0x40) { | 1434 } else if ((opcode & 0xF0) == 0x40) { |
| 1430 // CMOVcc: conditional move. | 1435 // CMOVcc: conditional move. |
| 1431 int condition = opcode & 0x0F; | 1436 int condition = opcode & 0x0F; |
| 1432 const InstructionDesc& idesc = cmov_instructions[condition]; | 1437 const InstructionDesc& idesc = cmov_instructions[condition]; |
| 1433 byte_size_operand_ = idesc.byte_size_operation; | 1438 byte_size_operand_ = idesc.byte_size_operation; |
| 1434 current += PrintOperands(idesc.mnem, idesc.op_order_, current); | 1439 current += PrintOperands(idesc.mnem, idesc.op_order_, current); |
| (...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1932 pc); | 1937 pc); |
| 1933 pc += instruction_length; | 1938 pc += instruction_length; |
| 1934 } | 1939 } |
| 1935 | 1940 |
| 1936 return; | 1941 return; |
| 1937 } | 1942 } |
| 1938 | 1943 |
| 1939 } // namespace dart | 1944 } // namespace dart |
| 1940 | 1945 |
| 1941 #endif // defined TARGET_ARCH_X64 | 1946 #endif // defined TARGET_ARCH_X64 |
| OLD | NEW |