ARM·指令集
1)B WAITA 跳到WAITA编号处 ;
(一般用于子程序没有返回的时候)
2)BL
1)数据传送指令
MOV R11,#0xF000000B
MOV R0, R1
MOVS R3,R1,LSL #2
MOV PC, LR
2)算数运算指令
ADDS R1,R1,#1020
ADD
SUBS R2, R1, R2
3) 逻辑运算指令
4)比较指令
MUL指令将Rm和Rs中的值相乘,结果的低32位保存到Rd中,Rd,Rm,Rs不能为15。只影响到CPSR的N位和Z位,不影响V,C位不确定
在ARM处理器中,只有MRS指令才能访问到程序状态寄存器
MRS
MRS R2,SPSR
MSR CPSR,R1
psr:CPSR或SPSR
应用实例:
ENABLE_IRQ
MRS R0, CPSR
BIC R0, R0,#0x80
MSR CPSR_c,R0
MOV PC ,LR
ARM处理器是典型的RISC处理器,对于存储器的访问只能使用加载和存储指令实现。ARM9处理是冯诺依曼结构,RAM存储空间及I/O映射空间统一编址,除了对RAM操作以外,对外围IO,程序数据的访问都要通过加载/存储指令进行。
(冯诺依曼结构就是程序存储指令存储器和数据存储器结合在一起的结构)
(RISC和CISC相对,reduced 和 complex)
1)单寄存器加载
LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、外表部件的控制操作等。
若使用LDR指令加载数据到PC寄存器,则实现程序跳转功能 。
*LDR和STR——字和无符号字节加载/存储指令
LDR/STR指令寻址非常灵活,它由两部分组成,其中一部分为一个基址寄存器,可以为人一个通过寄存器;另一个部分为地址偏移寄存器。
①立即数 LDR
②寄存器 LDR
③寄存器及移位常数 LDR
*LDR/STR——半字和有符号字节加载/存储指令
2)批量数据加载/存储指令
*cond:执行的条件
*模式:控制地址的增长方式,一共8种模式
*!:表示在操作结束后,将最后的地址写回Rn中
reglist:表示寄存器列表,可以包含多个寄存器{R1,R2,R4-R9}
^:允许在用户模式或系统模式下使用
例子。
*堆栈指针(SP)总是指向栈顶
递增堆栈:向高地址方向生长
递减堆栈:向低地址方向生长
满堆栈:堆栈指针向最后压入堆栈的有效数据项
空堆栈:堆栈指针指针向下一个要放入数据的空位置
SWI 0 调用0中断
SWI 12 调用12中断
ARM指令 相关文章:
- ARM指令LDR和ADR的一些区别(11-27)
- arm指令学习之记录关于队长的知识点总结(11-26)
- ARM指令ldr与str解析(11-26)
- 关于汇编ARM指令DCD(11-26)
- ARM指令系统的几点见解(二)(11-24)
- ARM指令系统的几点见解(一)(11-24)