将64位寄存器的前32位置零

时间:2014-01-29 18:16:04

标签: assembly x86-64 machine-language

使用amd64汇编,最好的办法是将64位寄存器的前32位清零,例如将未被eax覆盖的rax位置清零?似乎我不能和整个寄存器对64位常数。

1 个答案:

答案 0 :(得分:10)

movl %eax, %eaxmov eax, eax,具体取决于使用的汇编程序。

请参阅:英特尔®64和IA-32架构 - 软件开发人员手册,Volume 1,3.4.1.1:64位模式下的通用寄存器。

32位操作数生成32位结果,零扩展到目标通用的64位结果 注册

关于@ HansPassant的评论,我还应补充一点:7.3.1.7:

MOVSXD指令对64位数据进行操作。它将32位值符号扩展为64位。