X64: Fix buggy expression in disassembler. Fixes Issue 408: http://code.google.com/p/v8/issues/detail?id=408

Review URL: http://codereview.chromium.org/160174

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2544 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
whesse@chromium.org 2009-07-27 18:51:46 +00:00
parent 72ac6f619a
commit 65580ea35e

View File

@ -1350,7 +1350,7 @@ int DisassemblerX64::InstructionDecode(v8::internal::Vector<char> out_buffer,
const char* memory_location = NameOfAddress( const char* memory_location = NameOfAddress(
reinterpret_cast<byte*>( reinterpret_cast<byte*>(
*reinterpret_cast<int32_t*>(data + 1))); *reinterpret_cast<int32_t*>(data + 1)));
if (*data & 0x2 == 0x2) { // Opcode 0xA3 if (*data == 0xA3) { // Opcode 0xA3
AppendToBuffer("movzxlq rax,(%s)", memory_location); AppendToBuffer("movzxlq rax,(%s)", memory_location);
} else { // Opcode 0xA1 } else { // Opcode 0xA1
AppendToBuffer("movzxlq (%s),rax", memory_location); AppendToBuffer("movzxlq (%s),rax", memory_location);
@ -1362,7 +1362,7 @@ int DisassemblerX64::InstructionDecode(v8::internal::Vector<char> out_buffer,
// New x64 instruction mov rax,(imm_64). // New x64 instruction mov rax,(imm_64).
const char* memory_location = NameOfAddress( const char* memory_location = NameOfAddress(
*reinterpret_cast<byte**>(data + 1)); *reinterpret_cast<byte**>(data + 1));
if (*data & 0x2 == 0x2) { // Opcode 0xA3 if (*data == 0xA3) { // Opcode 0xA3
AppendToBuffer("movq rax,(%s)", memory_location); AppendToBuffer("movq rax,(%s)", memory_location);
} else { // Opcode 0xA1 } else { // Opcode 0xA1
AppendToBuffer("movq (%s),rax", memory_location); AppendToBuffer("movq (%s),rax", memory_location);