这个指令到底是做什么的?
movzbl 0x01(%eax,%ecx), %eax
发布于 2012-02-16 19:44:52
发布于 2015-06-29 11:56:32
极小示例
mov $0x01234567, %eax
mov $1, %bl
movzbl %bl, %eax
/* %eax == 0000 0001 */
mov $0x01234567, %eax
mov $-1, %bl
movzbl %bl, %eax
/* %eax == 0000 00FF */
助记符是:
也有其他尺寸的版本:
movzbw
:字节(8位)到字(16位)movzwl
:字(16位)到长(32位)与大多数GAS指令一样,您可以在处理寄存器时省略最后一个大小字符:
movzb %bl, %eax
但我不明白为什么我们不能省略前一封信,例如:
movz %bl, %eax
当操作数是寄存器时,为什么不从操作数的大小来推断它,比如mov
和Intel语法?
如果使用错误大小的寄存器,则无法编译,例如:
movzb %ax, %eax
https://stackoverflow.com/questions/9317922
复制相似问题