[发明专利]确定函数调用关系的方法、装置及系统有效
申请号: | 200910261275.X | 申请日: | 2009-12-24 |
公开(公告)号: | CN102109975A | 公开(公告)日: | 2011-06-29 |
发明(设计)人: | 李宁 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F9/34 |
代理公司: | 北京凯特来知识产权代理有限公司 11260 | 代理人: | 郑立明;焦丽 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 确定 函数 调用 关系 方法 装置 系统 | ||
1.一种确定函数调用关系的方法,其特征在于,包括:
从函数的当前代码段指令地址处开始向高地址方向搜索指令,获得所述函数的第一堆栈指针SP偏移值;
从所述代码段指令地址处开始向低地址方向搜索指令,获得所述函数的第二SP偏移值,以及获得保存函数返回地址的地址相对函数的栈帧的偏移值;
根据所述第一SP偏移值及第二SP偏移值获得所述函数的SP偏移值,当所述SP偏移值符合预设要求时,所述函数的堆栈指针指向所述函数的栈帧,根据所述函数的栈帧及所述保存函数返回地址的地址相对函数的栈帧的偏移值,得到所述函数的返回地址。
2.根据权利要求1所述的确定函数调用关系的方法,其特征在于,所述当前代码段指令地址包括函数异常时或调试函数时对应的代码段指令地址。
3.根据权利要求1所述的确定函数调用关系的方法,其特征在于,从函数的当前代码段指令地址处开始向高地址方向搜索指令,获得所述函数的第一SP偏移值,包括:
从函数的当前代码段指令地址PC处开始向高地址PC+n方向搜索指令,所述n值递增;
获得各栈调整指令中SP偏移值的累加和作为第一SP偏移值,所述第一SP偏移值为正值或负值。
4.根据权利要求1所述的确定函数调用关系的方法,其特征在于,从所述代码段指令地址处开始向低地址方向搜索指令,获得所述函数的第二SP偏移值,以及获得保存函数返回地址的地址相对函数的栈帧的偏移值,包括:
从函数的当前代码段指令地址PC处开始向低地址PC-m方向搜索指令,所述m值递减;
获得栈调整指令中SP偏移值作为第二SP偏移值,所述第二SP偏移值为正值或负值;
获得保存函数返回地址指令中偏移值,所述偏移值为保存函数返回地址的地址相对函数的栈帧的偏移。
5.根据权利要求1所述的确定函数调用关系的方法,其特征在于,所述SP偏移值的预设要求,包括:
SP向低地址方向增长时,所述SP偏移值的预设要求为所述SP偏移值为负值,所述函数的堆栈指针指向所述函数的栈帧;或者,
SP向高地址方向增长时,所述SP偏移值的预设要求为所述SP偏移值为正值,所述函数的堆栈指针指向所述函数的栈帧。
6.根据权利要求5所述的确定函数调用关系的方法,其特征在于,根据所述第一SP偏移值及第二SP偏移值获得所述函数的SP偏移值,当所述SP偏移值符合预设要求时,所述函数的堆栈指针指向所述函数的栈帧,包括:
获得函数异常时或调试函数时所述函数的堆栈指针;
将所述第一SP偏移值及第二SP偏移值累加获得所述函数的SP偏移值;
确定所述SP偏移值符合预设要求,所述函数的堆栈指针指向所述函数的栈帧。
7.根据权利要求6所述的确定函数调用关系的方法,其特征在于,所述方法还包括,根据所述第一SP偏移值及第二SP偏移值获得所述函数的SP偏移值,确定所述SP偏移值不符合预设要求:
根据所述第二SP偏移值调整所述函数的堆栈指针;
确定所述SP偏移值符合预设要求时,所述调整后的函数堆栈指针指向所述函数的栈帧。
8.一种确定函数调用关系的装置,其特征在于,包括:
前向搜索单元,用于从函数的当前代码段指令地址处开始向高地址方向搜索指令,获得所述函数的第一SP偏移值;
后向搜索单元,用于从所述代码段指令地址处开始向低地址方向搜索指令,获得所述函数的第二SP偏移值,以及获得保存函数返回地址的地址相对函数的栈帧的偏移值;
确定单元,用于根据所述第一SP偏移值及第二SP偏移值获得所述函数的SP偏移值,当所述SP偏移值符合预设要求时,所述函数的堆栈指针指向所述函数的栈帧,根据所述函数的栈帧及所述保存函数返回地址的地址相对函数的栈帧的偏移值,得到所述函数的返回地址。
9.根据权利要求8所述的确定函数调用关系的装置,其特征在于,所述前向搜索单元,包括:
第一搜索单元,用于从函数的当前代码段指令地址PC处开始向高地址PC+n方向搜索指令,所述n值递增;
第一获取单元,用于获得各栈调整指令中SP偏移值的累加和作为第一SP偏移值,所述第一SP偏移值为正值或负值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910261275.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:软管
- 下一篇:一种单控水龙头的预埋装置