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

lll*_*lll 2 linux assembly memory-management memory-alignment disassembly

我使用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
Run Code Online (Sandbox Code Playgroud)

原始的汇编文件是:

mov     DWORD PTR [esp+24], 7
mov     DWORD PTR [esp+28], 12
mov     DWORD PTR [esp+32], 1
mov     DWORD PTR [esp+36], -2
Run Code Online (Sandbox Code Playgroud)

有谁能告诉我内存地址如"80483f4","80483fc"怎么办?

这个问题与内存对齐有关吗?

谢谢!

Soa*_*Box 5

这些是前一行操作数的一部分."立即"(常数)数字被编码为32位.因此0x07占用4个字节:07 00 00 00.无论您使用什么禁用,都会向您显示不同行上的最后一个字节.