- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
共95页 * 例、下面是一个汇编代码的函数,它引用了一个在其他文件中定义的全局变量globvar,将其加 2 后写回 globvar 。 AREA globals, CODE, READONLY EXPORT asmsubrouttine IMPORT globvar Asmsubrouttine LDR R1,=globvar LDR R0,[R1] ADD R0,R0,#2 STR R0,[R1] MOV PC,LR END 共95页 * 8.3 ARM程序框架 在应用系统的程序设计中,若所有的编程任务均用汇编语言来完成,其工作量是可想而知的,这样做也不利于系统升级或应用软件移植。 通常汇编语言部分完成系统硬件的初始化;高级语言部分完成用户的应用。 执行时,首先执行初始化部分,然后再跳转到 C/C++部分。程序的基本结构如下: 共95页 * 硬件初始化的汇编语言程序(特权模式) B main 完成用户任务的C/C++程序(用户模式) 共95页 * 8.3.1 初始化程序部分 通常,初始化过程大致会经历如下所示的一些模式变化。 由于在用于完成初始化任务的汇编语言程序中需要在特权模式下做一些诸如修改 CPSR 等特权操作,所以不能过早地进入用户模式。 共95页 * 8.3.2初始化部分与主应用程序部分的衔接 当所有的系统初始化工作完成之后,就需要把程序流程转入主应用程序。最简单的方法是,在汇编语言程序末尾使用跳转指令 B 或 BL 直接从启动代码转移到C/C++ 程序入口。 汇编语言程序: IMPORT main AREA Init, CODE, READONLY ENTRY LDR R0, =0X3FF0000 LDR R1, =0XE7FFFF80 STR R1, [R0] LDR SP, =0X3EE1000 BL main END C程序: void main(void) { ….. } 共95页 * 为方便工程开发,ARM 公司的开发环境 ARM ADS 为用户提供了一个可以选用的应用程序框架。该框架把为用户程序做准备工作的程序分成了启动代码和应用程序初始化两部分。 用于硬件初始化的汇编语言部分叫做启动代码;用于应用程序初始化的 C 部分叫做初始化部分。 8.3.3 ARM开发环境提供的程序框架 共95页 共95页 * 8.4 C与汇编之间的函数调用 在 ARM 工程中,C 程序调用汇编函数和汇编程序调用 C 函数是经常发生的事情。为此人们制定了 ARM-Thumb 过程调用标准 ATPCS(ARM-Thumb Procedure Call Standard)。 ATPCS 标准既是ARM 编译器使用的函数调用规则,也是设计可被 C 程序调用的汇编函数的编写规则。 共95页 * 1、堆栈与寄存器在函数调用中的作用 函数是通过寄存器和堆栈来传递参数和返回函数值的。 下面是C语言程序调用C函数的情况。 int AddInt(int x, int y) { int s; s = x + y; return s; } 8.4.1 ATPCS简介 void main(void) { …… AddInt(a,b); //调用 …… } 共95页 * 2、ATPCS关于堆栈和寄存器的使用规则 ATPCS 规定,ARM 的数据堆栈为 FD 型堆栈,即满递减堆栈。 3.2.6 批量加载 / 存储指令 4 种地址模式: LDMIA / STMIA increment after LDMIB / STMIB increment before LDMDA / STMDA decrement after LDMDB / STMDB decrement before IA r2 地址增长 方向 r3 r1 r2 r3 r1 r2 r3 r1 r2 r3 r1 r0 IB DA DB LDMxx r0, {r1,r2,r3} STMxx r0, {r1,r2,r3} 基址寄存器 (Rb) ARM 堆栈操作由块数据传输指令: STMFD (Push) 批存储 – 满递减
有哪些信誉好的足球投注网站
文档评论(0)