ARM汇编指令ARM工作模式、寄存器
2016-06-24 来源:eefocus
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状态)
先贴张图片,一看就明白了:
1)通用寄存器
R0-R7
这意味着在所有处理模式下,访问的都是同一个物理寄存器。未分组寄存器没有被系统用于特别的用途,
任何可采用通用寄存器的场合都可以使用为分组寄存器。
△:分组寄存器:
R8-R14
对于R8-R12:FIQ模式分组寄存器R8-R12以及FIQ以外的分组寄存器R8-R12
对于R13-R14:寄存器R13通常用于堆栈指针SP
△:程序计数器
R15(PC)
寄存器R15也被用作程序计数器,也成为PC。其值等于当前正在执行的指令的地址+8。
因为在取址和执行之间多了一个译码的阶段(这个我也不是很懂,就是知道要加两个字)~~
△:状态寄存器
CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq、SPSR_fiq
3、ARM寄存器(基于Thumb状态)
还是直接上图,这个是跟ARM状态相比较的:
4、CPSR/SPSR
一张图片搞定:
上一篇:ARM的工作模式和寄存器