data16在objdump输出中的含义是什么?

时间:2016-04-19 00:02:09

标签: assembly x86-64 objdump

使用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

第二条data16指令后mov行的含义是什么意思?

1 个答案:

答案 0 :(得分:6)

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