【问题标题】:Assembly, this line does what?组装,这条线是做什么的?
【发布时间】:2012-10-28 15:55:19
【问题描述】:

这行代码在下面的代码中做了什么?

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

【问题讨论】:

标签: assembly x86


【解决方案1】:

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

整体函数计算(x &lt;&lt; 4) - x

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2017-12-08
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    相关资源
    最近更新 更多