我找不到原因,为什么有时我的汇编代码在运行objdump时会缺失某些单词。一个单独的“...”代表什么?
在objdump的-d或-D(反汇编)输出中,通常会出现多个仅包含省略号的行。这是因为上下字节之间的所有字节都是null(0x00)。
以下是一个反汇编32位程序的输出。在偏移量00234(+4)和00240之间,在可执行文件中全部是0x00。
40022c: 00000034 0x34
400230: 0000016a 0x16a
400234: 000001ac 0x1ac
...
400240: 00000098 0x98
400244: 00000000 nop
400248: 000000a9 0xa9
...
400254: 000000cf 0xcf
观察我们反汇编的应用程序,您会发现省略号出现的位置全部为 null 字节。没有必要多次向用户输出这些内容,因此 objdump 简单地将它们删除。加粗的文本是省略号所在的位置。需要注意的是,如果只有一个部分(32/64位)是 null 字节,objdump 会显示为 nop 或类似机器相关的输出。
偏移量(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000220 34 00 00 00 4... 00000230 6A 01 00 00 AC 01 00 00 00 00 00 00 00 00 00 00 j...¬........... 00000240 98 00 00 00 00 00 00 00 A9 00 00 00 00 00 00 00 ˜.......©....... 00000250 00 00 00 00 CF 00 00 00 ....Ï...
movs r0, r0
被编码为0x0000
。 - Alessandro Bertulli