Chromium Code Reviews| Index: src/ia32/disasm-ia32.cc |
| diff --git a/src/ia32/disasm-ia32.cc b/src/ia32/disasm-ia32.cc |
| index 58c22afcd376ea10e47b5222b557c43e3372e350..e1b5a88b51506aae1d70b0924124bf99dbfc741d 100644 |
| --- a/src/ia32/disasm-ia32.cc |
| +++ b/src/ia32/disasm-ia32.cc |
| @@ -817,6 +817,7 @@ int DisassemblerIA32::RegisterFPUInstruction(int escape_opcode, |
| // Returns NULL if the instruction is not handled here. |
| static const char* F0Mnem(byte f0byte) { |
| switch (f0byte) { |
| + case 0x18: return "prefetch"; |
|
Erik Corry
2010/06/04 07:07:40
What about the other instructions? Can they alrea
Lasse Reichstein
2010/06/04 11:52:13
movntdq[a] can't, but they aren't used yet either.
|
| case 0xA2: return "cpuid"; |
| case 0x31: return "rdtsc"; |
| case 0xBE: return "movsx_b"; |
| @@ -942,7 +943,13 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer, |
| case 0x0F: |
| { byte f0byte = *(data+1); |
| const char* f0mnem = F0Mnem(f0byte); |
| - if (f0byte == 0xA2 || f0byte == 0x31) { |
| + if (f0byte == 0x18) { |
| + int mod, regop, rm; |
| + get_modrm(*data, &mod, ®op, &rm); |
| + const char* suffix[] = {"nta", "1", "2", "3"}; |
| + AppendToBuffer("%s%s ", f0mnem, suffix[regop & 0x03]); |
| + data += PrintRightOperand(data); |
| + } else if (f0byte == 0xA2 || f0byte == 0x31) { |
| AppendToBuffer("%s", f0mnem); |
| data += 2; |
| } else if ((f0byte & 0xF0) == 0x80) { |