2019-10-16 05:44发布
pathfinder 发表于 2016-8-21 18:51 我也遇到类似的问题,你把问题解决了吗,我的qq1264511336,可以一起学习讨论
86806 发表于 2016-8-27 09:03 居然有人挖坟,顺便回答下,混编非常方便,举个栗子 1、C 调用汇编函数
最多设置5个标签!
居然有人挖坟,顺便回答下,混编非常方便,举个栗子
1、C 调用汇编函数
假如汇编文件“aaa.s”是这样的,注意 EXPORT AAA是必须的,这样C编译器才能找到
[mw_shl_code=asm,true]
EXPORT AAA
AAA ...
bx lr[/mw_shl_code]
然后C语言是这样调用的
[mw_shl_code=asm,true]
extern int AAA(int a);
main()
{
int b;
b=AAA(1);
}
[/mw_shl_code]
2、汇编 调用C函数
假如汇编文件“aaa.s”是这样的,注意 IMPORT AAA是必须的,这样让汇编知道AAA这个函数不在本文件内部
[mw_shl_code=asm,true]
IMPORT AAA
ldr r0,=AAA
blx r0
[/mw_shl_code]
C函数无需做特殊处理
**************
整体而言,混编时要注意内存分配,C语言中的变量地址是由编译器分配的,有一定的不可控性,建议位汇编和C单独划分内存块
另外要注意参数传递,正常是r0 - r3,这个相关资料有详细解释
建议位汇编和C单独划分内存块??汇编中确实很好把控内存分配问题,但是C中如何分配?
一般C中是编译器自动分配,但是如何划分内存呢?我是第一次尝试混编,请多指教!!谢谢
一周热门 更多>