【问题标题】:What is the ZF behavior for the imul instruction? [duplicate]imul 指令的 ZF 行为是什么? [复制]
【发布时间】:2014-04-22 15:32:52
【问题描述】:

指令集参考说,对于 imul 指令,ZF 是未定义的。那么如果我将寄存器中的一个值乘以一个立即数 0x0,ZF 会发生什么?

【问题讨论】:

    标签: assembly x86 eflags


    【解决方案1】:

    未定义意味着结果可以是任何值,任何值都不重要。

    【讨论】:

    • 那么如果imul操作的结果为零,ZF可能是0?
    • @mkg190 它可以是 0、666 或 0xDEADBEEF。
    • @Andrey:ZF 只是一个位,它总是零或 1。这是汇编语言,而不是 C 未定义的行为。 setz al 会产生 0 或 1。你只是不知道是哪个。 jz 要么去目标,要么跌倒,而不是跳到其他地方。 (是的,至少在某些 CPU 上,例如 Skylake,即使结果的两半都为零,它实际上也会设置 ZF=0。如果它不为零,则相同)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 2012-04-23
    • 1970-01-01
    • 2015-12-22
    • 2021-11-13
    • 2017-03-29
    相关资源
    最近更新 更多