【问题标题】:x86 assembly language with ebx and bh带有 ebx 和 bh 的 x86 汇编语言
【发布时间】:2014-06-23 08:18:16
【问题描述】:
xor ebx,ebx
mov bh ,0x04 ;how to change that "bh" to "ebx" ,and keep  codes  same meaning?

为什么人们总是使用xor 而不是mov XXX,0

【问题讨论】:

    标签: assembly x86 cpu-registers


    【解决方案1】:

    xor ebx,ebx mov bh ,0x04;如何将“bh”改为“ebx”,并保持代码相同的含义?

    假设我理解正确,你想要的是这样的:

    mov ebx, 0x0400
    

    (bhbx的高8位,它本身就是ebx的低16位。所以你需要的值是原始值左移8位,我们通过添加两个十六进制得到0 位数)。

    为什么人们总是使用 xor 而不是 mov XXX,0 ?

    简单地说:因为它更短、更快。见What is the purpose of XORing a register with itself?Does using xor reg, reg give advantage over mov reg, 0?

    【讨论】:

      【解决方案2】:

      由于bhebx 的倒数第二个字节,你可以直接使用mov ebx, 0x0400

      xor 被使用是因为它的操作码更短,并且处理器有特殊的支持将其识别为将寄存器归零。请参阅优化手册,3.5.1.8 Clearing Registers and Dependency Breaking Idioms 部分

      【讨论】:

        猜你喜欢
        • 2015-04-05
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多