ARM体系结构(复习小结)
一、ARM工作模式
a) 两种工作状态:ARM状态(32位)和Thumb状态(16位),可相互切换;
b) ARM体系结构可以用两种方法存储字数据:
小端(高高低低),一般情况是小端、大端(高低底高);
c) 七种模式:用户模式(usr)、系统模式(sys)、快速中断(fiq)、外部中断(irq)、管理模式(svc,保护模式)、数据访问终止模式(abt)、未定义指令终止模式(und)
d) ARM处理器运行模式的改变方法:
i. 通过软件改变;
ii. 通过外部中断或异常处理改变;
iii. 应用程序运行在用户模式下时,访问了某些被保护的系统资源;
e) 除了用户模式以外,其余的6种称之为非用户模式,或特权模式;
f) 除了用户模式和系统模式以外的5种称为异常模式;
二、ARM寄存器
a) 37个寄存器:31个为通用寄存器,6个为状态寄存器;
b) 通用寄存器(31个)
i. 不分组寄存器:R0~R7
ii. 分组寄存器:R8~R14(R13为SP;R14为LR,用做子程序链接寄存器,指向函数的返回地址)
iii. 程序计数器:R15(PC)
c) 状态寄存器(6个PSR)
三、 ARM寻址方式
a) 立即寻址:操作数本身包含在指令中了
b)寄存器寻址:操作数直接放在寄存器中
c) 寄存器间接寻址:操作数的地址放在寄存器中
ADD R0, R1, [R2] ;R0 <--R1 + [R2]
d) 基址变址寻址:需要一个基地址寄存器
i. LDR R0, [R1, #4] ;R0 <-- [R1 + 4]
ii. LDR R0, [R1, #4]! ;R0 <-- [R1 + 4]、R1 ß R1 + 4
iii. LDR R0, [R1], #4 ;R0 <-- [R1]、R1 ß R1 + 4
e) 多寄存器寻址:一条指令可以完成多个寄存器值的传送
LDMIA R0, {R1, R2, R3, R4} ;IA表示R0按字长度增长
f) 相对寻址:以程序计数器PC的当前值作为基地址
g) 堆栈寻址:
i. 递增堆栈:向高地址方向生长;
ii. 递减堆栈:向低地址方向生长;
iii. 满堆栈:SP指针指向最后压入的有效数据项;
iv. 空堆栈:SP指针指向下一个将要压入数据的位置;