一、c中使用asm执行汇编
使用 _asm关键字。
格式:
对于clobbered_register_list, 有两个:
二、c中调用汇编代码函数
使用.globl 和.type来执行该汇编代码函数
在c中,使用extern进行申明。
编译,指定c代码和汇编代码
三、汇编中调用c中函数
在汇编代码中,使用extern 定义要调用的函数。
然后在需要的地方,使用跳转指令跳转即可。
c中有该函数的实现
分别将c代码和汇编代码,编译成.o文件,然后使用armlink链接成一个可执行程序。
要注意,汇编要调用c,需要初始化栈,并且调用还要遵循汇编调用c的规范。
四、指定数据在指定的段
程序中,对于数据指定attribute属性,可以指定该数据在链接的时候,链接到指定的段。
如下,使用如下,使用 __attribute__加上section选线,将变量my_peripher放置在.ARM.__at_0x10000000的段中。
在链接脚本中,增加.ARM.__at_0x10000000段。如下,将该段放置在ER_PERIPHERAL段中,起始地址是0x10000000。
编译,指定–map –symbols选项,显示memory map和symbol信息。
就可以看到,对于该变量,是放置在.ARM.__at_0x10000000段中的。
系列其他篇
原文首发于骏的世界博客
作者:卢骏.
更多Arm技术相关的文章请关注Arm技术博客极术专栏,每日更新。