使用amd64汇编,将64位寄存器的前32位清零的最佳方法是什么?将eax未涵盖的rax位清零?看来我不能和整个寄存器反对一个64位常量。
最佳答案
movl %eax, %eax
或mov eax, eax
,取决于使用的汇编程序。
请参阅:英特尔®64和IA-32架构-软件开发人员手册,Volume 1,3.4.1.1:64位模式下的通用寄存器。
32位操作数生成32位结果,在目标通用系统中将其零扩展为64位结果
登记。
关于@HansPassant的评论,我还应该添加:7.3.1.7:
MOVSXD指令对64位数据进行操作。它将32位值符号扩展为64位。
关于assembly - 将64位寄存器的高32位清零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21439289/