diff --git a/InstructionSets/x86/Decoder.cpp b/InstructionSets/x86/Decoder.cpp index 34de2c9ba..58e7f01b7 100644 --- a/InstructionSets/x86/Decoder.cpp +++ b/InstructionSets/x86/Decoder.cpp @@ -370,7 +370,12 @@ std::pair::InstructionT> Decoder::decode(con case 0xca: RegData(RETfar, None, data_size_); break; case 0xcb: Complete(RETfar, None, None, DataSize::DWord); break; - case 0xcc: Complete(INT3, None, None, DataSize::None); break; + case 0xcc: + // Encode INT3 as though it were INT with an + // immediate operand of 3. + Complete(INT, Immediate, None, DataSize::Byte); + operand_ = 3; + break; case 0xcd: RegData(INT, None, DataSize::Byte); break; case 0xce: Complete(INTO, None, None, DataSize::None); break; case 0xcf: Complete(IRET, None, None, DataSize::None); break; diff --git a/InstructionSets/x86/Instruction.hpp b/InstructionSets/x86/Instruction.hpp index cfb67eec6..3b1c9b3d8 100644 --- a/InstructionSets/x86/Instruction.hpp +++ b/InstructionSets/x86/Instruction.hpp @@ -108,8 +108,6 @@ enum class Operation: uint8_t { JPCX, /// Generates a software interrupt of the level stated in the operand. INT, - /// Generates a software interrupt of level 3. - INT3, /// Generates a software interrupt of level 4 if overflow is set. INTO,