- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我第一次接触 ARM 指令集是在 80 年代,此后一直没有使用它。出于好奇,我查看了平板电脑和其他 ARM 设备,并注意到 CPU 是由不同制造商生产的。
我进行了快速搜索,但找不到关于不同 ARM 芯片是否具有不同指令集的明确声明。
我会假设它们主要是相同的。
最佳答案
转到 http://infocenter.arm.com沿着左侧的内容查找 ARM 架构。并根据该引用手册。曾经有一个单一的 ARM ARM(ARM 架构引用手册),但该系列已经发展到他们不得不将其分解为多个系列的地步。
ARM ARM 将向您展示指令集。我认为他们所说的 ARMv5 手册是旧的 ARM ARM。您将找到 ARM 指令(32 位)和拇指指令(16 位)。对于每条指令,他们都列出了支持它的架构,因此您可能会看到 ARMv4 不支持的 ARMv5 指令(ARMv4 又名 ARM7,如流行的 ARM7TDMI 内核)。 ARMv4T 及更新版本等支持 Thumb 指令。
因此,您可能已经习惯了核心 32 位 arm 指令集,并且不时添加新指令并修复错误/限制(例如 ldr r0,[r0])等。
浮点单元有过一两次大修,大多数内核没有 fpu,有 fpu 的内核并不意味着芯片供应商将其包含在芯片中。 fpa 较旧,vfp 较新,现在是 NEON 。如果您注意这些都属于通用协处理器指令类别。但是您不必知道/使用协处理器版本,它们对所有内容都有别名。
有/曾经有这个 java/jazelle 的东西,同样的故事一些内核可能将它作为一个选项,并不意味着供应商包含它。
对拇指指令集的至少两套拇指2扩展。在thumb2 扩展之前,thumb 指令都是16 位的,并且与ARM 指令一对一映射,这是有道理的,您只需要一个ARM 内核,解码器从较小的指令转换为ARM 指令并将其提供给内核。除分支外,所有指令都是 16 位,如果您查看该模式,您可以很容易地将其解码为两个单独的 16 位指令。于是他们决定让他们的微 Controller 产品更小,而不是每个人都只使用 ARM7TDMI 并消耗芯片尺寸和功耗,支持拇指 2 的处理器只是拇指,它们不支持 32 位 ARM 指令,没有 ARM 内核可以使用拇指指令被翻译成等新内核。 ARMv6-M 又名 Cortex-m0 和 Cortex-m1 采用拇指指令集并添加一些 32 位指令以缩小与 ARM 的性能差距(拇指较小是的,但如果您编译相同的代码,则比 ARM 慢一点两者都需要从我的实验中多出 10-20% 的指令来使用拇指)。理论上,thumb-2 (ARMv7-M) 在您可以比较它们的时间和地点都优于 ARM。无论出于何种原因,Cortex-m3 首先出现,它是 ARMv7-M,并且在拇指指令集中添加了一堆 32 位拇指 2 指令。我最近统计了一下,ARMv6-M 增加了 20 条,ARMv7-M 的基本拇指指令集增加了 140-150 条指令。 thumb2 基本上是可变字长。再次仅在 cortex-m 系列上运行。看着它,几乎就像他们以拇指的名义重新构建了 ARM 指令集。不完全,但你得到了很多像指令一样的 arm,三个寄存器而不是两个,能够访问更高的寄存器并使用立即数等等。这导致了编写为 ARM 和拇指/拇指2 编译的 asm 的愿望。所以他们想出了一个统一的语法。你可以写一个指令像
add r0,r1
add r0,r0,r1
关于arm - 不同的ARM厂商提供的指令集不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8829790/
我想开始使用一些 AVX(高级矢量扩展)指令。我知道英特尔提供了一个模拟器来测试包含这些指令的软件(请参阅 this question ),但由于我不想手动编写十六进制代码,因此出现了关于 的问题。哪
假设我使用的是基于 Intel x64 的笔记本电脑,没有专用的 GPU。 我必须有一些板载 GPU 否则我的屏幕将无法工作,对吗? 板载 GPU 通常是否嵌入到 CPU 中? 英特尔是否有单独的 G
我遇到了这个错误:“SSE 指令集未启用”。我该如何解决这个问题? 我有 ACER i7,Ubuntu 11.10,请问有人能帮帮我吗? 任何帮助将不胜感激! 同时运行: sudo cat /pro
我希望创建一个最小的、计算通用的字母数字 x86 操作码子集。最终我希望子集包含尽可能少的指令,如果有多个最小子集,我也想知道。该子集应该能够模拟可以用整个字母数字指令集编写的任何程序。说明应仅涵盖与
COM 文件中使用了哪些指令集?我以为是 8086,但似乎我错了。在我发现的 8086 手册中,shl 的第二个参数只能接受 1 或 cl,而 1 以外的立即值对我来说很好用。如果重要,我正在使用 N
在“ARM11TechnicalRefManual”第 1-34 节的“Thumb 指令集”下,它说: “Thumb 指令集是最常用的 32 位 ARM 指令的子集。Thumb 指令长 16 位,并且
Java Virtual Machine Instruction Set页面提供aaload、aastore...等助记词信息 然而,既没有提到这些助记符占用的CPU周期,也没有任何关于这些助记符的字
在任何编程环境中,无论我选择何种数据类型,最终 CPU 都只会执行算术运算(加法/逻辑运算)。 这种转变(从用户定义的数据类型/操作到 CPU 指令集)是如何发生的,编译器、解释器、汇编器和链接器在这
Raspberry Pi 3 uses a Broadcom SoC with and ARMv8 A53 core .它还使用基于 Debian Jessie 的 32 位操作系统。根据 ARM 的
这个问题在这里已经有了答案: How to create a lightweight C code sandbox? (13 个答案) 关闭 9 年前。 我正在开发一个类似于 hackerrank.
下面的代码是否可以用来检查 CPU 是否支持 SSE3 指令集? 使用 IsProcessorFeaturePresent()该功能显然不适用于 Windows XP。 bool CheckSSE3(
我想编译一个包含大量 32 位静态库的程序,由于缺少 makefile,我无法将其重新编译为 64 位,但我应该编译一些库以获得一些静态库以与它们一起使用。 我要编译的库之一有一个 Makefile,
我知道 SSE 是 x87 浮点指令的替代方法,但 x87 FPU 是否仍在 Ivy-Bridge 或 Haswell 等现代 CPU 中实现? SSE 是否取代了 x87 指令集? 最佳答案 x87
我知道这个问题已经有一些答案,但我似乎不明白为什么我一直收到这个错误。 下面是解释:我有 64 位机器,其中安装了 Windows 7 x64。我在 Windows 上的 GCC (CodeBlock
我们有一个要用 AVX2 编译的翻译单元(只有那个):它在文件的第一行预先告诉 GCC: #pragma GCC target "arch=core-avx2,tune=core-avx2" 这曾经适
我想使用 mfoc library使用我的 Galaxy Nexus 手机,但 NFC Android API 中缺少某些方法。所以我想实现这些方法并构建我自己的 ROM。 使用 NFC pn512
我希望以快速高效的方式用 C 语言编写 Morton Z 顺序编码和解码的两个函数,即。 uint64_t morton_encode(uint32_t xindex, uint32_t yindex
我在 Visual C++ 2010 中使用 OpenCV 中的 BRIEF 描述符来匹配两个图像中的点。 在the paper关于 BRIEF-descriptor 的内容是可以加快速度: "The
我正在尝试制作一个对 2 个 CGVectors 求和的函数。 这是我的尝试: 包括: @import GLKit; @import Foundations; // Defenition of
所以,这就是我要完成的工作。在我的 C++ 项目中,必须使用 Microsoft Visual Studio 2015 或更高版本编译,我需要一些代码具有不同的版本,具体取决于用户 CPU 中可用的最
我是一名优秀的程序员,十分优秀!