GUN 汇编语法

label: instruction @ comment
label :地址位置
instruction: 指令
@:@后面表注释
comment: 注释内容

1
2
add: 
MOVS R0, #0x12 @设置R0 = 0x12

ARM中指令,操作,寄存器名都可以全部使用大写或小写,但是不能混用

使用.section来定义一个段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.section .testsection @定义了一个testsection段
```
### 伪操作
.byte: 定义单字节数据,.byte 0x12
.short
.long
.edu:赋值语句 ,equ num ,0x12
.align:数据字节对齐
.end:源文件结束
.global:定义一个全局符号
等等

## Cortex-A7常用指令
### 处理器内部数据传输指令
MOV :
```angular2html
MOV R0,R1 @将寄存器R1数据传递给R0
MOV R0. #0x12 @将0x12给寄存器R0

MRS指令:

1
MRS R0,CPSR @将特殊寄存器CPSR中数据传递给R0

MSR指令:

1
MSR CPSR,R0 @将R0数据复制到CPSR中

寄存器访问指令

LDR指令:
用于从存储器加载数据到寄存器Rx中,也可以加载立即数到寄存器中,加载立即数要使用=,而不是#

1
2
LDR R0, =0x0209C004 @将寄存器0x0209C004加载到R0中,
LDR R1, [R0] @读取0x0209c004中的数据到R1寄存器中

STR指令:
将数据写入到存储器中

1
2
3
LDR R0, =0x0209c004 @将寄存器地址0x0209c004加载到R0中
LDR R1 , =0x2000002 @R1保存要写入到寄存器的值。即R1=0x2000002
STR R1,[R0] @将R1的值写入到R0中所保存的地址