arm处理器每个核使用不同的arm体系结构版本,每个版本的对应指令集也不同,具体如下所示:
ARM体系结构总结
|
内核 | 体系结构 |
| ARM1 | V1 |
| ARM2 | V2 |
| ARM2aS,ARM3 | V2a |
| ARM6,ARM600,ARM610 | V3 |
| ARM7,ARM700,ARM710 | V3 |
| ARM7TDMI,ARM710T,ARM720T,ARM740T | V4T |
| Strong ARM,ARM8,ARM810 | V4 |
| ARM9TDMI,ARM920T,ARM940T | V4T |
| ARM9E-S | V5TE |
| ARM10TDMI,ARM1020E | V5TE |
|
ARM11,ARM1156T2-S,ARM1156T2FS,ARM1176JZ-S,ARM11JZF-S | V6 |
arm-linux-gcc编译器交叉编译时可以通过在CFLAGS中加入-march选项来选择编译出的汇编指令是针对arm处理器的哪个体系结构。如:ARM7TDMI处理器加入-march=armv4t表示支持V4T的指令集,从而解决了没有加入-march选项时编译器将半字或字的strh和str操作自动编译成了2个strb或4个strb指令,另外使用armv4t替代armv4则解决了armv4对bx指令不支持的错误。
本文深入解析ARM处理器各体系结构版本及其指令集,介绍如何通过arm-linux-gcc编译器的-march选项选择目标处理器架构,解决编译过程中的指令集兼容性问题。
2145

被折叠的 条评论
为什么被折叠?



