ARM架构与体系学习(三)——ARM处理器状态

来源:互联网 发布:plc伺服编程实例 编辑:程序博客网 时间:2024/05/22 01:58

ARM7有两套指令系统,分别为ARM指令集和Thumb指令集。

ARM指令集为32位长,具有最完整的功能;Thumb指令集为16位长度,能实现ARM指令集的大部分功能。

Thumb指令集具有极高的代码密度(平均缩减30%的代码量)。

ARM处理器有两个处理器状态与这2套指令集分别对应。

以“当前程序状态寄存器CPSR”中的控制位T反映处理器正在操作的状态,即哪种指令集正在执行。T=0时,处理器处于ARM状态,执行ARM指令。T=1时,处理器处于Thumb状态,执行Thumb指令。其中处理器在系统上电时默认为ARM状态。

无论处理器处于何种状态,ARM指令集与Thumb指令集不同同时混合使用。

BX指令可以实现将ARM内核的操作状态在ARM和Thumb之间进行切换。

PS:BX用法。

BX:带状态切换的跳转指令,跳转到Rm指定的地址执行程序,若Rm的位[0]为1,则跳转时自动将CPSR的标志T置位,即把目标地址的代码解释为Thumb状态代码;若Rm的位[0]为0,则跳转时自动将CPSR中的标志T复位,即把目标地址的代码解释为ARM代码,指令格式如下,

BX{cond} Rm


为了让用户更好地控制代码量,才会设计了这两套指令系统。

原创粉丝点击