是否可以始终使用“mov eax, 0x1”代替“mov rax, 0x1”?

2024-01-23

当组装这段代码时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(使用前将#替换为@)

是否可以始终使用“mov eax, 0x1”代替“mov rax, 0x1”? 的相关文章

随机推荐