ARM编译器(三) 其他

一、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编译器
  • ARM编译器(一)ARM汇编与ARM GNU汇编

原文首发于骏的世界博客
作者:卢骏.
更多Arm技术相关的文章请关注Arm技术博客极术专栏,每日更新。

发表评论

邮箱地址不会被公开。 必填项已用*标注

Related Post