c语言嵌入arm指令如何编译,ARM汇编语言与嵌入式C语言混合编程————内嵌汇编.pdf...

ARM汇编语言与嵌入式C语言混合编程————内嵌汇编

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 C C

汇编语言调用嵌入式 语言(汇编程序调用 程序)

2010-04-15 14:50

这里要特别注意参数的传递规则,程序设计时要严格遵守ATPCS。在GNU ARM 编

.extern C ARM—ADS

译环境下,汇编程序中要使用 伪操作声明将要调用的 程序;在 开

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