ARM体系结构学习4
ARM指令教程
ARM汇编程序特点:
l
l
CMP R0,R1
BNE NoMatch
比如上一句,BNE隐含的使用的上一句CMP执行结果.NE后缀表示使用Z标志位.两句合起来的意思就是,如果R0,R1的值不相等,就跳转到NoMatch处执行.
注意,PC=R15,CPSR=R16,
n
l
n
ARM常用指令,伪指令
ARM常用指令并不太多,因此使用阅读ARM汇编代码,并不太困难.以下是使用频率最高的指令和伪指令,并不是完整的指令集的教材。详细指令参见参考资料。
l
l
l
l
l
l
l
l
1. 跳转语句 B,BL
l
l
n
n
n
B指令(Branch)表示无条件跳转.
BL指令(Branch with Link)表示带返回值的跳转.
与MOV PC,XXX能在4G空间跳转不同,B语句只能32M空间跳转,(因为偏移量是一个有符号26bit的数值=32M)
2. 传输数据指令MOV,MVN
n
MOV R0,R1
MOV R3,#3
n
MVN R0, #0
MVN R1,R2
3. 加载/存储指令,LDR,STR
n
u
n
LDR R0,[R1]; R1的值当成地址,再从这个地址装入数据到R0 (R0=*R1)
LDR R1,=0x30008000
ldr
用位与的方法赋值
n
STR R0,[R1]
STR R0,=0x30008000
S2C2440的中CPU内核以外的模块的控制寄存器空间也是属于外部空间,所以也得用如下指令LDR R0,=GPFDAT
4. 算术运算指令,ADD/ADC,SUB/SBC ,MUL
n
ADD R0,R1,R2; R0=R1+R2
ADD R0,R1,#3
n
u
u
ADDS R0,R1,R2; R0=R1+R2,ADDS中S表示把进位结果写入CPSR
ADC R5,R3,R4
n
SUB R0,R1,R2; R0=R1-R2
SUB R0,R1,#3
n
u
SUBS R0,R1,R2; R0=R1-R2,SUBS中S表示把进位结果写入CPSR
SBC R5,R3,R4
n
MUL R0,R1,R2; R0=R1*R2
MUL R0,R1,#3
5. 位操作指令 AND,ORR, TST,BIC
n
AND R0,R1,R2; R0=R1 & R2
AND R0,R1,#0xFF
n
ORR R0,R1,R2; R0=R1 | R2
ORR R0,R1,#0xFF
n
TST R1,#0xffe;
TST R1,#%1;测试最
ARM体系结 相关文章:
- ARM体系结构研究(一)(11-28)
- ARM体系结构研究(11-28)
- ARM体系结构详解之ARM寄存器(11-21)
- ARM体系结构学习1(11-21)
- ARM体系结构学习3(11-21)
- ARM体系结构学习2(11-21)