有关将程序​​集转换为c的问题-具体来说movzbl指令做什么?

问题描述

我试图弄清楚这在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位。