Thumb扩展

ARM处理器已在嵌入式系统,手持计算机和其系统中得到了最大的应用,在这些系统中,系统对使用有限资源进行大量工作的要求很高。Thumb扩展是为解决资源消耗中的某些方面而创建的,已成为当今几乎所有ARM芯片上的标准扩展。

小型系统上受限的资源之一是指令存储器。有限的指令存储器限制了可以在处理器上运行的程序的大小,因此想寻找减小代码大小的方法。当可以找到编译优化时,编译时优化是实现此目标的一种显而易见的方法。增大指令集的大小是另一种方法,但这通常会导致整个板上各个指令的大小增加,这将导致存储指令所需的存储量相应增加。可能无法通过减少编写程序所需的指令数量来抵消。

正在寻找的质量称为代码密度。希望以某种方式完成同样数量的工作,但使程序占用更少的空间。这是Thumb扩展的用处。Thumb尝试通过允许使用大(32位)指令集,同时提供可以完成大部分工作的备用小(16位)指令集来获得两全其美的效果。而仅占用一半的空间。称此概念为“代码压缩”,其思想是在运行之前将小型Thumb指令“解压缩”为等效的全尺寸32位ARM指令。

Thumb指令的外观如何,与32位指令相比如何?

下图显示了如何将ADD指令从Thumb转换为ARM的示例。注意,立即操作数(Thumb中的8位)是如何用等于ARM的零填充的。还要注意,add指令在解压缩时会采用一个附加的操作数。

较小的指令意味着必须具有较小的操作码,并且必须具有更少或更少(或两者都有)的操作数。Thumb通过将其大部分指令限制为使用8个通用寄存器来代替通常的15个寄存器,从而部分确保了较小的操作数。一些指令可以访问完整的寄存器集(例如MOV),以解决较小的一些限制。寄存器组。

ARM如何知道正在运行的指令是Thumb指令还是常规ARM指令?

ARM芯片包含一个特殊的状态位,该位告诉CPU是期望压缩的Thumb指令还是标准的ARM指令。该位由其自己的指令BX切换,每次程序员或编译器希望在Thumb模式和标准ARM模式之间切换时,都必须将其插入代码中。显而易见的结果是,在模式之间进行切换会产生一些开销,因此切换到Thumb可能不是一个好主意,除非可以为节省两条以上的等​​效ARM代码指令。

Thumb扩展的更多相关文章

  1. WPF控件经验小结:(1) ToolBar去掉右边箭头(扩展图标)

    今天开发时,同事问我一个问题.怎么去除ToolBar右边扩展图标.我想了一下,说改Style.同事说太麻烦了.可不可以快速修正.我说应该动态去读取Template模板中的Style,然后隐藏.怎么实现 ...

  2. ThinkCMF-smeta扩展字段

    ThinkCMF - 添加文章功能 没有上传文件功能,为了扩展这一功能,在页面加入如下代码: <tr> <td> <div style="text-align: ...

  3. YII 1.0 扩展第三方类

    扩展缩略图类在blog\protected\extensions 中建立 Image/CThumb.php 1. 自己瞎弄的,一点都不优雅 include_once Yii::app()->Ba ...

  4. ARM处理器架构的Thumb指令集中关于IT指令的使用

    在ARMv6T2以及ARMv7架构扩展了Thumb指令集,其中加入了IT指令,进一步增强了代码的紧凑性. Thumb中有一个比较有意思的指令--IT,这条指令用于根据指定的条件来执行后面相继的四条指令 ...

  5. atitit.thumb生成高质量缩略图 php .net c++ java

    atitit.java thumb生成高质量缩略图 php .net c++ 1. 图像缩放(image scaling)---平滑度(smoothness)和清晰度(sharpness) 1 2.  ...

  6. Yii 1.1.17 四、属性标签、AR类增删改查、使用上传类与扩展第三方类库

    一.属性标签与规则设置 当进入网站页面,将会读数据库返回信息到视图上.那么,现在定义模型中的属性在视图标签上的显示, 也就是模型属性到前台标签的映射 // 定义模型属性到前台标签的映射 public ...

  7. 【基于Android的ARM汇编语言系列】之五:ARM指令集与Thumb指令集

    作者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...

  8. 13 ARM指令集与Thumb指令集

    指令格式 ARM基本格式 <opcode>{<cond>}{S}{.W|.N}<Rd>,<Rn>{,<operand2>} opecode: ...

  9. Asp.net Boilerplate之AbpSession扩展

    当前Abp版本1.2,项目类型为MVC5. 以属性的形式扩展AbpSession,并在"记住我"后,下次自动登录也能获取到扩展属性的值,版权归"角落的白板报"所 ...

随机推荐

  1. CVE-2013-1347:Microsoft IE CGenericElement UAF 漏洞利用样本分析

    CVE-2013-1347 漏洞是典型的 IE 浏览器 UAF 漏洞,所以其利用方法和一般的 IE 浏览器漏洞的利用方法非常相似,所以流程大体上可以分为这些步骤:(1) 对象被释放 (2) 精确覆盖被 ...

  2. Andrew Ng机器学习算法入门((六):多变量线性回归方程求解

    多变量线性回归 之前讨论的都是单变量的情况.例如房价与房屋面积之前的关系,但是实际上,房价除了房屋面积之外,还要房间数,楼层等因素相关.那么此时就变成了一个多变量线性回归的问题.在实际问题中,多变量的 ...

  3. 浅谈src与href的区别

    src 和 href 都是用来引入外部资源的属性,例如:图片.视频.CSS 文件.JavaScript 文件等. 那么它们两者之间究竟有什么样的区别呢? <link href="sty ...

  4. apache-tomcat-7.0.92

    链接:https://pan.baidu.com/s/1wnTSjTknYfaeDV_pakrC9g 提取码:see7

  5. CCNA 第四章 轻松划分子网

    1:划分子网的的好处: (1):减少网络流量 (2):优化网络性能 (3):简化管理 (4):有助于覆盖大型地理区域 2:CIDR和ISP的概念 (1):CIDR:Classless Inter-Do ...

  6. Redis6.x学习笔记(一)

    前言 最近学习Redis6.x,特做笔记以备忘,与大家共学.课程是从私塾在线下载的,他们把架构师课程都放出来了,大家可以去下载学习,不要钱的,地址是http://t.hk.uy/eac,课程很不错,值 ...

  7. UML类关系:依赖,关联,聚合和组合

    UML图示例:(可使用StartUML来画图,小巧^_^) http://www.blogjava.net/lukangping/archive/2010/08/01/327693.html 聚合:表 ...

  8. CRM系统实施中如何避免“踩雷”

    CRM系统实施后,效果没有达到预期是很多企业出现的情况.而最主要的原因就是在实施之前没有足够的思考和相应的计划.那么,企业应如何避免CRM系统实施时"踩雷"?这里有几条建议希望可以 ...

  9. (原创)高DPI适配经验系列:(三)字体与字号、缩放锚点

    一.前言 程序最基本的元素,就是文本,也就是字体.如果程序未进行高DPI的适配,最直观的感受便是字体的模糊.所以本篇便来说一下高DPI适配中的字体问题. 高DPI的适配,简单来说便是便是根据不同的DP ...

  10. markerdown基础

    标题 用#+空格 字体 加粗两边两个** 斜体两边* 斜体加粗三个* 引用 '>' 分割线 三个---或者三个*** 图片 ![截图]() 超链接 点击跳转到文章 []+() 列表 1 + 点+ ...