From 4d366b8b24e20317337d1c836614fb60245dbb07 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 11 Jul 2020 17:12:44 +0200 Subject: [PATCH] UserspaceEmulator: Implement PUSH_imm32 and PUSH_RM32 --- DevTools/UserspaceEmulator/SoftCPU.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/DevTools/UserspaceEmulator/SoftCPU.cpp b/DevTools/UserspaceEmulator/SoftCPU.cpp index 1c6c89c578..41ddc8d284 100644 --- a/DevTools/UserspaceEmulator/SoftCPU.cpp +++ b/DevTools/UserspaceEmulator/SoftCPU.cpp @@ -781,11 +781,21 @@ void SoftCPU::PUSH_ES(const X86::Instruction&) { TODO(); } void SoftCPU::PUSH_FS(const X86::Instruction&) { TODO(); } void SoftCPU::PUSH_GS(const X86::Instruction&) { TODO(); } void SoftCPU::PUSH_RM16(const X86::Instruction&) { TODO(); } -void SoftCPU::PUSH_RM32(const X86::Instruction&) { TODO(); } + +void SoftCPU::PUSH_RM32(const X86::Instruction& insn) +{ + push32(insn.modrm().read32(*this, insn)); +} + void SoftCPU::PUSH_SP_8086_80186(const X86::Instruction&) { TODO(); } void SoftCPU::PUSH_SS(const X86::Instruction&) { TODO(); } void SoftCPU::PUSH_imm16(const X86::Instruction&) { TODO(); } -void SoftCPU::PUSH_imm32(const X86::Instruction&) { TODO(); } + +void SoftCPU::PUSH_imm32(const X86::Instruction& insn) +{ + push32(insn.imm32()); +} + void SoftCPU::PUSH_imm8(const X86::Instruction&) { TODO(); } void SoftCPU::PUSH_reg16(const X86::Instruction&) { TODO(); }