- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章ARM程序和Thumb程序混合使用概要
Assemble Language of ARM 第7章 ARM程序和Thumb程序交互使用 交互需求 Thumb的代码密度和在窄存储器上性能 ,使得它用在很多有大量C代码的系统上比较理想. 然而在很多应用中还是需要在 ARM/Thumb 两种状态之间切换: 在宽的存储器上 ARM 代码能提供很好的性能 在一个应用中,速度关键的部分用ARM代码实现是不错的 一些函数只能用 ARM 指令实现, e.g. 存取 CPSR (使能/禁止中断和状态的改变) 操作协处理器 异常处理 异常处理时自动进入 ARM 状态,但系统要求主程序用 Thumb 代码实现 独立的 Thumb 程序也需要一个ARM 的汇编程序头来切换,并调用Thumb 程序 可以实现程序状态切换的指令 BLX, BX LDR, LDM, POP 交互指令 交互的实现采用跳转交换指令(BX) 在Thumb状态 BX Rn 在ARM状态 (支持Thumb的内核) BX条件 Rn 其中Rn可以是 (r0~r15)中的任何一个. 这将通过拷贝 Rn 到 PC 来实现在 4GB 空间内的一个绝对跳转. 其中Rn 的 Bit-0 表明切换到何种状态. 状态切换 与程序状态切换相关的伪操作 CODE16伪操作 CODE32伪操作 分支交换示例 无交互子程序 实现一个通常的子程序调用需要如下两步: 保存返回地址到寄存器(LR) 跳转到对应的子程序地址 调用实现通常只需要一个指令: BL func2 返回实现通常只需从 LR 恢复 PC: MOV pc,lr 混合的ARM/Thumb子程序 在使用 C / C++ 写程序时,可以自由的编译为 ARM ( 使用armcc/armcpp) 或 Thumb ( 使用tcc/tcpp). 需要一些编译方法来解决在一种状态下的函数调用另一种状态下的函数的问题. 涉及到的问题: BL 不能完成状态切换 需要使用 BX 切换 BX 不能自动保存返回地址到 LR 需要其它方法来解决这个问题, BLX指令的引入 (ARM7不支持) 从子程序返回,要使用 BX LR 以便返回先前的状态 BL 在 Thumb 状态下可能设置了 LR 的 lsb (bit-0) 不能使用 MOV PC,LR 返回,因为不能实现状态切换 交互子程序 任何包含使用交互调用函数的 C 模块的编译必须使用 -apcs /interwork 命令行选项. 编译器将使用 BX 实现函数返回来替代 MOV PC,LR. 连接器生成一小段代码(‘veneers’)来改变状态 当发现交互调用时自动加入目标文件 使用 armlink -info veneers 可以看到加入的“ veneers”的大小。 ARM 4T架构对交互编译的影响 leaf function使用 BX 返回. Non_leaf function将被交互编译: 在入口处( 调用 BL 之前)压栈保护返回地址 在入口处保护所有函数使用的寄存器 使用 BX 实现返回操作 (替代弹出 PC). C 源代码 armcc -apcs /interwork tcc -apcs /interwork void func(void) func func { STMFD sp!,{r4-r11,lr} PUSH {r4-r7,lr} : : : sub(); BL sub BL sub : : : : LDMFD sp!,{r4-r11,lr} POP {r4-r7} } BX lr POP {r3} BX r3 汇编程序交互工作和Veneers 连接程序将会自动加入ARM / Thumb交互 veneers到汇编源代码. 主调程序需要: 使用 armasm -apcs /interwork 汇编 导出自己的符号, e.g. EXPORT ThumbSub 使用 BX 实现返回 主调程序使用 BL 指令调用子程序. Note: AREA 将包含: AREA Thum
您可能关注的文档
- 第6课洋务运动概要.ppt
- 第6课王安石变法概要.pptx
- 第6课海洋世界--四上概要.ppt
- 第6课甲午战争和八国联军侵华概要.ppt
- 第6课第3框共产党领导的多党合作和政治协商制度:中国特色社会主义政党制度课件人教版必修2概要.ppt
- 第6课罗马法的起源与发展修改概要.ppt
- 第6课冬阳童年骆驼队概要.ppt
- 第6课聪明以外的智慧概要.ppt
- 第6课近代前夜的发展与迟滞2015.9概要.ppt
- 第6课辽宋西夏金的并立概要.ppt
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
最近下载
- 2025年高考数学模拟卷(四)含答案及解析.pdf VIP
- 急性呼吸循环衰竭的早期识别与救治(共88张PPT)【88页】.pptx VIP
- 2023年河南省普通高校对口招生考试电子类专业课试卷.pdf VIP
- 院感及院感管理的基本概念.ppt VIP
- 维生素d3与骨骼健康课件.ppt
- 重点项目信息管理平台建设方案.docx
- 2025年高考数学模拟卷(三)含答案及解析.pdf VIP
- 河师大焦争鸣张万琴版线性代数答案解析.pdf VIP
- Unit4NaturalDisastersListeningandSpeaking课件高中英语人教版22.pptx
- 接受人生的荒谬是强大还是懦弱的表现?辩论赛 正方辩词一辩、二辩、三辩、四辩发言稿.docx
文档评论(0)