gcc 内嵌汇编的学习笔记 IV
--函数调用
作者:ShellEx.
ShellEx.cn && blog.csdn.net/shellex 版权所有
没有经验,还是通过反汇编出来的代码来学习。先写一个简单的函数
调用的C++ code Sample:
#include <stdio.h>
int Add(int a, int b) {
return a + b;
}
int main() {
int in1 = 0,in2 = 0, out =0 ;
printf("PLZ input 2 Number:(x1, x2) /n");
scanf("%d, %d", &in1, &in2);
out = Add(in1, in2);
printf("out = %d",out);
return 0;
}
///
察看了得出的汇编代码,有几个发现:
i. 对于不同的编译方法(用纯C,C++)得出的函数名符号是不同的。这一
点大家早就知道了。因为这是很多C++编译器实现函数重载的基础。
对于g++,函数标示会变成形如"__Z3Addii"这样的东西。前缀不知道
是虾米东西,但是后缀是参数列表的参数类型名缩写。
ii. 编译器会在汇编代码文件里面加入新标示用于标示函数:
.globl _Add
.def _Add; .scl 2; .type 32; .endef
_Add:
pushl %ebp
movl %es