账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    linux汇编callq命令参数含义
    • 2019-05-11 00:00
    • 10
    44
    0

    请问反汇编代码中callq 23<main+0x13>的含义:
    第一个参数我只知道是push 23,保存返回地址,第二个<main+0x19>应该是fun函数地址,但是fun函数应该是在main的前面啊,怎么地址反而比main的地址还高?

    C代码:

    #include <stdio.h>
    
    void fun(int a)
    {
    }
     
    int main()
    {
        int a = 1234;
        fun(a);
    }

    objdump -D main.o main.asm
    反汇编代码main.asm如下

    0000000000000000 <fun>:
       0:   55                      push   %rbp
       1:   48 89 e5                mov    %rsp,%rbp
       4:   89 7d fc                mov    %edi,-0x4(%rbp)
       7:   90                      nop
       8:   5d                      pop    %rbp
       9:   c3                      retq   
    
    000000000000000a <main>:
       a:   55                      push   %rbp
       b:   48 89 e5                mov    %rsp,%rbp
       e:   48 83 ec 10             sub    $0x10,%rsp
      12:   c7 45 fc 03 00 00 00    movl   $0x3,-0x4(%rbp)
      19:   8b 45 fc                mov    -0x4(%rbp),%eax
      1c:   89 c7                   mov    %eax,%edi
      1e:   e8 00 00 00 00          callq  23 <main+0x19>
      23:   b8 00 00 00 00          mov    $0x0,%eax
      28:   c9                      leaveq 
      29:   c3                      retq   
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部