From dafb134cdc1f9d6b81dcd570f2017097e0ad721e Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Wed, 25 Oct 2023 22:27:44 -0400 Subject: [PATCH] Eliminate dead detour. --- InstructionSets/x86/Decoder.cpp | 24 ++++++------------------ InstructionSets/x86/Decoder.hpp | 3 --- 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/InstructionSets/x86/Decoder.cpp b/InstructionSets/x86/Decoder.cpp index 81a369e22..21d3370ab 100644 --- a/InstructionSets/x86/Decoder.cpp +++ b/InstructionSets/x86/Decoder.cpp @@ -1014,24 +1014,12 @@ std::pair::InstructionT> Decoder::decode(con if(bytes_to_consume == outstanding_bytes) { phase_ = Phase::ReadyToPost; - // TODO: whether the displacement is signed appears to depend on the opcode. - // Find an appropriate table. - -// if(!sign_extend_displacement_) { -// switch(displacement_size_) { -// case DataSize::None: displacement_ = 0; break; -// case DataSize::Byte: displacement_ = decltype(displacement_)(uint8_t(inward_data_)); break; -// case DataSize::Word: displacement_ = decltype(displacement_)(uint16_t(inward_data_)); break; -// case DataSize::DWord: displacement_ = decltype(displacement_)(uint32_t(inward_data_)); break; -// } -// } else { - switch(displacement_size_) { - case DataSize::None: displacement_ = 0; break; - case DataSize::Byte: displacement_ = int8_t(inward_data_); break; - case DataSize::Word: displacement_ = int16_t(inward_data_); break; - case DataSize::DWord: displacement_ = int32_t(inward_data_); break; - } -// } + switch(displacement_size_) { + case DataSize::None: displacement_ = 0; break; + case DataSize::Byte: displacement_ = int8_t(inward_data_); break; + case DataSize::Word: displacement_ = int16_t(inward_data_); break; + case DataSize::DWord: displacement_ = int32_t(inward_data_); break; + } inward_data_ >>= bit_size(displacement_size_); // Use inequality of sizes as a test for necessary sign extension. diff --git a/InstructionSets/x86/Decoder.hpp b/InstructionSets/x86/Decoder.hpp index 354d4accd..eaaad84e5 100644 --- a/InstructionSets/x86/Decoder.hpp +++ b/InstructionSets/x86/Decoder.hpp @@ -195,8 +195,6 @@ template class Decoder { bool sign_extend_operand_ = false; // If set then sign extend the operand up to the operation size; // otherwise it'll be zero-padded. - bool sign_extend_displacement_ = false; // Much as above; 'displacement' is used internally for both - // displacements and offsets, so signage will vary. // Prefix capture fields. Repetition repetition_ = Repetition::None; @@ -225,7 +223,6 @@ template class Decoder { next_inward_data_shift_ = 0; inward_data_ = 0; sign_extend_operand_ = false; - sign_extend_displacement_ = false; } };