[发明专利]一种基于list文件任务最大堆栈深度的检测方法有效
申请号: | 201310746685.X | 申请日: | 2013-12-30 |
公开(公告)号: | CN103678137A | 公开(公告)日: | 2014-03-26 |
发明(设计)人: | 万丽景;杨孟飞;党纪红;董晓刚;关小川;陈尧;綦艳霞;顾斌;王政 | 申请(专利权)人: | 北京控制工程研究所 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 安丽 |
地址: | 100080 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种基于list文件任务最大堆栈深度的检测方法,首先分析list文件,提取出各函数分配堆栈的大小,生成任务入口函数及中断入口函数的最终函数调用关系树,其次根据各函数分配堆栈的大小及任务入口函数及中断入口函数的最终函数调用关系树,采用递归的方法检测出各任务的最大堆栈深度。本发明能够准确给出任务的最大堆栈深度,解决了动态分析方法往往检测不到最大堆栈深度的问题。 | ||
搜索关键词: | 一种 基于 list 文件 任务 最大 堆栈 深度 检测 方法 | ||
【主权项】:
一种基于list文件任务最大堆栈深度的检测方法,其特征在于步骤如下:1)分析list文件,获得所有函数及函数使用堆栈的大小;11)识别list文件中的代码段的范围;12)在代码段的起始和结束范围内,提取list文件包含的所有函数,并记录每个函数的名称及地址;13)在步骤12)提取的各函数包含的代码段范围内,查找改变寄存器窗口指令、弹出堆栈指令、预留堆栈指令;根据上述三个指令后的立即数,获得并记录各函数分配堆栈的大小;2)找出步骤12)提取的各函数中所有的任务入口函数及中断入口函数;3)创建任务入口函数的函数调用关系树;31)以步骤2)提取出的每个任务入口函数作为该函数调用关系树的顶层节点,在该任务入口函数包含的代码段范围内,查找list文件中的函数调用指令、跳转指令以及陷阱指令,得到该任务入口函数的下层调用函数作为顶层节点的子节点,生成新的函数调用关系树;32)在新的函数调用关系树的最底层子节点的代码段范围内,查找list文件中的函数调用指令、跳转指令以及陷阱指令,得到新的函数调用关系树的最底层子节点的下层调用函数;33)重复步骤32)直至当新的函数调用关系树的最底层子节点无函数调用指令、跳转指令以及陷阱指令,并建立任务入口函数的最终函数调用关系树;4)创建中断入口函数的函数调用关系树;41)以步骤12)提取出的每个中断入口函数作为该函数调用关系树的顶层节点,在该中断入口函数包含的代码段范围内,查找list文件中的函数调用指令、跳转指令以及陷阱指令,得到该中断入口函数的下层调用函数作为顶层节点的子节点,生成新的函数调用关系树;42)在新的函数调用关系树的最底层子节点的代码段范围内,查找list文件中的函数调用指令、跳转指令以及陷阱指令,得到新的函数调用关系树的最底层子节点的下层调用函数;43)重复步骤42)直至新的函数调用关系树的最底层子节点无函数调用指令、跳转指令以及陷阱指令,并建立中断入口函数的最终函数调用关系树;5)根据步骤3)以及步骤4)获得的最终函数调用关系树,获得各任务的最大堆栈深度;51)以任务入口函数为起点,以任务入口最终函数调用关系树为路径,采用递归的方式,获得各调用路径使用的堆栈大小;52)以中断入口函数为起点,以中断入口最终函数调用关系树为路径,采用递归的方式,获得各调用路径使用的堆栈大小;53)将任务入口函数各路径使用的最大堆栈与中断入口函数各路径使用的最大堆栈相加,作为任务使用的最大堆栈。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京控制工程研究所,未经北京控制工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310746685.X/,转载请声明来源钻瓜专利网。
- 上一篇:大型构件滚装装船方法
- 下一篇:一种轨道内置式驱动机构的控制方法