ARM汇编指令(ARM工作模式、寄存器)

ARM 249浏览

1、ARM工作模式

从编程的角度来看,ARM微处理器的工作状态一般有两种,并可在两种工作状态之间进行切换:

△:第一种为ARM状态,此时处理器执行32位的的字对齐的ARM指令。

△:第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。

 

当ARM微处理器执行32位的ARM指令集时,工作在ARM状态;

当ARM微处理器执行16位的Thumb指令集时,工作在Thumb状态。

在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态

的转变并不影响处理器的工作模式和相应寄存器中的内容。

 

1)存储器格式

ARM体系结构将存储器看作是从零地址开始的字节的线性组合。

从零字节到三字节地址放置地一个存储的字(32位)数据,从第四个字节到第七个字节

放置第二个存取器的子数据,依次排序。

作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB。

 

ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。

△:大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。

△:小端格式:与大端格式正好相反。

2)工作模式

ARM微处理器支持7种工作模式,分别为:

a、用户模式(usr)   用于正常执行程序

b、快速中断模式(fiq)   用于高速数据传输

c、外部中断模式(irq)   用于通常的中断处理

d、管理模式(svc)   操作系统使用的保护模式

e、数据访问终止模式(abt)   当数据或者指令预取终止时进入该模式,可用于虚拟存储及存储保护。

f、系统模式(sys)   运行具有特权的操作系统任务

g、未定义指令中止模式(und)   当未定义的指令执行时进入该模式,可用于支持硬件

 

注意:

ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或者异常处理改变。

应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被3保护的系统资源是不能被访问的。

 

除用户模式外,其余的6种模式称为非用户模式或者特权模式(Privileged Modes);

其中出去用户模式和系统模式以外以外的5种又称为异常模式(Exception Modes),常用语处理中断或者异常,以及要访问受保护的系统资源等情况。

2、ARM寄存器(基于ARM状态)

先贴张图片,一看就明白了:

Tiny6410学习ing鈥敚ㄈRM裸机开发鈥敚1)、ARM汇编指令(ARM工作模式、寄存器)鈥①

1)通用寄存器

△:不分组寄存器(The unbanked registers)

R0-R7

这意味着在所有处理模式下,访问的都是同一个物理寄存器。未分组寄存器没有被系统用于特别的用途,

任何可采用通用寄存器的场合都可以使用为分组寄存器。

△:分组寄存器:

R8-R14

对于R8-R12:FIQ模式分组寄存器R8-R12以及FIQ以外的分组寄存器R8-R12

对于R13-R14:寄存器R13通常用于堆栈指针SP

             寄存器R14用作子程序连接寄存器(Link Register-LR),也成为LR,指向函数的返回地址。

 

△:程序计数器

R15(PC)

寄存器R15也被用作程序计数器,也成为PC。其值等于当前正在执行的指令的地址+8。

因为在取址和执行之间多了一个译码的阶段(这个我也不是很懂,就是知道要加两个字)~~

△:状态寄存器

CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq、SPSR_fiq

3、ARM寄存器(基于Thumb状态)

还是直接上图,这个是跟ARM状态相比较的:

Tiny6410学习ing鈥敚ㄈRM裸机开发鈥敚1)、ARM汇编指令(ARM工作模式、寄存器)鈥①
4、CPSR/SPSR

一张图片搞定:

Tiny6410学习ing鈥敚ㄈRM裸机开发鈥敚1)、ARM汇编指令(ARM工作模式、寄存器)鈥①