[发明专利]一种RISC处理器应用程序编译中立即数的锚地址装载方法有效
申请号: | 201110141121.4 | 申请日: | 2011-05-27 |
公开(公告)号: | CN102207882A | 公开(公告)日: | 2011-10-05 |
发明(设计)人: | 李春强;葛海通;严晓浪 | 申请(专利权)人: | 杭州中天微系统有限公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 杭州天正专利事务所有限公司 33201 | 代理人: | 王兵;王利强 |
地址: | 310012 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 risc 处理器 应用程序 编译 立即 锚地 装载 方法 | ||
技术领域
本发明涉及RISC处理器应用程序的编译和链接技术领域,尤其是一种应用程序编译中立即数的锚地址装载方法。
背景技术
在基于RISC处理器的嵌入式系统开发中,处理器编译和链接是必不可少的工具,编译模块将用户高级语言(一般为C/C++语言)编写而成的代码转换为处理器可识别的二进制代码,链接模块则将多个这样的二进制代码模块一起链接成为可以在处理器上运行的二进制可以执行程序。由于32位RISC架构处理器无法直接在指令中编码32位地址立即数,所以当前业内RISC架构处理器都是通过访问内存指令如LOAD指令来完成装载地址立即数,存在效率低和代码密度低的问题。目前RISC处理器应用程序的编译链接中,地址立即数装载主要采用处理器的访问内存指令,如LOAD指令完成。
嵌入式RISC处理器的访问内存指令一般需要占用外部数据地址总线,需要多个周期完成,从而导致该指令比一般的运算类,如加法指令运行效率更低。所以通过访问内存指令来装载地址立即数虽然实现简单,但是效率低,除了访问内存指令外,还需要额外的空间来存放32位的地址立即数。
发明内容
为了克服已有RISC处理器应用程序编译中立即数装载方法的工作效率低、占用额外的存储空间、实时性差的不足,本发明提供一种提升工作效率、不需要消耗额外内存空间、实时性良好的RISC处理器应用程序编译中立即数的锚地址装载方法。
本发明解决其技术问题所采用的技术方案是:
一种RISC处理器应用程序编译中立即数的锚地址装载方法,所述应用程序包括代码段和数据段;
为应用程序的代码段分配一个通用寄存器存放代码段锚地址Rx,并将其初始化为代码段的基地址,当应用程序需要装载一个代码段符号地址立即数IAx时,采用公式(Rx)+{IAx-(Rx)}对应的处理器加法指令实现锚地址装载;
同时,为应用程序的数据段分配一个通用寄存器作为数据段锚地址Ry,并将其初始化为数据段基地址,当应用程序需要装载一个数据段符号地址立即数IAy时,采用公式(Ry)+{IAy-(Ry)}对应的处理器加法指令实现锚地址装载。
进一步,所述锚地址装载方法包括以下步骤:
(1)为应用程序分配两个寄存器Rx,Ry,分别用于存放代码段锚地址和数据段锚地址;
(2)定义代码段地址立即数锚地址装载的重定位信息数组ARx,并做初始化;如果应用程序的代码段的地址Lx处需要装载属于代码段的地址立即数IAx到寄存器Rm,则生成一个代码段重定位信息RELx存放在数组ARx中,该信息包含需要重定位的代码段地址Lx,代码段符号地址立即数IAx和寄存器Rm;
(3)定义代码段地址立即数锚地址装载的重定位信息数组ARy,并做初始化;如果处理器应用程序的代码段的地址Ly处需要装载属于数据段的地址立即数IAy到寄存器Rn,则生成一个数据段重定位信息RELy存放在数组ARy中,该信息包含需要重定位的代码段地址Ly,数据段符号地址立即数IAy和寄存器Rn;
(4)对各输入文件的代码段和数据段进行链接,将链接结果重新输出到目标应用程序的代码段和数据段,并暂存输出目标应用程序的代码段锚地址为At和数据段锚地址为Ad;
(5)对各输入的代码段和数据段进行链接时,扫描步骤(2)输出的重定位信息数组ARx,对数组中每个代码段重定位信息RELx做如下操作:
(5.1)根据步骤(2)中生成的RELx所包含的IAx和步骤(4)中暂存的At,计算IAx-At,暂存为代码段立即数偏移量OFFSETx;
(5.2)在RELx包含的Lx处,生成Rm<-(Rx)+OFFSETx对应的处理器加法指令;
(6)对各输入的代码段和数据段进行链接时,扫描步骤(3)输出的重定位信息数组ARy,对数组中每个数据段重定位信息RELy做如下操作:
(6.1)根据步骤(3)中生成的RELy所包含的IAy和步骤(4)中暂存的Ad,计算IAy-Ad,暂存为数据段立即数偏移量OFFSETy;
(6.2)在RELy包含数的Ly处,生成Rn<-(Ry)+OFFSETy对应的处理器加法指令;
(7)将步骤(1)的Rx初始化为步骤(4)暂存的代码段锚地址At,步骤(1)的Ry初始化为步骤(4)暂存的数据段锚地址Ad。
本发明的有益效果主要表现在:
1)对地址立即数的装载不涉及访问内存,应用程序的运行效率高;
2)不需要消耗额外的内存空间,提高了应用程序的代码密度;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州中天微系统有限公司,未经杭州中天微系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110141121.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:多接点继电器
- 下一篇:空调冷凝水节能降温装置