소스 검색

UserspaceEmulator: Add the POPFD instruction

I'm not sure the mask I'm using here is completely correct, but it's
not terribly important since we're a userspace-only emulator anyway.
Andreas Kling 5 년 전
부모
커밋
a83fe7f82d
1개의 변경된 파일7개의 추가작업 그리고 1개의 파일을 삭제
  1. 7 1
      DevTools/UserspaceEmulator/SoftCPU.cpp

+ 7 - 1
DevTools/UserspaceEmulator/SoftCPU.cpp

@@ -1306,7 +1306,13 @@ void SoftCPU::PADDD_mm1_mm2m64(const X86::Instruction&) { TODO(); }
 void SoftCPU::POPA(const X86::Instruction&) { TODO(); }
 void SoftCPU::POPAD(const X86::Instruction&) { TODO(); }
 void SoftCPU::POPF(const X86::Instruction&) { TODO(); }
-void SoftCPU::POPFD(const X86::Instruction&) { TODO(); }
+
+void SoftCPU::POPFD(const X86::Instruction&)
+{
+    m_eflags &= ~0x00fcffff;
+    m_eflags |= pop32() & 0x00fcffff;
+}
+
 void SoftCPU::POP_DS(const X86::Instruction&) { TODO(); }
 void SoftCPU::POP_ES(const X86::Instruction&) { TODO(); }
 void SoftCPU::POP_FS(const X86::Instruction&) { TODO(); }