数据和指令类型
源程序文件 | 文件名 | 说明 |
汇编程序文件 | *.S *.s |
用ARM汇编语言编写的ARM程序
或Thumb程序( 汇编代码可直接操作CPU内部的REG)
|
C程序文件 | *.C *.c | 用C语言编写的程序代码 |
头文件 | *.H *.h |
为了简化源程序,把程序中常用到的常量命名、宏定义、
数据结构定义等等单独放在一个文件中,一般称为头文件
|
伪操作 | 语法格式 | 作用 |
CODE16 | CODE16 | 告诉汇编编译器后面的指令序列为16位的Thumb指令 |
CODE32 |
CODE32
|
告诉汇编编译器后面的指令序列为
32
位的ARM
指令
|
AREA |
AREA sectionname {,attr} {,attr}
| 定义一个代码段或者数据段 |
ENTRY | ENTRY | 指定程序的入口点 |
END | END | 告诉编译器已经到了源程序结尾 |
EXPORT | EXPORT symbol {[WEAK]} | 声明一个符号可以被其他文件引用 |
SPACE | {label} SPACE expr |
分配一块连续内存单元,并用
0
初始化
|
DCD | {label} DCD expr {,expr}… | 分配一段字内存单元 |
伪指令 | 语法格式 | 作用 |
ADR
|
ADR{cond} register,
expr
|
将基于
PC
或基于寄存器的地址值读取到
寄存器中。小范围的地址读取。
|
ADRL |
ADRL{cond} register,
expr
|
将基于
PC
或基于寄存器的地址值读取到
寄存器中。中等范围的地址读取。
|
LDR
|
LDR {cond} register,?
=[
expr | label-expr]
|
将一个
32
位的立即数或者一个地址值读取到
寄存器中。大范围的地址读取。
|
NOP | NOP | 在汇编时将被替换成ARM中的空操作。 |
Suffix
|
描述
|
测试的标志位
|
EQ
|
等于(Equal)
|
Z=1
|
NE | 不等于(Not Equal) | Z=0 |
CS/HS
|
无符号的大于或等于
| C=1 |
CC/LO
|
无符号的小于
| C=0 |
MI
|
负数(Minus)
| N=1 |
PL
|
正数或零
| N=0 |
VS
|
溢出(Overflow)
| V=1 |
VC
|
没溢出
| V=0 |
HI
|
无符号的大于
|
C=1?&?Z=0
|
LS
|
无符号的小于或大于
|
C=0 |?Z=1
|
GE
|
大于等于
|
N=V
|
LT
|
小于(Less Than)
|
N!=V
|
GT
|
大于(Greater Than)
|
Z=0 & N=V
|
LE
|
小于等于
|
Z=1 |?N=!V
|
AL
|
总是执行(Always)
|