下载此文档

第7章arm程序和thumb程序混合使用.ppt


文档分类:IT计算机 | 页数:约23页 举报非法文档有奖
1/23
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/23 下载此文档
文档列表 文档介绍
第7章ARM程序和Thumb程序交互使用1AssembleLanguageofARM交互需求Thumb的代码密度和在窄存储器上性能,:在宽的存储器上ARM代码能提供很好的性能在一个应用中,速度关键的部分用ARM代码实现是不错的一些函数只能用ARM指令实现,(使能/禁止中断和状态的改变)操作协处理器异常处理异常处理时自动进入ARM状态,但系统要求主程序用Thumb代码实现独立的Thumb程序也需要一个ARM的汇编程序头来切换,并调用Thumb程序2AssembleLanguageofARM可以实现程序状态切换的指令BLX,BXLDR,LDM,POP3AssembleLanguageofARM交互指令交互的实现采用跳转交换指令(BX)在Thumb状态 BXRn在ARM状态(支持Thumb的内核) BX<条件>Rn 其中Rn可以是(r0~r15)--ARMstate1-Thumbstate目的地址BX3101PC5AssembleLanguageofARM与程序状态切换相关的伪操作CODE16伪操作CODE32伪操作6AssembleLanguageofARM分支交换示例CODE32 ;StartoffinARMstate ADRr0,Into_Thumb+1 ;Generatebranchtargetaddressandset ;bit0, ;BranchexchangetoThumbstate.:CODE16 ;:ADRr5,Back_to_ARM ;Generatebranchtargettowordaligned ;address- ;BranchexchangebacktoARMstate.:CODE32 ;:7AssembleLanguageofARM无交互子程序实现一个通常的子程序调用需要如下两步:保存返回地址到寄存器(LR)跳转到对应的子程序地址调用实现通常只需要一个指令:BLfunc2返回实现通常只需从LR恢复PC:MOVpc,lr..BLfunc2..:MOVpc,lrfunc1func2voidfunc1(void){ : func2(); :}8AssembleLanguageofARM混合的ARM/Thumb子程序在使用C/C++写程序时,可以自由的编译为ARM(/armcpp)或Thumb(/tcpp).:BL不能完成状态切换需要使用BX切换BX不能自动保存返回地址到LR需要其它方法来解决这个问题,BLX指令的引入(ARM7不支持)从子程序返回,要使用BXLR以便返回先前的状态BL在Thumb状态下可能设置了LR的lsb(bit-0)不能使用MOVPC,LR返回,因为不能实现状态切换9AssembleLanguageofARM交互子程序任何包含使用交互调用函数的C模块的编译必须使用-apcs/,(‘veneers’)来改变状态当发现交互调用时自动加入目标文件使用armlink-infoveneers可以看到加入的“veneers”的大小。:BL::BX:piledforinterworking)10AssembleLanguageofARM

第7章arm程序和thumb程序混合使用 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数23
  • 收藏数0 收藏
  • 顶次数0
  • 上传人rovend
  • 文件大小116 KB
  • 时间2019-03-04