ARMv4/5/6 代码的哪些部分不适用于 ARMv7



据我了解,ARMv7处理器,如Cortex-A9,大多与旧ARM架构版本的代码向后兼容。 但是,例如,我已经阅读了有关段错误试图在Cortex-A8上运行ARM9代码的报告。

ARMv4/5/6 (ARM7TDMI/ARM9/ARM11) 代码的哪些部分不适用于 ARMv7 处理器? 这些较旧的 ARM 体系结构版本中存在哪些功能或体系结构特征,可能导致为这些版本构建的程序在 ARMv7 上失败?

对于应用程序代码,主要问题是未对齐的内存访问。在 ARMv4 之前,可在 ARMv4 到 ARMv6 上配置,来自未对齐地址的 LDR 加载将导致读取数据被轮换,而其他内存访问的行为就像地址的最低有效 2 位为零一样。

编译 arm 指令 armv4 应该可以一直工作。

除了不对这个主题进行自己的研究之外,你的问题的真正问题是,你可能希望从一个平台移植到下一个平台的大部分代码都与外围设备有关,而不是指令集。 你的大多数代码不会移植不是由于指令集,而是因为计时器、uart、视频和 USB 控制器等。 这些不是 wintel 盒子,它们不会尝试反向兼容。

您链接的问题真的与它无关,因为 OP 没有放下任何代码并没有对这个主题做任何工作,至少没有在 stackoverflow 上公开,这可能是一个简单的错误代码案例,与处理器内核无关,或者可能是不存在并访问这些外围设备的情况, 人们会期待挂起或崩溃。

最新更新