[发明专利]一种栈解析方法和装置有效
申请号: | 201611145387.5 | 申请日: | 2016-12-13 |
公开(公告)号: | CN106802785B | 公开(公告)日: | 2019-07-09 |
发明(设计)人: | 殷罗英;李祥云;王超 | 申请(专利权)人: | 北京华为数字技术有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
地址: | 100085 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 解析 方法 装置 | ||
1.一种栈解析方法,其特征在于,应用于一个线程所对应的栈,所述栈中具有多个栈帧,所述方法包括:
获取第一栈帧的最低位地址,所述第一栈帧为所述多个栈帧中的一个栈帧,所述第一栈帧为用于保存第一函数私有资源的栈帧,所述第一函数为所述线程使用到的一个函数;
根据所述第一栈帧的最低位地址,从第一栈帧中获取第二函数的指令地址,所述第二函数用于在所述线程中调用第一函数,所述第二函数的指令地址用于指示第二函数调用第一函数的调用关系;
根据固定偏移以及所述第一栈帧的最低位地址所指示的位置,从所述第一栈帧中获取第一栈帧的长度信息;
根据所述第一栈帧的最低位地址以及所述第一栈帧的长度信息确定出第二栈帧的最低位地址,所述第二栈帧为用于保存第二函数私有资源的栈帧。
2.根据权利要求1所述的方法,其特征在于,所述获取第一栈帧的最低位地址,包括:
从所述第一栈帧对应的栈指针SP寄存器中获取所述第一栈帧的最低位地址。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
将所述第二栈帧的最低位地址保存到所述第二栈帧对应的SP寄存器中。
4.根据权利要求1所述的方法,其特征在于,所述第一栈帧为处于所述栈最内层的栈帧。
5.根据权利要求1所述的方法,其特征在于,还包括:
执行移动指令,所述移动指令用于指示将所述第一栈帧的长度信息压到所述第一栈帧中;
在所述第一栈帧中与所述第一栈帧最低位地址距离所述固定偏移设置一个地址空间;
在所述地址空间中存储所述第一栈帧的长度信息。
6.一种栈解析装置,其特征在于,应用于一个线程所对应的栈,所述栈中具有多个栈帧,所述装置包括获取单元、指令地址单元、长度信息单元和确定单元:
所述获取单元,用于获取第一栈帧的最低位地址,所述第一栈帧为所述多个栈帧中的一个栈帧,所述第一栈帧为用于保存第一函数私有资源的栈帧,所述第一函数为所述线程使用到的一个函数;
所述指令地址单元,用于根据所述第一栈帧的最低位地址,从第一栈帧中获取第二函数的指令地址,所述第二函数用于在所述线程中调用第一函数,所述第二函数的指令地址用于指示第二函数调用第一函数的调用关系;
所述长度信息单元,用于根据固定偏移以及所述第一栈帧的最低位地址所指示的位置,从所述第一栈帧中获取第一栈帧的长度信息;
所述确定单元,用于根据所述第一栈帧的最低位地址以及所述第一栈帧的长度信息确定出第二栈帧的最低位地址,所述第二栈帧为用于保存第二函数私有资源的栈帧。
7.根据权利要求6所述的装置,其特征在于,所述获取单元具体用于从所述第一栈帧对应的栈指针SP寄存器中获取所述第一栈帧的最低位地址。
8.根据权利要求6或7所述的装置,其特征在于,还包括保存单元:
所述保存单元,用于将所述第二栈帧的最低位地址保存到所述第二栈帧对应的SP寄存器中。
9.根据权利要求6所述的装置,其特征在于,所述第一栈帧为处于所述栈最内层的栈帧。
10.根据权利要求6所述的装置,其特征在于,还包括执行单元、设置单元和存储单元:
所述执行单元,用于执行移动指令,所述移动指令用于指示将所述第一栈帧的长度信息压到所述第一栈帧中;
所述设置单元,用于在所述第一栈帧中与所述第一栈帧最低位地址距离所述固定偏移设置一个地址空间;
所述存储单元,用于在所述地址空间中存储所述第一栈帧的长度信息。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京华为数字技术有限公司,未经北京华为数字技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611145387.5/1.html,转载请声明来源钻瓜专利网。