I have a simple 32-bit assembly code that I wrote:
movl $0x542412e6, %eax
movl %ebp , %edx
addl $0x30, %edx
movl %edx, %ebp
pushl 0x08048dd6
ret
When I run this command:
gcc -m32 -c e.s
I get the following 18 bytes:
0: b8 e6 12 24 54 mov $0x542412e6,%eax
5: 89 ea mov %ebp,%edx
7: 83 c2 30 add $0x30,%edx
a: 89 d5 mov %edx,%ebp
c: 68 d6 8d 04 08 push $0x8048dd6
11: c3 ret
Why is the object code 18 bytes and not 20 or 16? Shouldn't it always be in 4-byte words for a 32-bit machine?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…