From 7ea84d9a4e146d537708e45ef9863b3b8d27ede7 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Mon, 7 Mar 2022 16:25:44 -0500 Subject: [PATCH] Add MOVZX, MOVSX. --- InstructionSets/x86/Decoder.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/InstructionSets/x86/Decoder.cpp b/InstructionSets/x86/Decoder.cpp index c79efe8c2..e16668563 100644 --- a/InstructionSets/x86/Decoder.cpp +++ b/InstructionSets/x86/Decoder.cpp @@ -516,14 +516,26 @@ std::pair::InstructionT> Decoder::decode(con case 0xb3: RequiresMin(i80386); MemRegReg(BTR, MemReg_Reg, data_size_); break; case 0xb4: RequiresMin(i80386); MemRegReg(LFS, Reg_MemReg, data_size_); break; case 0xb5: RequiresMin(i80386); MemRegReg(LGS, Reg_MemReg, data_size_); break; - // TODO: 0xb6: MOVZX Gv, Eb - // TODO: 0xb7: MOVZX Gv, Ew + case 0xb6: + RequiresMin(i80386); + MemRegReg(MOVZX, Reg_MemReg, DataSize::Byte); + break; + case 0xb7: + RequiresMin(i80386); + MemRegReg(MOVZX, Reg_MemReg, DataSize::Word); + break; // TODO: 0xba: Grp8 Ev, Ib case 0xbb: RequiresMin(i80386); MemRegReg(BTC, MemReg_Reg, data_size_); break; case 0xbc: RequiresMin(i80386); MemRegReg(BSF, MemReg_Reg, data_size_); break; case 0xbd: RequiresMin(i80386); MemRegReg(BSR, MemReg_Reg, data_size_); break; - // TODO: 0xbe: MOVSX Gv, Eb - // TODO: 0xbf: MOVSX Gv, Ew + case 0xbe: + RequiresMin(i80386); + MemRegReg(MOVSX, Reg_MemReg, DataSize::Byte); + break; + case 0xbf: + RequiresMin(i80386); + MemRegReg(MOVSX, Reg_MemReg, DataSize::Word); + break; } }