You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is an error in lifting the x86 instruction "sbb" to IRs while calculating the AF flag.
Since %32 and 15 perform unsigned greater than calculations, %33 will only become true when %32 is greater than 15 or less than 0. Therefore, Retdec will only set AF to 1 when the least significant 4 bits of eax is 0xf. However, in a real CPU, if CF is 1 after this instruction is executed, AF will be set to 1. Otherwise, AF will be 0.
The original instruction is sbb %eax, %eax
The following is how IRs of "sbb" calculate the AF flag, where an error exists.
Besides, In the case of sar, sal, shr, and shl instructions, Retdec overlooks the effect on the AF flag. Conversely, the physical CPU does take this flag into account.
There is an error in lifting the x86 instruction "sbb" to IRs while calculating the AF flag.
Since %32 and 15 perform unsigned greater than calculations, %33 will only become true when %32 is greater than 15 or less than 0. Therefore, Retdec will only set AF to 1 when the least significant 4 bits of eax is 0xf. However, in a real CPU, if CF is 1 after this instruction is executed, AF will be set to 1. Otherwise, AF will be 0.
The original instruction is
sbb %eax, %eax
The following is how IRs of "sbb" calculate the AF flag, where an error exists.
The following are the completed IRs of "sbb".
The text was updated successfully, but these errors were encountered: