From 12566b9df074ba01de20d550c01aff119f212bb8 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 11 Jul 2020 22:15:47 +0200 Subject: UserspaceEmulator: Implement the MOVZX instruction --- DevTools/UserspaceEmulator/SoftCPU.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/DevTools/UserspaceEmulator/SoftCPU.cpp b/DevTools/UserspaceEmulator/SoftCPU.cpp index f7a7f9fe05..10be2bf097 100644 --- a/DevTools/UserspaceEmulator/SoftCPU.cpp +++ b/DevTools/UserspaceEmulator/SoftCPU.cpp @@ -746,9 +746,22 @@ void SoftCPU::MOVSW(const X86::Instruction&) { TODO(); } void SoftCPU::MOVSX_reg16_RM8(const X86::Instruction&) { TODO(); } void SoftCPU::MOVSX_reg32_RM16(const X86::Instruction&) { TODO(); } void SoftCPU::MOVSX_reg32_RM8(const X86::Instruction&) { TODO(); } -void SoftCPU::MOVZX_reg16_RM8(const X86::Instruction&) { TODO(); } -void SoftCPU::MOVZX_reg32_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::MOVZX_reg32_RM8(const X86::Instruction&) { TODO(); } + +void SoftCPU::MOVZX_reg16_RM8(const X86::Instruction& insn) +{ + gpr16(insn.reg16()) = insn.modrm().read8(*this, insn); +} + +void SoftCPU::MOVZX_reg32_RM16(const X86::Instruction& insn) +{ + gpr32(insn.reg32()) = insn.modrm().read16(*this, insn); +} + +void SoftCPU::MOVZX_reg32_RM8(const X86::Instruction& insn) +{ + gpr32(insn.reg32()) = insn.modrm().read8(*this, insn); +} + void SoftCPU::MOV_AL_moff8(const X86::Instruction&) { TODO(); } void SoftCPU::MOV_AX_moff16(const X86::Instruction&) { TODO(); } void SoftCPU::MOV_CR_reg32(const X86::Instruction&) { TODO(); } -- cgit v1.2.3