我使用objdump在32位Linux上反汇编一些ELF文件。
asm文件采用Intel格式。
在反汇编文件中,我注意到一些内存插槽如下:
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”吗?
此问题是否与内存对齐有关?
谢谢!
答案 0 :(得分:5)
这些是前一行操作数的一部分。 “立即”(常数)数字被编码为32位。所以0x07占用4个字节:07 00 00 00
。无论您使用什么禁用,都会向您显示不同行上的最后一个字节。