以下代码中该行的作用是什么?
0x0804840c <+3>: mov 0x8(%ebp),%edx
我知道mov%x,%y将reg值%x移动到%y,但是堆栈偏移8从未被设置为任何东西,所以我不确定将什么移动到%edx。我对组装很新,我完全迷失了。
(IA32 Assembly)
0x08048409 <+0>: push %ebp
0x0804840a <+1>: mov %esp,%ebp
0x0804840c <+3>: mov 0x8(%ebp),%edx
0x0804840f <+6>: mov %edx,%eax
0x08048411 <+8>: shl $0x4,%eax
0x08048414 <+11>: sub %edx,%eax
0x08048416 <+13>: pop %ebp
0x08048417 <+14>: ret
答案 0 :(得分:3)
这是32-bit x86 ELF ABI,看起来像,所以8(%ebp)
处的堆栈槽将参数1保存到此函数,由调用者放在那里。
整体功能计算(x << 4) - x
。