[发明专利]为多镜像文件分配内存地址空间的方法、编译器和系统有效
申请号: | 201210194345.6 | 申请日: | 2012-06-13 |
公开(公告)号: | CN102750364A | 公开(公告)日: | 2012-10-24 |
发明(设计)人: | 钟云德;周巍 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F12/08;G06F9/45 |
代理公司: | 北京中博世达专利商标代理有限公司 11274 | 代理人: | 申健 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多镜像 文件 分配 内存 地址 空间 方法 编译器 系统 | ||
技术领域
本发明涉及计算机技术领域,尤其涉及为多镜像文件分配内存地址空间的方法、编译器和系统。
背景技术
在编写源码时通常采用高级语言进行编写,如C语言、C++等,但是,计算机能够运行的只有机器语言,因此,需要对源码进行编译链接,生成能够被计算机运行的机器语言。源码经过编译器编译链接产生的目标文件称之为Image(镜像文件),Image由节区(section)组成,节区是编译器链接的一种属性,用于对全局符号(变量、函数)进行分组,实现符号存储地址指定。在编译链接过程中使用LSP(linker script链接脚本)规定如何把源文件内的节区放入Image内,并控制Image内各部分在内存地址空间内的布局。为了方便、有效的在现有的内存芯片上部署更多的业务软件,内存芯片地址空间资源的有效利用显得尤为重要。
现有技术中,在为多个业务软件分配内存地址空间时,为了避免不同Image使用的内存地址空间发生交叠,都是预先为各个Image分配内存地址空间,再对每个源文件进行编译链接使生成的Image使用预先被分配的内存地址空间。
上述分配内存地址空间资源的方法,预先为每个Image划分的内存地址空间通过用户经验给出,不能保证分配给每个Image的内存地址空间与该Image的大小相适应,容易出现分配给某个Image的内存地址空间不够或较多的情况。如果分配给某个Image的内存地址空间不够,则必须重新为每个Image分配内存地址空间,否则,内存地址空间不够的Image对应的业务无法实现,耗费巨大工作量;如果分配给某个Image的内存地址空间较多,虽然不重新为每个Image分配内存地址空间,也能够实现内存地址空间较多的Image对应的业务,但会导致内存地址碎片存在,造成内存地址空间的浪费。
发明内容
本发明的实施例提供一种为多镜像文件分配内存地址空间的方法、编译器和系统,能够充分利用内存地址空间。
为达到上述目的,本发明的实施例采用如下技术方案:
一方面,一种为多镜像文件分配内存地址空间的方法,包括:
根据前一个源文件的镜像文件所需的内存地址空间及前一个源文件的可用内存地址范围计算当前待处理源文件的可用内存地址范围;
根据当前所述待处理源文件的可用内存地址范围生成所述当前待处理源文件的链接脚本,使生成的链接脚本中记录的存放镜像文件的起始内存地址为所述当前待处理源文件的可用内存地址范围的起始地址;
使用生成的链接脚本对所述当前待处理源文件进行编译链接,生成所述当前待处理源文件的镜像文件。
进一步可选的,在所述根据前一个源文件的镜像文件所需的内存地址空间及前一个源文件的可用内存地址范围计算当前待处理源文件的可用内存地址范围之前,所述方法还包括:
根据前一个源文件的镜像文件包含的各个节区的大小计算前一个源文件的镜像文件所需的内存地址空间。
进一步可选的,所述从前一个源文件的可用内存地址范围中去除前一个源文件的镜像文件所需的内存地址空间包括:
确定前一个源文件的可用内存地址范围的起始地址;
从所述起始地址开始,去除前一个源文件的镜像文件所需的内存地址空间。
进一步可选的,所述根据当前待处理源文件的可用内存地址范围生成所述当前待处理源文件的链接脚本包括:
将所述当前待处理源文件中各个节区的共享属性添加到所述当前待处理源文件中;
根据所述当前待处理源文件中各个节区的共享属性和所述当前可用内存地址范围生成所述当前待处理源文件的链接脚本;或者,
根据当前可用内存地址范围修改预设链接脚本中记录的存放镜像文件的起始内存地址,得到所述当前待处理源文件的链接脚本。
进一步可选的,所述根据当前待处理源文件的可用内存地址范围生成所述当前待处理源文件的链接脚本包括:
根据所述当前待处理源文件中每个节区的大小确定所述当前待处理源文件的链接脚本中记录的存放所述每个节区的起始内存地址。
另一方面,一种编译器,包括:
第一计算单元,用于根据前一个源文件的镜像文件所需的内存地址空间及前一个源文件的可用内存地址范围计算当前待处理源文件的可用内存地址范围,将得到的所述当前待处理源文件的可用内存地址范围发送至生成单元;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210194345.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种吉他架的自锁式上托叉
- 下一篇:一种伞形架枪装置