python_love_me 发表于 2019-12-13 11:01:40

我想阅读gCC和G++编译器生成的C语言和C++语言汇编代码

我想阅读gcc和g++编译器生成的C语言和C++语言汇编代码,请问谁有什么好资料(网站、书籍、论坛均可),给我推荐一下。

//下面是C语言的代码:
#include <stdio.h>

int add(int a, int b)
{
        int c;
        c = a + b;
        return c;
}

int main()
{
       
        int a = 2, b=3, c;
        c = add(a, b);
        return 0;
}


//下面是gcc生成的汇编代码:
        .file        "cas.c"
        .text
        .globl        add
        .type        add, @function
add:
.LFB0:
        .cfi_startproc
        pushq        %rbp
        .cfi_def_cfa_offset 16
        .cfi_offset 6, -16
        movq        %rsp, %rbp
        .cfi_def_cfa_register 6
        movl        %edi, -20(%rbp)
        movl        %esi, -24(%rbp)
        movl        -20(%rbp), %edx
        movl        -24(%rbp), %eax
        addl        %edx, %eax
        movl        %eax, -4(%rbp)
        movl        -4(%rbp), %eax
        popq        %rbp
        .cfi_def_cfa 7, 8
        ret
        .cfi_endproc
.LFE0:
        .size        add, .-add
        .globl        main
        .type        main, @function
main:
.LFB1:
        .cfi_startproc
        pushq        %rbp
        .cfi_def_cfa_offset 16
        .cfi_offset 6, -16
        movq        %rsp, %rbp
        .cfi_def_cfa_register 6
        subq        $16, %rsp
        movl        $2, -12(%rbp)
        movl        $3, -8(%rbp)
        movl        -8(%rbp), %edx
        movl        -12(%rbp), %eax
        movl        %edx, %esi
        movl        %eax, %edi
        call        add
        movl        %eax, -4(%rbp)
        movl        $0, %eax
        leave
        .cfi_def_cfa 7, 8
        ret
        .cfi_endproc
.LFE1:
        .size        main, .-main
        .ident        "GCC: (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0"
        .section        .note.GNU-stack,"",@progbits

人造人 发表于 2019-12-13 19:17:41

你那里看不懂?
页: [1]
查看完整版本: 我想阅读gCC和G++编译器生成的C语言和C++语言汇编代码