|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我想阅读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
复制代码 |
|