ARM处理器的工作状态

在ARM的体系结构中,可以工作在三种不同的状态,一是ARM状态,二是Thumb状态及Thumb-2状态,三是调试状态。

《嵌入式系统开发与应用教程(第2版)》上介绍说:有两种状态ARM状态和Thumb状态,当时初学甚为不解,现在一知半解时再看忽然想到了显示中的例子:

ARM核就好比一个高中学校,那种包含普通高中和职业高中的。普通高中就相当于ARM状态,职业高中就相当于Thumb状态,这样还不能理解的话:可以认为 泡泡卡丁车 中普通模式和加速模式,,卡丁车加速要等到集气管加满,然后“ctrl”一下,就切换到了加速模式,气放完了就又回来了,不管加速模式还是普通模式都是在跑,只是速度不一样而已。

而ARM状态和Thumb状态可以直接通过某些指令直接切换,都是在运行程序,只不过指令长度不一样而已。这个概念对初学者相当重要,因为当ARM Thumb是什么还没弄清楚,怎么能理解两种状态呢?

他们之间的关系清楚了,这样就可以深入了解ARM状态是什么,Thumb状态是什么了。

另外:ARM的M系列主要用Thumb指令,ARM9和A系列主要用ARM指令

S3C2440.S启动代码中根本就没用Thumb指令。

ARM状态此时处理器执行32位的字对齐的ARM指令,Thumb状态此时处理器执行16位的,半字对齐的THUMB指令。 切换程序:从ARM到Thumb: LDR R0,=lable+1 BX R0 从ARM到Thumb: LDR R0,=lable BX R0

1,ARM状态

arm处理器工作于32位指令的状态,所有指令均为32位

2,thumb状态

arm执行16位指令的状态,即16位状态

3,thumb-2状态

这个状态是ARM7版本的ARM处理器所具有的新的状态,新的thumb-2内核技术兼有16位及32位指令,实现了更高的性能,更有效的功耗及更少地占用内存。总的来说,感觉这个状态除了兼有arm和thumb的优点外,还在这两种状态上有所提升,优化。

4,调试状态

处理器停机时进入调试状态。

5,arm与thumb间的切换

1,由arm状态切换到thumb

  状态将寄存器的最低位设置为1

BX指令:R0[0]=1,则执行BX
  R0指令将进入thumb状态

2,由thumb状态切换到ARM状态

寄存器最低位设置为0

BX指令:R0[0]=0,则执行BX
    R0指令将进入arm状态

当处理器进行异常处理时,则从异常向量地址开始执行,将自动进入ARM状态。

注意:ARM处理器复位后开始执行代码时总是只处于ARM状态;

Cortex-M3只有Thumb-2状态和调试状态;

由于Thumb-2具有16位/32位指令功能,因此有了thumb-2就无需Thumb了。

另外,具有Thumb-2技术的ARM处理器也无需再ARM状态和Thumb-2状态间进行切换了,因为thumb-2具有32位指令功能。

总的说,arm状态与Thumb状态的本质区别就是指令的位数不同,arm是32位的指令状态,而thumb是16位 的指令状态,而thumb-2状态是arm状态和thumb状态的结合和优化。

最新文章

  1. 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
  2. C# Lock 解读 (关键是理解最后一句)
  3. c#动态调用Webservices
  4. 多层嵌套对象无法使用gson反序列化的问题The JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@3bf13cde failed to de
  5. mac配置iterm2和ohmyzsh
  6. urllib2.urlopen超时
  7. flash memory
  8. 【jQuery】使用JQ要准备的主要淡入淡出效果
  9. 深入.NET平台和C#编程
  10. 第一节 JDK是什么?JRE是什么?JDK和JRE的区别?以及jdk安装和测试。
  11. mybatis 异常Result Maps collection does not contain value for java.lang.String
  12. requests库/爬取zhihu表情包
  13. "字体arial不支持样式regular"的解决方法
  14. 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形网格动态加载
  15. The compiler compliance specified is 1.5 but a JRE 1.8 is used
  16. 【java基础】Java反射机制
  17. Web程序员应该知道的Javascript prototype原理
  18. September 19th 2017 Week 38th Tuesday
  19. java统计abacbacdadbc中的每个字母出现的次数,输出格式是:a(4)b(3)c(3)d(2)
  20. 工厂模式(factory pattern) ------创造型模式

热门文章

  1. CI框架获取post和get参数_CodeIgniter心得
  2. Android: 启动另外的APP及传递参数(转)
  3. C#学习笔记(四)——变量的更多内容
  4. 用SQL语句添加删除修改字段
  5. PHP 表单提交多行数据,显示多个submit
  6. SU Demos-04Deconvolution-01FX
  7. node相关--测试
  8. Redis作为多个Windows服务运行配置方法
  9. SCU3185 Black and white(二分图最大点权独立集)
  10. storm源码之理解Storm中Worker、Executor、Task关系 + 并发度详解