Cortex‐M3-指令集:

  • Cortex‐M3 只使用 Thumb‐2 指令集。这是个了不起的突破,因为它允许 32 位指令和 16 位指令水乳交融,代码密度与处理性能两手抓,两手都硬。而且虽然它很强大,却依然易于使用。
  • 在过去,做 ARM 开发必须处理好两个状态。这两个状态是井水不犯河水的,它们是:32 位的ARM 状态和 16 位的 Thumb 状态。当处理器在 ARM 状态下时,所有的指令均是 32 位的(哪怕只是个”NOP”指令),此时性能相当高。而在 Thumb 状态下,所有的指令均是 16 位的,代码密度提高了一倍。不过,thumb 状态下的指令功能只是 ARM 下的一个子集,结果可能需要更多条的指令去完成相同的工作,导致处理性能下降。
  • 为了取长补短,很多应用程序都混合使用 ARM 和 Thumb 代码段。然而,这种混合使用是有额外开销(overhead)的,时间上的和空间上的都有,主要发生在状态切换之时。另一方面,ARM 代码和 Thumb 代码需要以不同的方式编译,这也增加了软件开发管理的复杂度。

ARM7 处理器上的状态切换模式图
  • 伴随着 Thumb‐2 指令集的横空出世,终于可以在单一的操作模式下搞定所有处理了,再也没有来回切换的事来烦你了。事实上,Cortex‐M3 内核干脆都不支持 ARM 指令,中断也在 Thumb 态下处理(以前的 ARM 总是在 ARM 状态下处理所有的中断和异常)。这可不是小便宜,它使 CM3 在好几个方面都比传统的 ARM 处理器更先进:
  • 消灭了状态切换的额外开销,节省了 both 执行时间和指令空间。
  • 不再需要把源代码文件分成按 ARM 编译的和按 Thumb 编译的,软件开发的管理大大减负。
  • 无需再反复地求证和测试:究竟该在何时何地切换到何种状态下,我的程序才最有效率。开发软件容易多了
  • CM3 并不支持所有的 Thumb‐2 指令,ARMv7‐M 的规格书只要求实现 Thumb‐2 的一个子集。举例来说,协处理器指令就被裁掉了(可以使用外部的数据处理引擎来替代)。CM3 也没有实现 SIMD 指令集。旧世代的一些 Thumb 指令不再需要,因此也被排除。

Cortex‐M3-指令集相关推荐

  1. ARM Cortex M3指令集

    一.跳转指令 跳转指令用于实现程序流程的跳转,在ARM 程序中有两种方法可以实现程序流程的跳转: Ⅰ.使用专门的跳转指令. Ⅱ.直接向程序计数器PC 写入跳转地址值. 通过向程序计数器PC 写入跳转地 ...

  2. Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)

    架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...

  3. stm32 cortex M3 汇编指令集 英文详解

    这是cortex M3的汇编指令集详解,包含指令执行的周期,如下图示例,可以去Arm公司下载此文档,链接在此https://developer.arm.com/documentation/ddi033 ...

  4. Cortex M3内核架构

    CortexM3内核架构 宗旨:技术的学习是有限的,分享的精神是无限的. 1.ARMCortex-M3处理器 Cortex-M3处理器内核是单片机的中央处理单元( CPU). 完整的基于CM3的MCU ...

  5. cortex m3的操作模式和状态

    1.操作状态(operation state): debug state:处理器在调试器发起halt或匹配到断点时,会进入debug state并停止执行指令. thumb state:处理器正在运行 ...

  6. ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 有啥区别

    ARM架构.ARM7.ARM9.STM32.Cortex M3 M4.51.AVR之间有什么区别和联系? ARM架构:由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~AR ...

  7. ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 之间有什么区别和联系?

    本文转自嵌入式资讯精选公众号,特别鸣谢, 编者按:初学习ARM单片机的同学们可能会对ARM的架构定义并不是很明确,形形色色的名词背后到底代表什么含义呢?请听听这位嵌入式工程师的经验总结. ARM架构: ...

  8. ARM 架构 ARM7 ARM9 STM32 Cortex M3 M4 51 AVR 有啥区别

    ARM架构.ARM7.ARM9.STM32.Cortex M3 M4.51.AVR之间有什么区别和联系? ARM架构:由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~AR ...

  9. Cortex M3 NVIC与中断控制

    Cortex M3 NVIC与中断控制 宗旨:技术的学习是有限的,分享的精神是无限的. 一.NVIC概览 --嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断 ...

  10. Cortex M3 Bit-banding简介

    http://blog.csdn.net/shevsten/article/details/7676397 Cortex M3 Bit-banding简介 分类: ARM MCU2012-06-19 ...

最新文章

  1. HDU 3549 Flow Problem(最大流模版EK算法)
  2. Java内存模型深度剖析
  3. 面向对象编程--之二
  4. html网页的结构框架代码
  5. layui导航栏页面滚动固定_帮你搞定长滚动网页的设计!这5种设计策略需谨记!...
  6. linux打包备份到其他机器,linux系统备份恢复到本机或是别的机器上
  7. 20145234黄斐《信息安全系统设计基础》第十周
  8. 阶段5 3.微服务项目【学成在线】_day04 页面静态化_14-页面静态化-数据模型-远程请求接口...
  9. csv反序列化_Py't'hon之csv,ini序列化,反序列化
  10. mfc 子窗体任何消息都不触发_你不知道的 WebSocket
  11. 面向 Java 开发人员的 db4o 指南: 简介和概览
  12. python 入门教程
  13. 尺寸大的背光为何设计双AK级?
  14. kinectfusion解析_KinectFusion介绍
  15. Completed 404 NOT_FOUND,Whitelabel Error Page
  16. 单词翻转字母顺序c语言,单词翻转(C语言实现)
  17. Pr 视频效果:调整
  18. JDK各个版本官方下载
  19. CSS垂直居中和水平居中
  20. 飞控开发--气压计MS5611

热门文章

  1. Docker学习笔记_网上资源参考
  2. ubuntu16定时任务crontab
  3. Java平台模块化系统(JSR 376)通过公开测评复议投票
  4. TODO:Go语言goroutine和channel使用
  5. Android中适用于ListView、GridView等组件的通用Adapter
  6. java-HashSet源码学习
  7. java程序编写九九乘法表_用面向对象的方法编写的九九乘法表java代码的编写
  8. springboot创建单个对象
  9. Dubbo中负载均衡的应用
  10. 分布式架构下常见序列化技术-了解序列化的发展