C语言和汇编怎样引用对方定义的变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言和汇编怎样引用对方定义的变量?相关的知识,希望对你有一定的参考价值。

我在此提问的不是参数传递的问题。在汇编中定义 Ref1 DCD 0x00000000 Ref2 DCD 0x00000000在C语言中怎样引用 Ref1、Ref2 ,或者怎样去修改 Ref1、Ref2 的内容。在C语言中定义 int Num1; int Num2;在汇编语言中怎样引用 Num1、Num2,或者怎样修改 Num1、Num2 的内容

C中要使用汇编里面函数的话 需要在汇编里面使用export xxx 导出函数标号 C中加extern xxx汇编要使用C里面的函数的话 需要在汇编里使用import xxx 导入外部标号 参考技术A 汇编加global定义,加“_”区别。比如C中的定义是Num1,汇编中就是_Num1,两者是等同的。对了,你没说你的处理器和开发环境是什么,所以定义也有可能如楼上所说。 参考技术B C语言的方法:
假定A模块有一个变量int g_nVarA需要给别的模块引用,其方法为:

1)在A.c源文件中定义变量:
int g_nVarA;

2)在A.h头文件中申明该变量:
extern int g_nVarA;

3)所有需要用到该变量的模块包含A的头文件:
#include "A.h"
这样,既可以引用g_nVarA变量,又可以避免重复定义。
参考技术C 用指针。
以32位系统为例:
unsigned short int *ptr=0x00000000;
然后就可以利用ptr管理地址为0,1的内存空间了。如:
*ptr=100;
就可以把该字的值设置为100
参考技术D 楼上的说法并不正确,要看Ref1是定义在哪个段,如果是在代码段,当然是常量,如果是在数据段,那当然可以修改,只不过相当于有个0的初值的unsinged
long变量而已。

以上是关于C语言和汇编怎样引用对方定义的变量?的主要内容,如果未能解决你的问题,请参考以下文章

怎么在汇编中引用c语言的全局变量

C语言中通过全局变量引用汇编语言中的全局标签

请问c语言中引用怎样理解?

在汇编语言中变量的名字代表啥?

c语言怎样声明和定义全局变量

怎样能将汇编语言转换成c语言