objdump输出中的data16是什么意思?

9
使用objdump命令:
$ objdump -M att -d  wrapping_counters_test   

我制作了以下这个列表(这只是整个列表的一部分):
100000ae5:   31 ed                   xor    %ebp,%ebp
100000ae7:   31 d2                   xor    %edx,%edx
100000ae9:   49 89 c4                mov    %rax,%r12
100000aec:   b8 00 ca 9a 3b          mov    $0x3b9aca00,%eax
100000af1:   66 66 66 66 66 66 2e    data16 data16 data16 data16 data16 nopw %cs:0x0(%rax,%rax,1)
100000af8:   0f 1f 84 00 00 00 00
100000aff:   00
100000b00:   8d 75 01                lea    0x1(%rbp),%esi

第二个mov指令后面的data16行是什么意思?
1个回答

11

这只是一个用于对齐填充的多字节 nop。请注意,最后一行位于地址100000b00,它是16字节对齐的。data16本身是一个操作数大小覆盖前缀。通常只使用一个,不会单独反汇编,而是包含在指令后缀中。您可以看到有六个66实例,但只有五个data16出现,第六个是nopw中的w,通常只能获得这个。仅显示插入以延长指令长度的额外前缀。


我们需要为StackOverflow上的所有新“小丑”分配编号:Jester001,Jester002,...(http://stackoverflow.com/users/4349838/jester)。 - Jose Manuel Abarca Rodríguez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接