【转载:http://blog.chinaunix.net/uid-12163495-id-1988712.html】
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指令不支持的错误。