今天研究出了一个小问题,在C语言里引用汇编的变量,会是什么结果,汇编中的变量没有像C语言中int类型那样的类型约束,可以把数据当作任何类型处理,那么传到C语言中我们应该当作什么类型处理呢。
换句话说,在汇编里定义变量var,在C语言里引用,我们肯定要用extern声明var外部变量,那么extern后面接什么类型?难道是extern int var么?还是 extern short var
实例:
注意:混合编译的方法,gcc test.s main.c 这样直接用gcc处理汇编和C语言文件就可以自动搞定。
一、
汇编程序:(是的,就这么短小)
.global var #注意现在的汇编器不再要求被C语言引用的变量名前加下划线
.data
var:
.fill 10,4,9 #填充10个单元,每个单元4字节,每个单元的值为9
C语言:
#include <stdio.h>
extern int var; //现在的C语言编译器引用汇编变量可以使用和汇编变量同样的名字,写成_var反而会错误
void main()
{
printf("sizeof(var)=%d\n",sizeof(var));
printf("%d\n", var);
}
程序的输出为
sizeof(int)=4 9
解释很简单,