我试图使用gcc工具在ARMv4t平台上构建大型软件。我试图构建的软件包含一些似乎至少针对ARMv5的汇编代码。这会导致汇编代码包含BLX
,CLZNE
,PLD
,VMRS
,VMSR
,SMULBB
,SMLABB
等说明,LDREX
,STREX
,STREXEQ
以及ARMv4t不支持的其他人。
这显然会在构建期间导致这样的错误消息:
Error: selected processor does not support ARM mode `[some instruction]'
所以我试图找到这些指令的替代方法,以便以这样的方式重写它们,即它们也可以在ARMv4t上工作。虽然我找到了将BLX arg
重写为MOV lr, pc; BL arg
的方法(这可行,因为我没有使用Thumb模式,即我使用-marm
作为编译器标志)我很遗失其他缺失的指示。
有没有人看到有机会重写给定的指令(最好用宏),以便软件也可以在ARMv4t上构建?如果是的话:怎么样?