基于ARM的嵌入式系统程序开发要点(五)--ARM/Thumb的交互工作
时间:04-05
来源:互联网
点击:
4 交互程序之间的兼容性
因为在指定交互选项后,编译及链接后的输出代码跟在无交互情况下不同,所以当多个源文件如果使用了不同的设置进行编译,相互之间的调用可能产生兼容性问题。图5说明了这些关系。
在一个使用交互工作的项目工程管理中,对此要加以仔细考虑。
5 V5架构的扩展
ARM在V5版本的架构中,对ARM/Thumb的交互增加了新的支持。针对前面第3节中提到的函数调用和返回问题,V5版本中专门对指令做了扩展。
① 增加了新指令BLX,解决了原来BX和BL指令各自的欠缺。使交互的函数调用可以由一条指令实现,省去了跳转代码的开销。
② 扩展了以PC为目标地址的数据传输指令功能。PC加载值的最低位将被自动送到状态寄存器CPSR的T状态位。也就是说,通过给PC赋值的方法也能实现状态的切换,这样就使习惯的函数返回方法——从堆栈中恢复寄存器,也能实现交互调用函数的正确返回了。
所以,V5架构以后的代码,不再需要额外的链接代码,缩小了代码长度,提高了状态切换时的执行效率。当然,在V5及以后的架构中,继续保持了对以前代码的良好兼容性。
6 Thumb-2
ARM和Thumb因为其各自的优势,都得到了极为广泛的应用。在一个应用程序中,用户要根据系统的具体情况灵活分配,使用不同的编译器,把不同的代码编译成ARM或Thumb,以希望得到最优的代码长度和性能平衡。这样做能够达到系统优化的目的,但是也给设计人员带来了额外的交互处理工作。最近,ARM公司公布了一项新的发明——Thumb-2指令集,该指令集同时包含32位和16位指令,在代码长度和性能之间作了最佳的平衡。这样,以后用户就可以用一个统一的Thumb-2编译器来解决现在面临的很多问题了。
如图6所示,是Thumb-2指令集跟ARM和Thumb之间的比较。
引证文献
1. 杨志强 嵌入式系统设计与发展 [期刊论文] -青海师范大学学报(自然科学版)2005(03)
2. 刘志勇 基于ARM的无线视频传输硬件系统的初步研究与开发 [学位论文] 硕士2005
3. 李晶 基于 LINUX的无线局域网芯片驱动程序的设计与开发 [学位论文] 硕士2005
作 者:ARM中国 费浙平
来 源:单片机与嵌入式系统应用 2003(12)
因为在指定交互选项后,编译及链接后的输出代码跟在无交互情况下不同,所以当多个源文件如果使用了不同的设置进行编译,相互之间的调用可能产生兼容性问题。图5说明了这些关系。
在一个使用交互工作的项目工程管理中,对此要加以仔细考虑。
5 V5架构的扩展
ARM在V5版本的架构中,对ARM/Thumb的交互增加了新的支持。针对前面第3节中提到的函数调用和返回问题,V5版本中专门对指令做了扩展。
① 增加了新指令BLX,解决了原来BX和BL指令各自的欠缺。使交互的函数调用可以由一条指令实现,省去了跳转代码的开销。
② 扩展了以PC为目标地址的数据传输指令功能。PC加载值的最低位将被自动送到状态寄存器CPSR的T状态位。也就是说,通过给PC赋值的方法也能实现状态的切换,这样就使习惯的函数返回方法——从堆栈中恢复寄存器,也能实现交互调用函数的正确返回了。
所以,V5架构以后的代码,不再需要额外的链接代码,缩小了代码长度,提高了状态切换时的执行效率。当然,在V5及以后的架构中,继续保持了对以前代码的良好兼容性。
6 Thumb-2
ARM和Thumb因为其各自的优势,都得到了极为广泛的应用。在一个应用程序中,用户要根据系统的具体情况灵活分配,使用不同的编译器,把不同的代码编译成ARM或Thumb,以希望得到最优的代码长度和性能平衡。这样做能够达到系统优化的目的,但是也给设计人员带来了额外的交互处理工作。最近,ARM公司公布了一项新的发明——Thumb-2指令集,该指令集同时包含32位和16位指令,在代码长度和性能之间作了最佳的平衡。这样,以后用户就可以用一个统一的Thumb-2编译器来解决现在面临的很多问题了。
如图6所示,是Thumb-2指令集跟ARM和Thumb之间的比较。
引证文献
1. 杨志强 嵌入式系统设计与发展 [期刊论文] -青海师范大学学报(自然科学版)2005(03)
2. 刘志勇 基于ARM的无线视频传输硬件系统的初步研究与开发 [学位论文] 硕士2005
3. 李晶 基于 LINUX的无线局域网芯片驱动程序的设计与开发 [学位论文] 硕士2005
作 者:ARM中国 费浙平
来 源:单片机与嵌入式系统应用 2003(12)
- 基于ARM的除法运算优化策略(01-14)
- 基于ARM的CAN总线智能节点的设计(01-24)
- ARM基础知识教程五 (02-08)
- ARM基础知识教程六(02-08)
- ARM基础知识教程七(02-08)
- ARM基础知识教程八(02-08)