ARM两种数据存储格式:大端格式,数据高字节存储在地址低字节,数据低字节存储在地址高字节
小端格式,数据高字节存储在地址高字节,数据低字节存储在地址低字节
ARM工作模式:用户模式Usr,正常执行程序
快熟中断模式FIQ,用于高速传输数据
外部中断模式IRQ,用于通常的中断处理
管理模式svc,操作系统使用的保护模式
数据访问终止模式abt,当数据或指令预取终止时进入该模式,用于虚拟存储和存储保护
系统模式sys,运行有特权的操作系统任务
未定义指令终止模式und,当未定义的指令执行时进入该模式,用于硬件支持
ARM 的运行模式可以通过软件改变,或者通过外部中断改变。除用户模式外的其他6种模式有叫非用户模式或特权模式,除去用户模式和系统模式,其他5种又叫异常模式,用于处理中断或异常
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器,他们不能同时被访问。但是在任何时候R0~R14,程序计数器PC(R15),一个状态寄存器(CPSR)都可以访问。
不分组寄存器R0~R7,分组寄存器R8~R14
R8_fiq~R14_fiq, R13_svc~R14_svc, R13_abt~R14_abt, R13_irq~R14_irq,R13_und~R14_und
R13堆栈指针(SP),R14函数指针,指向子函数的返回地址(LR)
SPSR用来保护异常模式下CPSR的值
V溢出标志,C进位标志,Z结果为0,N负数,最高位位1
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ARM寻址方式
立即数寻址:ADD R0,R0,#1 R0=R0+1
ADD R0,R0,#0X83 R0=R0+0X83
ADD R0,R0,#&83 R0=R0+0X83
寄存器寻址 ADD R0,R1,R2 R0=R1+R2
寄存器间接寻址 ADD R0,R1, [R2] R2存放的不是操作数,而是操作数的地址
基址变址寻址 LDR R0,[R1,#4] R0=[R1+4]
LDR R0,[R1,#4]! R0=[R1+4], R1=R1+4
LDR R0,[R1],#4 R0=[R1], R1=R1+4
多寄存器寻址 LDMIA R0,{R1,R2,R3,R4}
IA表示每次执行完加载操作后,R0按字长增加,R1=R0,R2-R0+4,R3=R0+8,R4=R0+12
相对寻址 MOV PC, LR 从子程序返回
堆栈寻址 先进后出。
满堆栈:堆栈指针指向最后压入堆栈的有效数据
空堆栈:堆栈指针指向将要压入堆栈的数据地址
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////