-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Description
G:\>debug
-a
088A:0100 cmp [100], 12
088A:0105
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=088A ES=088A SS=088A CS=088A IP=0100 NV UP EI PL NZ NA PO NC
088A:0100 833E000112 CMP WORD PTR [0100],+12 DS:0100=3E83
-
MSDebug does not accept this instruction.
This is caused by OP_IMMS8 clearing the VAR_SIZ_NEED flag unconditionally:
Lines 2017 to 2020 in ef6ef10
| ;--- OP_IMMS8 - Sign-extended immediate byte (PUSH xx) | |
| ao41: | |
| and [ai.varflags],not VAR_SIZ_NEED ;added for v1.09. Ok? |
This makes it so that the word size of the memory operand is assumed as there is a form with r/m16 and OP_IMMS8 immediate operand. The flag should actually only be cleared for push imm8 albeit it doesn't cause any problems to clear it for imul with an imm8 operand either.
lDebug introduced the OP_IMMS8_EXTEND for this purpose, it simply doesn't clear this flag: https://hg.pushbx.org/ecm/ldebug/rev/c40bd4d0c8e2 It was introduced in 2021 specifically to fix this bug: https://hg.pushbx.org/ecm/ldebug/rev/e720cb74a547
Metadata
Metadata
Assignees
Labels
No labels