arm程序和thumb程序混合使用论文

arm程序和thumb程序混合使用论文

ID:2234563

大小:30.50 KB

页数:5页

时间:2017-11-15

arm程序和thumb程序混合使用论文_第1页
arm程序和thumb程序混合使用论文_第2页
arm程序和thumb程序混合使用论文_第3页
arm程序和thumb程序混合使用论文_第4页
arm程序和thumb程序混合使用论文_第5页
资源描述:

《arm程序和thumb程序混合使用论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、ARM程序和Thumb程序混合使用摘要:在编译或汇编时,使用intework告诉编译器或汇编器生成的目标代码遵守支持ARM程序和THUMB程序混合使用的ATPCS,以下主要是对ATPCS的概述、对基本ATPCS进行了描述以及对ATPCS的分类。关键字:ATPCS、寄存器、数据栈Abstract:inthecompilerorassembler,useinteworktoldthecompilerorassemblercodegeneratedbythetargetTHUMBprocedureandprogramsupportAR

2、MATPCScombinations,belowismainlytotheATPCSoverviewofthebasicATPCS,aredescribed,andtheclassificationofATPCS.Keywords:ATPCS,register,datastack为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则.ATPCS就是ARM程序和THUMB程序中子程序调用的基本规则:一.ATPCS概述      ATPCS规定了一些子程序之间调用的基本规则.这些基本规则包括子程序

3、调用过程中寄存器的使用规则,数据栈的使用规则,参数的传递规则.为适应一些特定的需要,对这些基本的调用规则进行一些修改得到几种不同的子程序调用规则,这些特定的调用规则包括:    支持数据栈限制检查的ATPCS.支持只读段位置无关的ATPCS.支持可读写段位置无关的ATPCS.支持ARM程序和THUMB程序混合使用的ATPCS.处理浮点运算的ATPCS...      有调用关系的所有子程序必须遵守同一种ATPCS.编译器或者汇编器在ELF格式的目标文件中设置相应的属性,标识用户选定的ATPCS类型.对应不同类型的ATPCS规则,

4、有相应的C语言库,连接器根据用户指定的ATPCS类型连接相应的C语言库...      使用ADS的C语言编译器编译的C语言子程序满足用户指定的ATPCS类型.而对于汇编语言程序来说,完全要依赖用户来保证各子程序满足选定的ATPCS类型.具体来说,汇编语言子程序必须满足下面三个条件:在子程序编写时必须遵守相应的ATPCS规则;数据栈的使用要遵守ATPCS规则;在汇编编译器中使用-apcs选项...二.基本ATPCS       基本ATPCS规定了在子程序调用时的一些基本规则,包括以下三个方面的内容:各寄存器的使用规则及其相应的

5、名字;数据栈的使用规则;参数传递的规则.相对于其他类型的ATPCS,满足基本ATPCS的程序的执行速度更快,所占用的内存更少.但是它不能提供以下的支持:ARM程序和THUMB程序相互调用;数据以及代码的位置无关的支持;子程序的可重入性;数据栈检查的支持.而派生的其他几种特定的ATPCS就是在基本ATPCS的基础上再添加其他的规则而形成的.其目的就是提供上述的功能...     寄存器的使用规则:     1.子程序通过寄存器R0~R3来传递参数.这时寄存器可以记作:A0~A3,被调用的子程序在返回前无需恢复寄存器R0~R3的内容

6、.     2.在子程序中,使用R4~R11来保存局部变量,这时寄存器R4~R11可以记作:V1~V8.如果在子程序中使用到V1~V8的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值,对于子程序中没有用到的寄存器则不必执行这些操作.在THUMB程序中,通常只能使用寄存器R4~R7来保存局部变量.     3.寄存器R12用作子程序间scratch寄存器,记作ip;在子程序的连接代码段中经常会有这种使用规则.     4.寄存器R13用作数据栈指针,记做SP,在子程序中寄存器R13不能用做其他用途.

7、寄存器SP在进入子程序时的值和退出子程序时的值必须相等.     5.寄存器R14用作连接寄存器,记作lr;它用于保存子程序的返回地址,如果在子程序中保存了返回地址,则R14可用作其它的用途.     6.寄存器R15是程序计数器,记作PC;它不能用作其他用途.     7.ATPCS中的各寄存器在ARM编译器和汇编器中都是预定义的.     数据栈的使用规则     栈指针通常可以指向不同的位置.当栈指针指向栈顶元素(即最后一个入栈的数据元素)时,称为FULL栈.当栈指针指向与栈顶元素相邻的一个元素时,称为Empty栈.数据栈

8、的增长方向也可以不同.当数据栈向内存减小的地址方向增长时,称为Descending栈;当数据栈向着内存地址增加的方向增长时,称为Ascending栈.综合这两种特点可以由以下4种数据栈:FDEDFAEA.ATPCS规定数据栈为FD类型,并对数据栈的操作是8字节对

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。