0
点赞
收藏
分享

微信扫一扫

反汇编 之C 函数直接调用

WikongGuan 2022-03-23 阅读 51
c语言

#include <stdio.h>

/*
 * 直接函数调用
 */

void func() ;

int main()
{
    int a;

    func();

    a = 0x66;
    func();

    printf("a = 0x%x\n", a);    // 0x66
    return 0;
}

void func()
{
    int a;

    a++;
    printf("a = 0x%x\n", a);    // 0x66
}

#if 0
0000000000001129 <main>:
    1129:    f3 0f 1e fa              endbr64
    112d:    55                       push   %rbp
    112e:    48 89 e5                 mov    %rsp,%rbp
    1131:    48 83 ec 10              sub    $0x10,%rsp
    1135:    b8 00 00 00 00           mov    $0x0,%eax        // eax = 0
    113a:    e8 18 00 00 00           callq  1157 <func>
    113f:    c7 45 fc 66 00 00 00     movl   $0x66,-0x4(%rbp)    // a = rbp-0x4 = 0x66
    1146:    b8 00 00 00 00           mov    $0x0,%eax        // eax = 0
    114b:    e8 07 00 00 00           callq  1157 <func>
    1150:    b8 00 00 00 00           mov    $0x0,%eax        // eax = 0
    1155:    c9                       leaveq
    1156:    c3                       retq   

0000000000001157 <func>:
    1157:    f3 0f 1e fa              endbr64
    115b:    55                       push   %rbp
    115c:    48 89 e5                 mov    %rsp,%rbp
    115f:    83 45 fc 01              addl   $0x1,-0x4(%rbp)    // rpb-0x4 + 0x1
    1163:    90                       nop
    1164:    5d                       pop    %rbp
    1165:    c3                       retq   
    1166:    66 2e 0f 1f 84 00 00     nopw   %cs:0x0(%rax,%rax,1)    // 用于填补func之间的空白功能和main保持位元组对齐的功能
    116d:    00 00 00

#endif

举报

相关推荐

0 条评论