打印

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

[复制链接]
4110|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
arm2009wzm|  楼主 | 2013-7-25 09:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

我在此提问的不是参数传递的问题。

在汇编中定义
        Ref1    DCD   0x00000000
        Ref2    DCD   0x00000000
在C语言中怎样引用 Ref1、Ref2 ,或者怎样去修改 Ref1、Ref2 的内容。

在C语言中定义
       int  Num1;
       int  Num2;
在汇编语言中怎样引用 Num1、Num2,或者怎样修改 Num1、Num2 的内容

相关帖子

沙发
soso| | 2013-7-25 10:41 | 只看该作者
用指针。以32位系统为例:unsigned short int *ptr=0x00000000;然后就可以利用ptr管理地址为0,1的内存空间了。如:*ptr=100;就可以把该字的值设置为100

使用特权

评论回复
板凳
gaogao303| | 2013-7-25 10:52 | 只看该作者
C中要使用汇编里面函数的话 需要在汇编里面使用export xxx 导出函数标号 C中加extern xxx
汇编要使用C里面的函数的话 需要在汇编里使用import xxx 导入外部标号

使用特权

评论回复
地板
jlass| | 2013-7-26 08:46 | 只看该作者
本帖最后由 jlass 于 2013-7-29 09:35 编辑

汇编加global定义,加“_”区别。
比如C中的定义是Num1,汇编中就是_Num1,两者是等同的。

对了,你没说你的处理器和开发环境是什么,所以定义也有可能如楼上所说。

使用特权

评论回复
5
airwill| | 2013-7-26 16:22 | 只看该作者
不同的开发环境, 有不同的定义.
如果是 Keil MDK.
可以参考一下启动文件. startup_xx.s
最好还是翻一下编译器参考手册

使用特权

评论回复
6
棋哥| | 2013-7-29 12:51 | 只看该作者
Ref1    DCD   0x00000000 类似C中define,是没有办法修改Ref1、Ref2的值!

使用特权

评论回复
7
人生之际| | 2013-8-5 20:24 | 只看该作者
楼上的说法并不正确,要看Ref1是定义在哪个段,如果是在代码段,当然是常量,如果是在数据段,那当然可以修改,只不过相当于有个0的初值的unsinged long变量而已。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

29

帖子

0

粉丝