Pre*_*gha 8 arm instruction-set
我第一次遇到80年代的ARM指令集,从那时起就没用过它.出于好奇,我正在查看平板电脑和其他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位臂指令集,你可能已经习惯了不时添加的新指令和修复的错误/限制(例如ldr r0,[r0])等.
浮点单元进行了一次或两次大修,大多数内核没有fpu,而有fpu的那些并不意味着芯片供应商将其包含在芯片中.fpa是较老的,vfp是更新的,现在是霓虹灯的东西.如果你注意这些都属于通用协处理器指令类别.但你不必知道/使用协处理器版本,他们有一些别名.
有/这是java/jazelle的事情,同样的故事,一些核心可能有它作为一个选项并不意味着供应商包括它.
拇指指令集至少有两组thumb2扩展.在thumb2扩展之前,thumb指令都是16位并且与ARM指令一对一映射,有意义的是你只需要一个ARM内核,解码器从较小的指令转换为ARM指令并将其提供给内核.除了分支外,所有指令都是16位,如果您查看该模式,您可以很容易地将其解码为两个独立的16位指令.那么他们决定让他们的微控制器提供更小,而不是每个人只使用ARM7TDMI并消耗芯片尺寸和功率,支持thumb2的处理器只是拇指,他们不支持32位ARM指令,没有ARM内核那拇指指令被翻译成新核心等.ARMv6-M又名Cortex-m0和Cortex-m1采用拇指指令集并添加一些32位指令来缩小与ARM的性能差距(拇指更小是,但如果您编译相同的代码,则比ARM慢一点两者,我的实验使用拇指的指令多花了10-20%).理论上,thumb-2(ARMv7-M)在您可以比较它们的时间和地点优于ARM.无论出于何种原因,Cortex-m3首先出现在ARMv7-M上,并且在拇指指令集中添加了一堆32位thumb2指令.我最近计数并用于ARMv6-M加入像20,用于ARMv7-M具有像添加到基础拇指指令集140-150的指令.thumb2基本上是可变字长.而且只能在cortex-m系列上运行.看看它几乎就像他们在名称拇指下重新构建ARM指令集一样.不完全,但你得到了很多手臂像指令,三个寄存器而不是两个,能够达到更高的寄存器和使用immediates等.这导致了编写为ARM和thumb/thumb2编译的asm的愿望.所以他们提出了统一的语法.你可以写一个像这样的指令
add r0,r1
Run Code Online (Sandbox Code Playgroud)
如果用拇指组装,那就是说明,如果组装手臂,他们会把它转换成
add r0,r0,r1
Run Code Online (Sandbox Code Playgroud)
对你来说,而不是任何语法错误.您必须指定使用统一语法,至少使用gnu binutils汇编程序(gas).
一套同样重要的文件是技术参考手册,也可以在infocenter.arm.com上找到.每个核心都有一个trm,实际上每个核心的每个转速都有一个TRM.此外,L2高速缓存等额外成本项目每个转速都有自己的TRM.重要的是要找出芯片供应商购买/使用的核心,如果可能的话,修改版本(rev 2.0 r2p0,rev 1.0 r1p0等)因为编程差异以及它们之间的勘误差异(不要相信Linux作为参考! ,这是一个巨大的混乱,每当我看到另一家公司完全误解和误用核心/勘误差异,这一点有点像灾难).有时TRM包含指令信息,或描绘核心支持和不支持的更清晰的图像.ARM ARM是通用的,它们涵盖整个系列或许多内核系列,其中TRM非常特定于一个内核.ARM ARM和TRM之间混淆的一个例子是,看看ARM ARM,您可能会觉得可以使用BE-32或BE-8大端模式,现实情况是您有一个或另一个ARMv6和更新的是BE-8,期间,习惯它.ARMv5和ARMv4是BE-32或ARMv6之前刚刚称为big endian.我强烈建议不要在手臂上使用大端,尽管你认为你可以从中获得它.采用原生模式,你将节省大量的工作和失败.我从个人经验中提到它,试图弄清楚为什么ARM ARM中描述的位在我正在使用的核心中不起作用.
一个64位核心处于开发阶段的某个地方,如果它完成并且只是寻找某人触发并使用它,我不会感到惊讶.实际上ARMv8文档可用,现在下载.
简短回答infocenter.arm.com在ARM体系结构下,您可以找到描述不同指令集的所有文档,以及随着时间的推移对这些指令集的改进/添加.
| 归档时间: |
|
| 查看次数: |
1480 次 |
| 最近记录: |