原生程序的生成过程:预处理、编译、汇编、链接
ARM处理器支持7种运行模式:用户模式、快速中断模式、外部中断模式、管理模式、数据访问终止模式、系统模式、未定义指令中止模式。
工作状态:ARM状态和Thumb状态
两种状态对应为:(Thumb状态在前。)
R0-R7相同、CPSR相同。
FP 对应 R11
IP 对应 R12
SP 对应 R13
LR 对应 R14
PC 对应 R15
寻址方式:
1.立即寻址
MOV R0,#1234
2.寄存器寻址
MOV R0,R1
3.寄存器移位寻址
移位指令LSL、LSR、ASR、ROR、RRX
MOV R0,R1,LSL #2 R0=R1<<2
4.寄存器间接寻址
LDR R0,[R1] 取地址中的数据赋值
5.基址寻址
LDR R0,[R1,#-4] 取R1-4地址中的数据赋值
6.多寄存器寻址
LDMIA R0,{R1,R2,R3,R4}
R1=[R0],R2=[R0+4],R3=[R0+8],R4=[R0+12]
7.堆栈寻址
STMFD SP!,{R1-R7,LR} 入栈
8.块拷贝寻址
LDMIA R0!,{R1-R3} 读取R0的存储单元到R1-R3
9.相对寻址
跳转到标号。
指令格式
S指定是否影响CPSR寄存器(状态标志寄存器)的值。ADDS、SUBS
.W和.N是指令宽度说明符。
Rd是目的寄存器,Rn是第一个操作数寄存器,operand2为第二个操作数。
跳转指令:
B跳转指令、BL带链接的跳转指令、BX带状态切换的跳转指令、BLX BL和BX的结合版。
存储器访问:
cond为执行条件。LDRD 一次加载双字的数据。
LDMIA R0!,{R1-R3} 依次加载R0指向的存储单元的数据到R1、R2、R3寄存器。
指令好多,不贴了,用到了再查吧。