我使用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
。 不管你用什么来禁用,都会显示出不同行上的最后一个字节。