c语言嵌入arm指令如何编译,ARM汇编语言与嵌入式C语言混合编程――――内嵌汇编 - 火魔网...

在嵌入式程序设计中,有些场合(如对具体的硬件资源进行访问)必须用汇编语言来实现,可以采用在嵌入式C语言程序中嵌入汇编语言或嵌入式C语言调用汇编语言来实现。

内嵌汇编

内嵌的汇编指令与通常的ARM指令有所区别,是在嵌入式C程序中嵌入一段汇编代码,这段汇编代码在形式上表现为独立定义的函数体,遵循过程调用标准。

1.语法格式

在嵌入式C程序中内嵌汇编使用关键字“__asm”。在ARM开发工具编译环境下与GNU ARM编译环境下的内嵌汇编在格式上略有差别。

(1)ARM开发工具编译环境下内嵌汇编语法格式

在ARM开发工具编译环境下的内嵌汇编语言程序段,可以直接引用C语言中的变量定义。具本的语法格式如下:

__asm

指令;[指令]

指令;[指令]   //注释

[指令]

示例:

/*    main.c     */

void __main(void)

int var=0xAA;

__asm                          //内嵌汇编标识

{

MOV R1,var

CMP R1,#0xAA

}

while(1);

}

(2)GNU ARM环境下内嵌汇编语法格式

在GNU ARM编译环境下内嵌汇编语言程序段,不能直接引用C语言中的变量定义。如果有多条汇编指令需要嵌入,则可用“\”将它们归为一条语句。具本的语法格式如下:

__asm

(

“指令;[指令;]\

指令;[指令;]\

…        \

[指令;]”

);

示例:

/*    main.c     */

void __main(void)

int var=0xAA;

__asm

(

" MOV R5,#0xAA;\    /*注意:这里不要直接使用C代码中提供的变量*/

MOV    R6,#0xBB;\

CMP     R1,#0;"

);

while(1);

}

本文出自:

邱铁 编著. ARM嵌入式系统结构与编程. 清华大学出版社. 2009.3

你可能感兴趣的:(c语言嵌入arm指令如何编译)