为什么在反汇编代码中有一些“无意义的”内存插槽?

我使用objdump来反汇编32位Linux上的一些ELF文件。

asm文件是英特尔格式。

在反汇编文件中,我注意到像下面的一些内存插槽:

80483ed: c7 44 24 18 07 00 00 mov DWORD PTR [esp+0x18],0x7 80483f4: 00 80483f5: c7 44 24 1c 0c 00 00 mov DWORD PTR [esp+0x1c],0xc 80483fc: 00 80483fd: c7 44 24 20 01 00 00 mov DWORD PTR [esp+0x20],0x1 8048404: 00 8048405: c7 44 24 24 fe ff ff mov DWORD PTR [esp+0x24],0xfffffffe 804840c: ff 

而原始的汇编文件是:

 mov DWORD PTR [esp+24], 7 mov DWORD PTR [esp+28], 12 mov DWORD PTR [esp+32], 1 mov DWORD PTR [esp+36], -2 

有谁能告诉我什么内存地址像“80483f4”,“80483fc”吗?

这个问题与内存alignment有关吗?

谢谢!

这些是前一行操作数的一部分。 “直接”(常数)数字编码为32位。 所以0x07占用4个字节: 07 00 00 00 。 不管你用什么来禁用,都会显示出不同行上的最后一个字节。