[发明专利]一种静态存储分配的局部非静态数据的存储空间分配方法有效
申请号: | 201010546810.9 | 申请日: | 2010-11-16 |
公开(公告)号: | CN102467452A | 公开(公告)日: | 2012-05-23 |
发明(设计)人: | 于忠华;何燕;赵敬超 | 申请(专利权)人: | 北京中电华大电子设计有限责任公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100102 北京市朝阳*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 静态 存储 分配 局部 数据 存储空间 方法 | ||
1.一种静态存储分配的局部非静态数据的存储空间分配方法,其特征在于步骤如下:
(1).读入中间目标代码文件中的函数信息,建立函数链表,在函数链表的节点中存储函数信息;
(2).建立可分配数据空间链表,根据配置文件或输入参数中设置的可分配的数据空间信息,记录每一块可被分配的数据存储空间,并将其放在可分配数据空间链表中;
(3).建立函数调用关系链;
(4).为被多个函数调用关系链调用的函数的局部非静态数据分配不可被覆盖数据存储空间;
(5).从每个函数调用关系链的根函数开始,以函数调用关系链为单位为被单一函数调用关系链调用的函数的局部非静态数据分配可被覆盖数据存储空间。
2.如权利要求1所述的一种静态存储分配的局部非静态数据的存储空间分配方法,其特征在于步骤(3)进一步包括以下步骤:
(1)遍历函数链表,记录被调用的函数的函数名,建立被调用函数表;
(2)根据步骤(1)形成的记录,找出每个函数调用关系链表的根函数,给予一个数字编号;
(3)从每个根函数开始,形成函数调用关系链,将被调用函数的指针或位置信息填入调用函数的结构体中,并通过在被调用函数中记录函数调用关系链的根函数的编号,来确定该函数是否被多个函数调用关系链调用。
3.如权利要求1所述的一种静态存储分配的局部非静态数据的存储空间分配方法,其特征在于步骤(4)具体如下:
(1)遍历函数链表,如果函数记录的调用关系链的个数大于1,执行步骤(2)-(4);
(2)从可分配数据存储空间链表中找得合适的存储块进行相应的分配;
(3)将分配的数据存储空间从可分配数据存储空间链表中去除;
(4)将相关的分配信息记录入永久分配数据存储空间链表中。
4.如权利要求1或2所述的一种静态存储分配的局部非静态数据的存储空间分配方法,其特征在于每次被调用函数中记录的当前根函数的编号转换时,其内部记录的调用其的函数调用关系链的个数增加1,每个函数的调用关系链的个数的初始设定值为0。
5.如权利要求1所述的一种静态存储分配的局部非静态数据的存储空间分配方法,其特征在于判断一个函数是否被多个函数调用关系链调用的方法为:检查其内部记录的函数调用关系链的个数是否大于1。
6.如权利要求1所述的一种静态存储分配的局部非静态数据的存储空间分配方法,其特征在于其特征在于步骤(5)具体如下::
(1)若当前函数的局部非静态数据已经分配数据存储空间,返回;
(2)将当前可分配数据存储空间链表生成一副本,在副本中按照步骤(3)-(8)为函数的局部非静态数据分配数据存储空间;
(3)从当前函数调用关系链的已分配数据存储空间链表中查找是否有被当前函数直接或间接调用的函数的分配数据存储空间的信息,如果有,则将其与当前可分配数据存储空间副本中重合的部分填入一个新建的临时不可覆盖数据存储空间链表中;
(4)从当前可分配数据存储空间链表副本中去除步骤(3)中生成的临时不可覆盖数据存储空间链表中记录的所有的存储空间,在剩余的存储空间中为当前函数的局部非静态数据分配数据存储空间,将相关分配信息记录入当前函数调用关系链的已分配数据存储空间链表中,并将当前函数分配的数据存储空间从当前可分配数据存储空间链表副本中去除;
(5)将步骤(3)中生成的临时不可覆盖数据存储空间链表合并到步骤(4)操作后的当前可分配数据存储空间链表副本中;
(6)将步骤(5)操作后的当前可分配数据存储空间链表副本作为子函数的当前可分配数据存储空间链表,然后递归执行步骤(1)-(6),为当前函数调用的函数中未进行局部非静态数据存储分配的函数分配合适的数据存储空间,直到当前函数调用关系链中所有的函数的局部非静态数据都分配了数据存储空间为止;
(7)遍历当前函数调用关系链的已分配数据存储空间链表,合并整理出当前函数调用关系链使用的数据存储空间,从可分配数据存储空间链表中去除该部分数据空间;
(8)如果还有未进行局部非静态数据分配的函数调用关系链,按照上面步骤继续在可分配数据存储空间链表中进行分配。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京中电华大电子设计有限责任公司,未经北京中电华大电子设计有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010546810.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:用于造纸的方法和设备
- 下一篇:一种ATP再生系统及其应用