当组装这段代码时nasm
:
BITS 64
mov eax, 0x1
mov rax, 0x1
我得到这个输出:
b8 01 00 00 00 b8 01 00 00 00
这是操作码mov eax, 0x1
重复两次。
这是否意味着mov rax, 0x1
can always被替换为mov eax, 0x1
或者只是在这种情况下?
如果这是正确的,那么使用不是更好:
xor rax, rax
inc rax
因为组装时变成 6 个字节mov eax, 0x1
只有5个字节?
总是。大多数(如果不是全部)32 位 MOV 和 ALU 操作都会清除目标寄存器操作数的第 32 位到第 63 位。详细信息请参见 CPU 手册。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)