瀏覽代碼

UserspaceEmulator: Implement the 32-bit BSWAP instruction :^)

Andreas Kling 5 年之前
父節點
當前提交
029fe56d69
共有 1 個文件被更改,包括 6 次插入1 次删除
  1. 6 1
      DevTools/UserspaceEmulator/SoftCPU.cpp

+ 6 - 1
DevTools/UserspaceEmulator/SoftCPU.cpp

@@ -726,7 +726,12 @@ void SoftCPU::BSF_reg16_RM16(const X86::Instruction&) { TODO(); }
 void SoftCPU::BSF_reg32_RM32(const X86::Instruction&) { TODO(); }
 void SoftCPU::BSR_reg16_RM16(const X86::Instruction&) { TODO(); }
 void SoftCPU::BSR_reg32_RM32(const X86::Instruction&) { TODO(); }
-void SoftCPU::BSWAP_reg32(const X86::Instruction&) { TODO(); }
+
+void SoftCPU::BSWAP_reg32(const X86::Instruction& insn)
+{
+    gpr32(insn.reg32()) = __builtin_bswap32(gpr32(insn.reg32()));
+}
+
 void SoftCPU::BTC_RM16_imm8(const X86::Instruction&) { TODO(); }
 void SoftCPU::BTC_RM16_reg16(const X86::Instruction&) { TODO(); }
 void SoftCPU::BTC_RM32_imm8(const X86::Instruction&) { TODO(); }