[发明专利]一种输出函数执行流的方法、系统和终端设备有效
申请号: | 201210064657.5 | 申请日: | 2012-03-13 |
公开(公告)号: | CN102646051A | 公开(公告)日: | 2012-08-22 |
发明(设计)人: | 刘骁 | 申请(专利权)人: | 深圳市融创天下科技股份有限公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518057 广东省深圳市南山区*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 输出 函数 执行 方法 系统 终端设备 | ||
1.一种输出函数执行流的方法,所述方法包括步骤:
编译源代码生成目标程序,修改所述目标程序并写入软中断号;
运行所述修改后的目标程序;
判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流。
2.根据权利要求1所述的输出函数执行流的方法,其特征在于,所述“编译源代码生成目标程序”包括:取消优化选项,编译源代码生成目标程序,生成所述源代码中所有函数被编译时的栈帧信息。
3.根据权利要求2所述的输出函数执行流的方法,其特征在于,所述“修改所述目标程序并写入软中断号”具体为:
查找目标程序中“将ip寄存器里的值减4保存到fp寄存器”指令的二进制数据;
向回查询“sp寄存器中的值保存到ip寄存器”指令的二进制数据;
将所述“sp寄存器中的值保存到ip寄存器”指令相对应的机器码修改为软中断号。
4.根据权利要求3所述的输出函数执行流的方法,其特征在于,所述“判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流”具体为:
获取LR寄存器的值;
将LR寄存器中的地址减4作为数据存取的地址,获取所述地址中的SWI软中断指令的24位数据;
判断所获取的24位数据是否为软中断号,如果是,则输出LR寄存器的值。
5.根据权利要求4所述的输出函数执行流的方法,其特征在于,所述步骤“判断所获取的24位数据是否为软中断号,如果是,则输出LR寄存器的值”之后还包括步骤:
将sp寄存器中的值保存到ip寄存器;
返回到LR寄存器的值上继续执行当前函数。
6.根据权利要求4所述的输出函数执行流的方法,其特征在于,所述步骤“判断所获取的24位数据是否为的软中断号,如果是,则输出LR寄存器的值”之后还包括步骤:
如果否,则跳转到系统本身的软中断处理程序的起始处。
7.一种输出函数执行流的系统,其特征在于,所述系统包括:编译模块、写软中断号模块、运行模块、判断模块和输出模块;
所述编译模块,与所述写软中断号模块相连,用于编译源代码生成目标程序;
所述写软中断号模块,与所述编译模块和运行模块相连,用于修改所述目标程序并写入软中断号;
所述运行模块,与所述写软中断号模块和判断模块相连,用于运行所述修改后的目标程序;
所述判断模块,与所述运行模块和输出模块相连,用于判断所述目标程序中的函数是否存在所述软中断号,若存在则通知所述输出模块;
所述输出模块,与所述判断模块相连,用于接收所述判断模块的通知,并输出所述函数的执行流。
8.根据权利要求7所述的输出函数执行流的系统,其特征在于,所述编译模块包括:栈帧信息单元、取消优选单元和生成目标单元;
所述栈帧信息单元,与所述取消优选单元相连,用于生成所述源代码中所有函数被编译时的栈帧信息;
所述取消优选单元,与所述栈帧信息单元和生成目标单元相连,用于取消优化选项;
所述生成目标单元,与所述取消优选单元和写软中断号模块相连,用于生成目标程序。
9.根据权利要求8所述的输出函数执行流的系统,其特征在于,所述写软中断号模块包括:第一查找单元、第二查找单元和修改单元;
所述第一查找单元,与所述第二查找单元和生成目标单元相连,用于查找目标程序中“ip寄存器里的值减4保存到fp寄存器”指令的二进制数据;
所述第二查找单元,与所述第一查找单元和修改单元相连,用于向回查询“sp寄存器中的值保存到ip寄存器”指令的二进制数据;
所述修改单元,与所述第二查找单元和运行模块相连,用于将所述“sp寄存器中的值保存到ip寄存器”指令相对应的机器码修改为软中断号。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市融创天下科技股份有限公司,未经深圳市融创天下科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210064657.5/1.html,转载请声明来源钻瓜专利网。