大会,这条线做了什么?

时间:2012-10-28 15:55:19

标签: assembly x86 ia-32

以下代码中该行的作用是什么?

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

1 个答案:

答案 0 :(得分:3)

这是32-bit x86 ELF ABI,看起来像,所以8(%ebp)处的堆栈槽将参数1保存到此函数,由调用者放在那里。

整体功能计算(x << 4) - x