[发明专利]一种RISC处理器应用程序编译中立即数的锚地址装载方法有效
申请号: | 201110141121.4 | 申请日: | 2011-05-27 |
公开(公告)号: | CN102207882A | 公开(公告)日: | 2011-10-05 |
发明(设计)人: | 李春强;葛海通;严晓浪 | 申请(专利权)人: | 杭州中天微系统有限公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 杭州天正专利事务所有限公司 33201 | 代理人: | 王兵;王利强 |
地址: | 310012 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 risc 处理器 应用程序 编译 立即 锚地 装载 方法 | ||
1.一种RISC处理器应用程序编译中立即数的锚地址装载方法,其特征在于:所述应用程序包括代码段和数据段;
为应用程序的代码段分配一个通用寄存器存放代码段锚地址Rx,并将其初始化为代码段的基地址,当应用程序需要装载一个代码段符号地址立即数IAx时,采用公式(Rx)+{IAx-(Rx)}对应的处理器加法指令实现锚地址装载;
同时,为应用程序的数据段分配一个通用寄存器作为数据段锚地址Ry,并将其初始化为数据段基地址,当应用程序需要装载一个数据段符号地址立即数IAy时,采用公式(Ry)+{IAy-(Ry)}对应的处理器加法指令实现锚地址装载。
2.如权利要求1所述的RISC处理器应用程序编译中立即数的锚地址装载方法,其特征在于:所述锚地址装载方法包括以下步骤:
(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。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州中天微系统有限公司,未经杭州中天微系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110141121.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:多接点继电器
- 下一篇:空调冷凝水节能降温装置