热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

ARM,Thumb和Thumb2指令编码有什么区别?

如何解决《ARM,Thumb和Thumb2指令编码有什么区别?》经验,为你挑选了2个好方法。

我对指令集有点困惑.有Thumb,ARM和Thumb 2.根据我的阅读Thumb指令都是16位,但在ARMv7M用户手册(第vi页)中,提到了Thumb 16位和Thumb 32位指令.

现在我必须克服这种困惑.据说Thumb 2支持16位和32位指令.那么ARMv7M实际上支持Thumb 2指令而不仅仅是Thumb吗?

还有一件事.我可以说Thumb(32位)与ARM指令相同,它们都是32位吗?



1> Notlikethat..:

哦,ARM和他们愚蠢的命名......

这是一种常见的误解,但官方认为没有"Thumb-2指令集"这样的东西.

忽略ARMv8(其中所有内容都被重命名,AArch64使事情复杂化),从ARMv4T到ARMv7-A有两个指令集:ARM和Thumb.它们都是"32位",因为它们在具有32位地址的32位宽寄存器中对高达32位的数据进行操作.事实上,在它们重叠的地方,它们代表完全相同的指令 - 它只是指令编码不同,而CPU实际上只有两个不同的解码前端到它的管道,它可以在它之间切换.为清楚起见,我现在故意避免使用"32位"和"16位"这两个术语......

ARM指令具有固定宽度的4字节编码,需要4字节对齐.拇指指令具有可变长度(2或4个字节的,现在被称为"窄"和"宽")需要2字节对齐编码-大多数指令具有2字节的编码,但blblx一直有4字节编码*.真正令人困惑的是ARMv6T2,它引入了"Thumb-2技术".Thumb-2不仅包括向Thumb添加更多指令(主要是4字节编码)以使其几乎与ARM进行奇偶校验,而且还扩展了执行状态以允许条件执行大多数Thumb指令,并最终引入全新的汇编语法(UAL,"统一汇编语言")取代了以前单独的ARM和Thumb语法,允许编写一次代码并将其汇编到任一指令集而无需修改.

Cortex-M架构仅实现Thumb指令集 - ARMv7-M(Cortex-M3/M4/M7)支持大多数"Thumb-2技术",包括条件执行和VFP指令编码,而ARMv6-M(Cortex-) M0/M0 +)仅以少数4字节系统指令的形式使用Thumb-2.

因此,新的4字节编码(以及稍后在ARMv7版本中添加的编码)仍然是Thumb指令 - 它们的"Thumb-2"方面是它们可以具有 4字节编码,并且它们(大多数情况下)可以有条件地编码通过it(并且,我认为,他们的menmonics仅在UAL中定义)执行.

*在ARMv6T2之前,关于bl(或blx)是作为4字节指令还是作为一对2字节指令执行,实际上是一个复杂的实现细节.架构定义是后者,但由于它们只能按顺序执行,因此出于性能原因将它们融合到一条指令中,除了中断中断的能力之外几乎没有什么损失.ARMv6T2刚刚根据融合的单指令执行重新定义了东西


同样,在*Thumb2*中,还有随时间增加的操作码.所以不是所有*Thumb2*都是一样的.从主CPU的角度来看,没有任何模式称为*Thumb2*(我认为这是'官方'的意思吗?); 当然ARM持有似乎有*Thumb2*混合16/32位编码的想法,但除此之外它是模糊的.

2> unixsmurf..:

除了Notlikethat的答案,并且正如它所暗示的那样,ARMv8引入了一些新的术语来试图减少混淆(当然还增加了更多的新术语):

存在32位执行状态(AArch32)和64位执行状态(AArch64).

32位执行状态支持两个不同的指令集:T32("Thumb")和A32("ARM").64位执行状态仅支持一个指令集 - A64.

所有A64与所有A32一样,指令大小为32位(4字节),需要4字节对齐.

许多/大多数A64指令可以在32位和64位寄存器上运行(或者可以说是相同底层64位寄存器的32位或64位视图).

所有ARMv8处理器(与所有ARMv7处理器一样)都支持T32指令集中的Thumb-2指令.


推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 乐视手机S1 Pro发布,声称手机真不卡,外观酷似iPhone
    乐视宣布即将发布乐视手机S1 Pro,搭载虎贲T7510芯片,声称手机真不卡。该手机外观与iPhone 14 Pro相似,采用居中药丸式挖孔屏和方形三摄模组。官方定位该手机为便宜的5G手机,售价预计在千元价位。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 基于事件驱动的并发编程及其消息通信机制的同步与异步、阻塞与非阻塞、IO模型的分类
    本文介绍了基于事件驱动的并发编程中的消息通信机制,包括同步和异步的概念及其区别,阻塞和非阻塞的状态,以及IO模型的分类。同步阻塞IO、同步非阻塞IO、异步阻塞IO和异步非阻塞IO等不同的IO模型被详细解释。这些概念和模型对于理解并发编程中的消息通信和IO操作具有重要意义。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
author-avatar
zhouwenjun
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有