From de700cb43660699369e367b758af99bfc1d65583 Mon Sep 17 00:00:00 2001 From: As9xm <197338912+As9xm@users.noreply.github.com> Date: Thu, 10 Sep 2026 04:07:07 +0300 Subject: [PATCH] Fix 16-bit disp16 precedence bug in getecommon16o In C, == binds tighter than &, so 'm&7==6' parsed as 'm&(7==6)' = 'm&0' = always false. Disp16 was never fetched for mod==00,rm==110 16-bit addressing (GET_EW16_OFFS), leaving a wrong effective address and unadvanced EIP. Parenthesize as '(m&7)==6' to match getecommon16. --- src/emu/modrm.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emu/modrm.h b/src/emu/modrm.h index d0892a8a4..e021464ba 100755 --- a/src/emu/modrm.h +++ b/src/emu/modrm.h @@ -108,7 +108,7 @@ case 7: base = R_BX; break; \ } \ switch((m>>6)&3) { \ - case 0: if(m&7==6) base = F16S; break; \ + case 0: if((m&7)==6) base = F16S; break; \ case 1: base += F8S; break; \ case 2: base += F16S; break; \ } \