Both recompilers: Temporarily disable recompilation of exactly four memory versions in 32-bit address move of opcode C6h (8-bit MOV immediate) because they currently break NT 3.x NTVDM, fixes #5038.

This commit is contained in:
OBattler
2025-04-01 06:36:16 +02:00
parent a00f4e2e7f
commit 04247b3c25
2 changed files with 14 additions and 2 deletions

View File

@@ -152,7 +152,13 @@ ropMOV_b_imm(UNUSED(uint8_t opcode), uint32_t fetchdat, uint32_t op_32, uint32_t
{
if ((fetchdat & 0xc0) == 0xc0) {
STORE_IMM_REG_B(fetchdat & 7, (fetchdat >> 8) & 0xff);
} else {
}
/* TODO: Fix the recompilation of that specific case so it no longer breaks NT 3.x NTVDM. */
#ifndef RECOMPILE_MOVB_IMM_MEM_ALWAYS
else if (((fetchdat & 0xfc) == 0x80) && (op_32 & 0x200))
return 0;
#endif
else {
x86seg *target_seg = FETCH_EA(op_ea_seg, fetchdat, op_ssegs, &op_pc, op_32);
uint32_t imm = fastreadb(cs + op_pc + 1);
int host_reg = LOAD_REG_IMM(imm);