使用amd64汇编,最好的办法是将64位寄存器的前32位清零,例如将未被eax覆盖的rax位置清零?似乎我不能和整个寄存器对64位常数。
答案 0 :(得分:10)
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位。