今天看了《ARM嵌入式系统结构与编程》,着重看了关于ARM上的异常处理,简单的把书上我感兴趣的异常和ARM汇编做了一些笔记,以供下次忘了的时候,可以看看。
ARM处理器有7种工作模式:
1,用户模式
2,FIQ模式:快速中断模式
3,IRQ模式:
4,SVC模式
5,中止模式
6,未定义指令异常模式
7系统模式,
ARM有31个通用寄存器,6个状态寄存器,都是32位,其中状态寄存器只用到了其中的14位,可以从网上搜作ARM物理寄存器来产看寄存器的信息。下面简单介绍下几个寄存器的专有用途:
R15:PC寄存器,一直存放当前指令的下两条指令地址,比如当前指令地址是ADDR,则PC=ADDR+8
R12:中间结果保存寄存器,R12一般在子程序连接代码中使用,作为子程序中间结果寄存器
R13:栈指针,也就是SP
R14,称作LR,ARM上有以下两种用途:
1,每种处理器模式的R14上存放当前子程序的返回地址,通过BL或者BLX调用子程序时,R14设置成该程序返回地址,在子程序里,把R14值返回赋值给PC,实现子程序返回,汇编形式如:
MOV PC, LR或者 BX LR
2,发生异常时,R14设置成异常模式返回的地址。
ARM状态寄存器有CPSR(当前程序状态寄存器)和S