当我开发Cortex-A15和Cortex-A9的基准代码时,我就想到了这个问题。它们都基于ARMv7-A体系结构,所以这是否意味着相同的程序集将同时运行,还是体系结构版本只定义了一个通用设计?
发布于 2014-01-07 21:37:30
架构版本控制基本指令集、寄存器等,因此任何" v7“代码都将在任何v7体系结构上运行(注意v7-M只支持拇指指令集),但是如果它使用任何v7特定的指令,则可能与v6不兼容。
但是,在任何给定的实现中都可能存在或不存在一些可选的体系结构扩展,例如浮点、霓虹灯、安全扩展等。任何依赖于这些扩展的可移植代码都应该在尝试使用可能不存在并可能导致异常的功能之前,通过读取标准系统寄存器来检查功能。例如,A15具有A9没有的虚拟化扩展和大型物理地址扩展。
在基本体系结构中也有一些被定义为实现定义的特性,例如ACTLR (辅助控制寄存器),它通常用于公开核心的微体系结构的细节(例如,启用/禁用分支预测器的控制位)。即使在不同的核心版本之间,它们的含义和用途也会有所不同,但通常都是低层次的东西,大多数人甚至不需要去看它们。
发布于 2014-01-07 21:35:25
如果有什么区别的话,差别是很微妙的。编写跨许多arm体系结构的程序集并不太困难。真正的问题是,周期等等--在核心之外的东西--从供应商到供应商,从产品到产品,所以在广泛添加两个数字端口的同时,您对这些数字所做的事情最终是不同的。
ARM在记录这些事情方面做得很好。在ARM架构参考手册(Arm arms)和trms技术参考手册之间。无论谁拥有指令集的详细信息,都会记录每条指令或指令的每一种形式--架构支持该指令。然后,您可以选择您感兴趣的所有变体所支持的指令。
https://stackoverflow.com/questions/20981774
复制相似问题