问题描述
我试图弄清楚这在C语言中的含义:
movq 16(%rdi),%rdx
movq 16(%rsi),%rax
movzbl (%rdx),%edx
我对movzbl(%rdx),%edx会做什么感到困惑。谢谢!
解决方法
这是AT&T syntax指令的movzx
。它从%rdx
中包含的地址中取出一个字节,将其零扩展为32位,然后将结果存储在%edx
中。
与每条写入32位寄存器的x86-64指令一样,the high half of the corresponding 64-bit register %rdx
is also zeroed.因此,您可能还认为这条指令将8位值零扩展为64位。