Kaynağa Gözat

UserspaceEmulator: Implement JMP_NEAR_imm

This is a full-width relative jump, when the 8-bit immediate variant
isn't large enough.
Andreas Kling 5 yıl önce
ebeveyn
işleme
bdf72a7c7a
1 değiştirilmiş dosya ile 5 ekleme ve 1 silme
  1. 5 1
      DevTools/UserspaceEmulator/SoftCPU.cpp

+ 5 - 1
DevTools/UserspaceEmulator/SoftCPU.cpp

@@ -882,7 +882,11 @@ void SoftCPU::JMP_short_imm8(const X86::Instruction& insn)
     set_eip(eip() + (i8)insn.imm8());
 }
 
-void SoftCPU::Jcc_NEAR_imm(const X86::Instruction&) { TODO(); }
+void SoftCPU::Jcc_NEAR_imm(const X86::Instruction& insn)
+{
+    if (evaluate_condition(insn.cc()))
+        set_eip(eip() + (i32)insn.imm32());
+}
 
 void SoftCPU::Jcc_imm8(const X86::Instruction& insn)
 {