请教关于混合编程

[复制链接]
2508|8
 楼主| zmbnj 发表于 2007-9-27 13:56 | 显示全部楼层 |阅读模式
我用c编了一个框架,其中有一个函数我想用汇编实现,在SRC文件中修改,然后修改成.A51文件,再编译。问题是:我在编写汇编代码时可以用随便的RAM区域吗?还是要将使用的RAM先压栈?
古道热肠 发表于 2007-9-27 16:27 | 显示全部楼层

不能随便用

    需要多少变量,先在C函数框架中作出定义,再变成A51文件,用到的寄存器如A,B,R0-R7,最好先入栈保护,退出时做好恢复现场工作。
ayb_ice 发表于 2007-9-27 16:33 | 显示全部楼层

随便说说

直接从SRC文件中复制想要的东东...
 楼主| zmbnj 发表于 2007-9-27 17:15 | 显示全部楼层

复制什么?

我要写东西进去。
那样就麻烦了,还不能太复杂,不然内部变量多了就晕了……
xwj 发表于 2007-9-27 17:23 | 显示全部楼层

用C写个空函数,编译成SRC,然后就可以在里面任发挥了

yexinkfrqw 发表于 2007-9-27 18:39 | 显示全部楼层

我有个办法

大家的方法都很好,不过也可以用
#pragma asm



#pragma endasm
中间就可以加你自己想要写的汇编了.
 楼主| zmbnj 发表于 2007-9-27 19:16 | 显示全部楼层

楼上2位

你们所说的,是不是可以在里面任意使用RAM?而不用入栈什么的保护?
万一有ram空间在其他.c里使用了怎么吧?重新编译自动调整?
ayb_ice 发表于 2007-9-27 20:43 | 显示全部楼层

我是说你先用C写完整的函数,再产生SRC,再复制...

xwj 发表于 2007-9-27 21:09 | 显示全部楼层

怎么这么笨呢?

你要用到的局部变量应该再C函数里定义好啊,然后不优化编译,它就给你自动分配好段了,你用它分配好的,编译、链接时就能自动进行覆盖了


初学时这样做可以确保万无一失,等你熟悉它的定义、分配方式了,也可以自己按它的规则定义、分配

其实所有的这些Keil的帮助里都有详细说明的,而且晚上还有翻译好的,你自己去仔细看看吧


别人的热心时有限的,要用在刀刃上
再这样什么都不想、不做的瞎问,将没人愿意理你哦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

143

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部