第九章节 ARM程序设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九章节 ARM程序设计

9.1 ARM汇编器伪指令 符号定义伪指令 汇编控制伪指令 9.2 汇编语言语句格式 程序中的常量、变量 程序中常用符号代表地址、常量和变量 表达式与运算符 9.3 ARM汇编语言程序结构 子程序及其调用 9.4 ARM汇编语言与C/C++混合编程 ARM工程 完成应用所需的所有文件集合: 汇编源程序(.s),C语言源程序(.c),C++源文件(.cpp)以及头文件(.h) ARM程序框架 ATPCS概述 C和汇编语言的混合编程 寄存器的使用规则: 1. 子程序通过寄存器R0~R3来传递参数。这时寄存器可以记作:A0~A3 , 被调用的子程序在返回前无需恢复寄存器R0~R3的内容。 2. 在子程序中,使用R4~R11来保存局部变量,这时寄存器R4~R11可以记作: V1~V8 .如果在子程序中使用到V1~V8的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值,对于子程序中没有用到的寄存器则不必执行这些操作.在THUMB程序中,通常只能使用寄存器R4~R7来保存局部变量. 3.寄存器R12用作子程序间scratch寄存器,记作ip; 在子程序的连接代码段中经常会有这种使用规则. 4. 寄存器R13用作数据栈指针(SP),在子程序中寄存器R13不能用做其他用途. SP在进入子程序时的值和退出子程序时的值必须相等. 5. 寄存器R14用作连接寄存器(LR); 它用于保存子程序的返回地址,如果在子程序中保存了返回地址,则R14可用作其它的用途. 6. 寄存器R15是程序计数器(PC); 它不能用作其他用途. 7. ATPCS中的各寄存器在ARM编译器和汇编器中都是预定义的. ATPCS概述 数据栈的使用规则 ARM有以下4种数据栈指针:FD(Full Descending),ED(Empty Descending),FA(Full Ascending),EA(Empty Ascending) 。ATPCS规定数据栈为FD类型,并对数据栈的操作是8字节对齐的。 1.数据栈栈指针 stack pointer 指向最后一个写入栈的数据的内存地址。 2.数据栈的基地址 stack base 是指数据栈的最高地址。由于ATPCS中的数据栈是FD类型的,实际上数据栈中最早入栈数据占据的内存单元是基地址的下一个内存单元。 3.数据栈界限 stack limit 是指数据栈中可以使用的最低的内存单元地址。 4.已占用的数据栈 used stack 是指数据栈的基地址和数据栈栈指针之间的区域。其中包括数据栈栈指针对应的内存单元。 5.数据栈中的数据帧(stack frames) 是指在数据栈中,为子程序分配的用来保存寄存器和局部变量的区域。 ATPCS概述 参数的传递规则 1.参数个数可变的子程序参数传递规则 对于参数个数可变的子程序,当参数不超过4个时,可以使用寄存器R0~R3来进行参数传递。 如果参数多于4个,将剩余的字数据传送到数据栈中,入栈的顺序与参数顺序相反,即最后一个字数据先入栈。 2.参数个数固定的子程序参数传递规则 第一个整数参数通过寄存器R0~R3来传递,其他参数通过数据栈传递。 如果系统包含浮点运算的硬件部件,浮点参数将按照下面的规则传递:各个浮点参数按顺序处理;为每个浮点参数分配FP寄存器;分配的方法是,满足该浮点参数需要的且编号最小的一组连续的FP寄存器。 ATPCS概述 子程序结果返回规则 1.结果为一个32位的整数时,可以通过寄存器R0返回。 2.结果为一个64位整数时,可以通过R0和R1返回,依此类推。 3.结果为一个浮点数时,可以通过浮点运算部件的寄存器f0,d0或者s0来返回。 4.结果为一个复合的浮点数时,可以通过寄存器f0-fN或者d0~dN来返回。 5.对于位数更多的结果,需要通过调用内存来传递。 ATPCS概述 汇编语言源程序(指令、伪指令、宏) 汇编 目标程序 (机器码) ARM汇编器 ARM支持的伪指令 符号定义 数据定义 汇编控制 宏、宏指令 ARM汇编语言程序设计 语法规范 程序结构 与C/C++混合编程 C与汇编之间函数调用 C/C++内嵌汇编指令 汇编语言是一种面向CPU指令系统的程序设计语言。汇编语言具有以下两个特点: ⒈使用指令系统的助记符来表示操作码,易记、易读、易修改; ⒉采用符号地址表示操作数地址,给编程带来很大方便。 —— 汇编语言的最大优点是高效率:最快的运行速度和最省的空间占用。 伪指令是为方便编程而设计,并可表达程序信息(如内存分配、指定数据类型、说明程序结构等)。伪指令供汇编器使

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档