据我所知,ARMv7处理器(如Cortex-A9 )大多是向后兼容的,与旧版本的ARM架构版本的代码兼容。但是,例如,我读过关于segfaults trying to run ARM9 code on a Cortex-A8的报告。
ARMv7 4/5/6(ARM7TDMI/ARM9 9/ARM9 11)代码的哪些部分不能在ARMv7处理器上工作?这些旧的ARM体系结构版本中存在哪些特性或体系结构特征可以导致为这些版本构建的程序在ARMv7上失败?
发布于 2013-10-27 15:08:48
对于应用程序代码,主要问题是未对齐内存访问。在ARMv4和在ARMv4上可配置为ARMv6之前,来自未对齐地址的LDR负载将导致读取数据被旋转,而其他内存访问的作用就好像该地址的最小有效2位为零。
发布于 2013-10-26 22:02:31
为arm指令编译armv4应该贯穿整个过程。
你的问题的真正问题是,除了不自己研究这个主题(你花了很长的时间来避免去研究它,而不是去研究它),你可能希望从一个平台移植到另一个平台的大部分代码都与外围设备有关,而不是指令集。大多数代码不是因为指令集,而是因为计时器、uarts、视频和usb控制器等等。这些不是wintel盒,它们不试图反向兼容。
你所链接的问题与它没有实质关系,因为OP没有放下任何代码,至少在堆栈溢出时没有做任何公开的工作,它可能是一个简单的错误代码案例,与处理器内核无关,或者它可能是一个外围设备不存在并访问这些的情况,人们可能会预期会出现挂起或崩溃。
https://stackoverflow.com/questions/19608570
复制相似问题