我有一个代码,其中有:
EAX=00002c36
及之后:
SBB eax, 0
eax 转动:
EAX=00002c35
这可能吗?
eax 不应该是相同的值吗?
如果是正确的,看来我不太明白sbb的指令。 感谢广告
根据 https://www.felixcloutier.com/x86/sbb ,x86 SBB 指令相当于:
DEST := (DEST – (SRC + CF));
其中 DEST 是左操作数,SRC 是右操作数,CF 是进位标志。
如果进位标志为 1,则结果是预期的。根据 https://medium.com/@ismielabir/understanding-the-flag-register-in-x86-assemble-language-dc858ef1c38c :
“进位标志(CF):如果加法时从最高有效位(MSB)有进位,或者减法时最高有效位(MSB)有借位,则 CF 将为 1。否则,CF 将为 0。”
您没有给出任何上下文,因此我们无法判断哪条指令设置了进位标志。 但这里并没有什么意外的。