【发布时间】:2014-04-22 15:32:52
【问题描述】:
指令集参考说,对于 imul 指令,ZF 是未定义的。那么如果我将寄存器中的一个值乘以一个立即数 0x0,ZF 会发生什么?
【问题讨论】:
指令集参考说,对于 imul 指令,ZF 是未定义的。那么如果我将寄存器中的一个值乘以一个立即数 0x0,ZF 会发生什么?
【问题讨论】:
未定义意味着结果可以是任何值,任何值都不重要。
【讨论】:
setz al 会产生 0 或 1。你只是不知道是哪个。 jz 要么去目标,要么跌倒,而不是跳到其他地方。 (是的,至少在某些 CPU 上,例如 Skylake,即使结果的两半都为零,它实际上也会设置 ZF=0。如果它不为零,则相同)