' mov%reg8,(%reg32)'是什么意思? (不是movb)?

时间:2015-09-14 19:01:10

标签: assembly x86 att opcode

测试平台为x86-32bit

我知道在movsbl上,我们有两个操作码movzbl%eax = 0x12345678 %edx = 0xAAAABBBB MOVB %dh, %al %eax = 0x123456BB MOVSBL %dh, %eax %eax = 0xFFFFFFBB MOVZBL %dh, %eax %eax = 0x000000BB ,它们具有以下语义:

mov %dl, 0x2c(%esp)

以上示例来自here

然后我对以下指令的语义感到困惑:

mov

上述movsbl的确切含义是什么,是否等于movzbl?或等于{{1}}?或者都不是?

1 个答案:

答案 0 :(得分:1)

如果没有明确提供操作数大小,大多数汇编程序将根据操作数大小计算操作类型。因此,在这种情况下,movb %dl, 0x2c(%esp)相当于b,一个简单的1字节移动,从单字节寄存器dl中推导出access_token后缀。

32位寄存器的原因:它存储存储单元的地址;操作数大小结果不匹配(因为内存位置可以解释为任何大小)。