物联网中C语言与汇编语言,ARM Cortex-M架构CPU中C语言和汇编语言的混合编程

本文介绍了C和汇编语言的混合编程技巧,包括汇编代码如何调用C函数,C代码如何调用汇编函数,以及如何在C代码中直接插入汇编语句。通过具体实例解析了函数调用的过程,并展示了在C语言中使用__asm关键字进行内联汇编的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里主要从3个方面讲一下C和汇编的混合编程,包括相互之间的函数调用

1 汇编代码中调用C函数

在汇编中调用C的函数,需要在汇编中IMPORT 对应的C函数名,然后将C的代码放在一个C文件中进行编译

我们以下面的SystemInit 系统初始化函数为例,下图是系统初始化的C语言代码

8c95f733f9520423b7ab2ef0d4c93c54.png

首先通过import把SystemInit导入进来SystemInit在这里代表的是函数的入口地址,然后 LDR R0, =SystemInit,将函数地址写到R0里面

aae0639bdfc39c4dc6283b7ba628a263.png

83cc21fb10a404984a2692bd459237fe.png

再通过BLX R0跳转到R0里面执行

IMPORT __main

IMPORT SystemInit ;系统初始化函数

LDR R0, =SystemInit

BLX R0

LDR R0, =__main

BX R0

ENDP

2 C代码中调用汇编函数

上面我们演示了如何在汇编中调用C,用了IMPORT导入函数给汇编调用,那么反过来C代码中调用汇编函数,我们就要用到EXPORT导出函数给C语言

EXPORTADD_OPT

ADD_OPT FUNCTION

ADD R0, R0,#1

BX LR

ENDFUNC

然后在C语言中用extern声明函数,就可以调用

extern int ADD_OPT();

int main(void)

{

int i=0;

i=i+1;

ADD_OPT();

}

3 C代码中直接加入汇编语句

需要用到两个下划线:“__+asm{}”用法如下:

嵌入的汇编语句

__asm

{

ADDS R0,R1

BX LR

}

内联的汇编语句

__asm

{

ADDS i,#1

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值