ARM学习笔记(一)——ARM体系、跳转指令

ARM处理器的工作状态一般有两种:

1.      ARM状态,执行32位的字对齐的ARM指令。PC最后两个bit 0

2.      Thumb状态,执行16位的、半字节对齐的Thumb指令。PC值最后1bit 0

 

存储格式:ARM体系结构可以有两种方法存储数据:大端格式和小端格式。32位的ARM处理器支持4GB的最大寻址空间。

ARM微处理器支持字节(8位)、半字(16位)、字(32位)三种数据类型。其中字需要4字节对齐,半字需要2字节对齐。

 

工作模式:ARM支持7种工作模式

1.      用户模式(USR) 用于正常执行程序。权限受限

2.      快速中断模式(FIQ)用于高速数据传输。发生高优先级的中断

3.      外部中断模式(IRQ)用于通讯的中断处理。:发生低优先级的中断

4.      管理模式(SVC)复位,SWI指令。

5.      数据访问中止模式(ABT)访问存储器非法情况。

6.      系统模式(SYS) 运行具有特权的操作系统任务。

7.      未定义指令中止模式(UND) 未定义的指令执行时进入该模式。

 

工作模式的分类:

权限:特权模式:其余6种

      非特权模式:用户模式

异常/非异常:

      异常模式:管理、快速中断、中断、中止、未定义

      非异常:系统、用户

 

工作模式切换的方式有两种:处理器自动切换、指令切换

处理器自动切换:

    发生异常,处理器自动进入到对应的模式

指令切换:

   特权模式之间可以随意切换,可以从特权模式切换到用户模式,不能从用户模式切换特权模式,如果用户模式想进入特权模式,可以通过调用SWI指令。

 

寄存器:ARM处理器有37个32位寄存器,其中31个位通用寄存器,6个为状态寄存器。所有的寄存器对于软件来说,都是没有地址的。

r0-r7各个模式使用相同

r8-r12除去快速中断模式,其它通用

 

管理模式:r13r14  spsr

快速中断:r8-r14   spsr

中断:    r13 r14  spsr

中止:    r13 r14  spsr

未定义:  r13 r14  spsr

系统/用户:   r0-r15  cpsr

R13(SP)栈顶指针寄存器,存放就是内存的地址,栈是内存的一个区域

R14(LR)存放返回地址的寄存器

         调用之前LR=Addr;

         返回时: PC=LR

R15(PC)取指的指令的地址

     执行指令的地址与取指指令的地址相差8个字节(三级流水线)

     执行指令的地址=PC-8  (ARM状态)

     执行指令的地址=PC-4  (Thumb状态)

1个CPSR,5个SPSR

ARM学习笔记(一)——ARM体系、跳转指令_第1张图片

T: 1 thumb状态  0 ARM 状态

I: 1 禁止IRQ    0 开IRQ

F:1 禁止FIQ    0 开FIQ

SPSR用于备份CPSR的值

进入异常模式下需要备份上一模式的SPSR_mode=CPSR

当异常返回时,恢复上一模式的CPSR=SPSR_mode

 

 

分支指令(B  BL  BX)

B{cond}   

ARM学习笔记(一)——ARM体系、跳转指令_第2张图片

跳转范围:PC(new)=PC(当前值)+/-32M

24bit=1bit符号位 + 23bit偏移量(8M)

ARM指令,PC的值是4字节对齐,地址的最后两个bit永为00

用机器指令中的偏移量X4=真正的偏移量

 

BL指令:调用函数

CPU将BL指令的下一条指令地址保存到LR,跳转到子程序执行,返回时,将LR赋值给PC

 

BX{cond} 

跳转范围限制 :绝对地址、4G范围 0x0000 0000  0xFFFF FFFF

如果指令指定的条件成立则

           CPSR的T Flag=Rm[0]

           PC = Rm AND 0xfffffffe

ARM学习笔记(一)——ARM体系、跳转指令_第3张图片

你可能感兴趣的:(嵌入式学习笔记)