| Index: src/x87/disasm-x87.cc
|
| diff --git a/src/ia32/disasm-ia32.cc b/src/x87/disasm-x87.cc
|
| similarity index 96%
|
| copy from src/ia32/disasm-ia32.cc
|
| copy to src/x87/disasm-x87.cc
|
| index 721b0bb429e8d8962d638fc5170883f15bc6d0cd..4eb69739304fca01c31bd43be81c8d0fa151c013 100644
|
| --- a/src/ia32/disasm-ia32.cc
|
| +++ b/src/x87/disasm-x87.cc
|
| @@ -8,7 +8,7 @@
|
|
|
| #include "v8.h"
|
|
|
| -#if V8_TARGET_ARCH_IA32
|
| +#if V8_TARGET_ARCH_X87
|
|
|
| #include "disasm.h"
|
|
|
| @@ -240,10 +240,10 @@ void InstructionTable::AddJumpConditionalShort() {
|
| }
|
|
|
|
|
| -// The IA32 disassembler implementation.
|
| -class DisassemblerIA32 {
|
| +// The X87 disassembler implementation.
|
| +class DisassemblerX87 {
|
| public:
|
| - DisassemblerIA32(const NameConverter& converter,
|
| + DisassemblerX87(const NameConverter& converter,
|
| bool abort_on_unimplemented = true)
|
| : converter_(converter),
|
| instruction_table_(InstructionTable::get_instance()),
|
| @@ -252,7 +252,7 @@ class DisassemblerIA32 {
|
| tmp_buffer_[0] = '\0';
|
| }
|
|
|
| - virtual ~DisassemblerIA32() {}
|
| + virtual ~DisassemblerX87() {}
|
|
|
| // Writes one disassembled instruction into 'buffer' (0-terminated).
|
| // Returns the length of the disassembled machine instruction in bytes.
|
| @@ -322,7 +322,7 @@ class DisassemblerIA32 {
|
| *base = data & 7;
|
| }
|
|
|
| - typedef const char* (DisassemblerIA32::*RegisterNameMapping)(int reg) const;
|
| + typedef const char* (DisassemblerX87::*RegisterNameMapping)(int reg) const;
|
|
|
| int PrintRightOperandHelper(byte* modrmp, RegisterNameMapping register_name);
|
| int PrintRightOperand(byte* modrmp);
|
| @@ -353,7 +353,7 @@ class DisassemblerIA32 {
|
| };
|
|
|
|
|
| -void DisassemblerIA32::AppendToBuffer(const char* format, ...) {
|
| +void DisassemblerX87::AppendToBuffer(const char* format, ...) {
|
| v8::internal::Vector<char> buf = tmp_buffer_ + tmp_buffer_pos_;
|
| va_list args;
|
| va_start(args, format);
|
| @@ -362,13 +362,13 @@ void DisassemblerIA32::AppendToBuffer(const char* format, ...) {
|
| tmp_buffer_pos_ += result;
|
| }
|
|
|
| -int DisassemblerIA32::PrintRightOperandHelper(
|
| +int DisassemblerX87::PrintRightOperandHelper(
|
| byte* modrmp,
|
| RegisterNameMapping direct_register_name) {
|
| int mod, regop, rm;
|
| get_modrm(*modrmp, &mod, ®op, &rm);
|
| RegisterNameMapping register_name = (mod == 3) ? direct_register_name :
|
| - &DisassemblerIA32::NameOfCPURegister;
|
| + &DisassemblerX87::NameOfCPURegister;
|
| switch (mod) {
|
| case 0:
|
| if (rm == ebp) {
|
| @@ -450,26 +450,26 @@ int DisassemblerIA32::PrintRightOperandHelper(
|
| }
|
|
|
|
|
| -int DisassemblerIA32::PrintRightOperand(byte* modrmp) {
|
| - return PrintRightOperandHelper(modrmp, &DisassemblerIA32::NameOfCPURegister);
|
| +int DisassemblerX87::PrintRightOperand(byte* modrmp) {
|
| + return PrintRightOperandHelper(modrmp, &DisassemblerX87::NameOfCPURegister);
|
| }
|
|
|
|
|
| -int DisassemblerIA32::PrintRightByteOperand(byte* modrmp) {
|
| +int DisassemblerX87::PrintRightByteOperand(byte* modrmp) {
|
| return PrintRightOperandHelper(modrmp,
|
| - &DisassemblerIA32::NameOfByteCPURegister);
|
| + &DisassemblerX87::NameOfByteCPURegister);
|
| }
|
|
|
|
|
| -int DisassemblerIA32::PrintRightXMMOperand(byte* modrmp) {
|
| +int DisassemblerX87::PrintRightXMMOperand(byte* modrmp) {
|
| return PrintRightOperandHelper(modrmp,
|
| - &DisassemblerIA32::NameOfXMMRegister);
|
| + &DisassemblerX87::NameOfXMMRegister);
|
| }
|
|
|
|
|
| // Returns number of bytes used including the current *data.
|
| // Writes instruction's mnemonic, left and right operands to 'tmp_buffer_'.
|
| -int DisassemblerIA32::PrintOperands(const char* mnem,
|
| +int DisassemblerX87::PrintOperands(const char* mnem,
|
| OperandOrder op_order,
|
| byte* data) {
|
| byte modrm = *data;
|
| @@ -498,7 +498,7 @@ int DisassemblerIA32::PrintOperands(const char* mnem,
|
|
|
| // Returns number of bytes used by machine instruction, including *data byte.
|
| // Writes immediate instructions to 'tmp_buffer_'.
|
| -int DisassemblerIA32::PrintImmediateOp(byte* data) {
|
| +int DisassemblerX87::PrintImmediateOp(byte* data) {
|
| bool sign_extension_bit = (*data & 0x02) != 0;
|
| byte modrm = *(data+1);
|
| int mod, regop, rm;
|
| @@ -527,7 +527,7 @@ int DisassemblerIA32::PrintImmediateOp(byte* data) {
|
|
|
|
|
| // Returns number of bytes used, including *data.
|
| -int DisassemblerIA32::F7Instruction(byte* data) {
|
| +int DisassemblerX87::F7Instruction(byte* data) {
|
| ASSERT_EQ(0xF7, *data);
|
| byte modrm = *(data+1);
|
| int mod, regop, rm;
|
| @@ -561,7 +561,7 @@ int DisassemblerIA32::F7Instruction(byte* data) {
|
| }
|
|
|
|
|
| -int DisassemblerIA32::D1D3C1Instruction(byte* data) {
|
| +int DisassemblerX87::D1D3C1Instruction(byte* data) {
|
| byte op = *data;
|
| ASSERT(op == 0xD1 || op == 0xD3 || op == 0xC1);
|
| byte modrm = *(data+1);
|
| @@ -604,7 +604,7 @@ int DisassemblerIA32::D1D3C1Instruction(byte* data) {
|
|
|
|
|
| // Returns number of bytes used, including *data.
|
| -int DisassemblerIA32::JumpShort(byte* data) {
|
| +int DisassemblerX87::JumpShort(byte* data) {
|
| ASSERT_EQ(0xEB, *data);
|
| byte b = *(data+1);
|
| byte* dest = data + static_cast<int8_t>(b) + 2;
|
| @@ -614,7 +614,7 @@ int DisassemblerIA32::JumpShort(byte* data) {
|
|
|
|
|
| // Returns number of bytes used, including *data.
|
| -int DisassemblerIA32::JumpConditional(byte* data, const char* comment) {
|
| +int DisassemblerX87::JumpConditional(byte* data, const char* comment) {
|
| ASSERT_EQ(0x0F, *data);
|
| byte cond = *(data+1) & 0x0F;
|
| byte* dest = data + *reinterpret_cast<int32_t*>(data+2) + 6;
|
| @@ -628,7 +628,7 @@ int DisassemblerIA32::JumpConditional(byte* data, const char* comment) {
|
|
|
|
|
| // Returns number of bytes used, including *data.
|
| -int DisassemblerIA32::JumpConditionalShort(byte* data, const char* comment) {
|
| +int DisassemblerX87::JumpConditionalShort(byte* data, const char* comment) {
|
| byte cond = *data & 0x0F;
|
| byte b = *(data+1);
|
| byte* dest = data + static_cast<int8_t>(b) + 2;
|
| @@ -642,7 +642,7 @@ int DisassemblerIA32::JumpConditionalShort(byte* data, const char* comment) {
|
|
|
|
|
| // Returns number of bytes used, including *data.
|
| -int DisassemblerIA32::SetCC(byte* data) {
|
| +int DisassemblerX87::SetCC(byte* data) {
|
| ASSERT_EQ(0x0F, *data);
|
| byte cond = *(data+1) & 0x0F;
|
| const char* mnem = set_conditional_mnem[cond];
|
| @@ -653,7 +653,7 @@ int DisassemblerIA32::SetCC(byte* data) {
|
|
|
|
|
| // Returns number of bytes used, including *data.
|
| -int DisassemblerIA32::CMov(byte* data) {
|
| +int DisassemblerX87::CMov(byte* data) {
|
| ASSERT_EQ(0x0F, *data);
|
| byte cond = *(data + 1) & 0x0F;
|
| const char* mnem = conditional_move_mnem[cond];
|
| @@ -663,7 +663,7 @@ int DisassemblerIA32::CMov(byte* data) {
|
|
|
|
|
| // Returns number of bytes used, including *data.
|
| -int DisassemblerIA32::FPUInstruction(byte* data) {
|
| +int DisassemblerX87::FPUInstruction(byte* data) {
|
| byte escape_opcode = *data;
|
| ASSERT_EQ(0xD8, escape_opcode & 0xF8);
|
| byte modrm_byte = *(data+1);
|
| @@ -675,7 +675,7 @@ int DisassemblerIA32::FPUInstruction(byte* data) {
|
| }
|
| }
|
|
|
| -int DisassemblerIA32::MemoryFPUInstruction(int escape_opcode,
|
| +int DisassemblerX87::MemoryFPUInstruction(int escape_opcode,
|
| int modrm_byte,
|
| byte* modrm_start) {
|
| const char* mnem = "?";
|
| @@ -722,7 +722,7 @@ int DisassemblerIA32::MemoryFPUInstruction(int escape_opcode,
|
| return count + 1;
|
| }
|
|
|
| -int DisassemblerIA32::RegisterFPUInstruction(int escape_opcode,
|
| +int DisassemblerX87::RegisterFPUInstruction(int escape_opcode,
|
| byte modrm_byte) {
|
| bool has_register = false; // Is the FPU register encoded in modrm_byte?
|
| const char* mnem = "?";
|
| @@ -873,7 +873,7 @@ static const char* F0Mnem(byte f0byte) {
|
|
|
|
|
| // Disassembled instruction '*instr' and writes it into 'out_buffer'.
|
| -int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer,
|
| +int DisassemblerX87::InstructionDecode(v8::internal::Vector<char> out_buffer,
|
| byte* instr) {
|
| tmp_buffer_pos_ = 0; // starting to write as position 0
|
| byte* data = instr;
|
| @@ -1709,7 +1709,7 @@ const char* NameConverter::NameOfXMMRegister(int reg) const {
|
|
|
|
|
| const char* NameConverter::NameInCode(byte* addr) const {
|
| - // IA32 does not embed debug strings at the moment.
|
| + // X87 does not embed debug strings at the moment.
|
| UNREACHABLE();
|
| return "";
|
| }
|
| @@ -1726,7 +1726,7 @@ Disassembler::~Disassembler() {}
|
|
|
| int Disassembler::InstructionDecode(v8::internal::Vector<char> buffer,
|
| byte* instruction) {
|
| - DisassemblerIA32 d(converter_, false /*do not crash if unimplemented*/);
|
| + DisassemblerX87 d(converter_, false /*do not crash if unimplemented*/);
|
| return d.InstructionDecode(buffer, instruction);
|
| }
|
|
|
| @@ -1759,4 +1759,4 @@ int Disassembler::ConstantPoolSizeAt(byte* instruction) { return -1; }
|
|
|
| } // namespace disasm
|
|
|
| -#endif // V8_TARGET_ARCH_IA32
|
| +#endif // V8_TARGET_ARCH_X87
|
|
|