[发明专利]调用指令的优化方法、装置、设备和存储介质有效
申请号: | 201911326434.X | 申请日: | 2019-12-20 |
公开(公告)号: | CN111090466B | 公开(公告)日: | 2022-03-18 |
发明(设计)人: | 杨志谦 | 申请(专利权)人: | 北京字节跳动网络技术有限公司 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F8/41 |
代理公司: | 北京锺维联合知识产权代理有限公司 11579 | 代理人: | 金爱静 |
地址: | 100041 北京市石景山区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 调用 指令 优化 方法 装置 设备 存储 介质 | ||
本申请涉及调用指令的优化方法、装置、设备和存储介质。该方法包括:确定出目标调用指令,以及目标调用指令所对应的目标指令描述特征,所述目标指令描述特征至少表征运行目标调用指令所需参数的第一参数特征,以及所需返回值的第二参数特征;检测目标调用指令在运行过程中所述操作数栈的栈存储状态的变化特征;基于运行目标调用指令所需参数的第一参数特征和所需返回值的第二参数特征,以及所述操作数栈的栈存储状态的变化特征确定出目标调用指令运行的开始位置和/或结束位置,如此,便于基于确定出的开始位置和/或结束位置对目标调用指令进行优化处理,为最大化优化调用指令奠定了基础。
技术领域
本申请涉及计算机领域,特别是涉及一种调用指令的优化方法、装置、设备和存储介质。
背景技术
项目开发中,研发人员经常会写一些调用指令(如Log调用指令)或者一些线下才能使用的调用指令,这些调用指令对应的代码通常不会在线上的场景中使用,但是,会将这些代码经过编译发布至线上的程序包中,这样,一方面会导致包体积增大;另一方面,会拖慢运行效率,如某些Log调用代码会非常耗时;再有,还会带来安全问题,如利用Log调用指令对应的日志或者反编译能够看到内部代码。
针对上述问题,虽然存在优化方案,如开源库-proguard能够优化一些方法调用指令,但其原理也仅仅是将一条调用指令删掉,再添加pop指令来平衡操作数栈,这样,只能确保指定方法中删除了一条调用指令,但依然会遗留该删除的调用指令所对应的其他指令,如参数构建指令,这些参数构建指令在包体积中占比较大,而且,还会产生Log调用指令的相关数据,使用逆向方式依然能找到对应的Log调用指令,依然存在安全问题。
发明内容
为解决上述问题,本发明提出了一种调用指令的优化方法、装置、设备和存储介质,如此,便于基于确定出的开始位置和/或结束位置对目标调用指令进行优化处理,为最大化优化调用指令奠定了基础。
第一方面,本申请实施例提供一种调用指令的优化方法,包括:
确定出目标调用指令,以及目标调用指令所对应的目标指令描述特征,所述目标指令描述特征至少表征运行目标调用指令所需参数的第一参数特征,以及所需返回值的第二参数特征;其中,所述目标调用指令在运行过程中能够基于第一参数特征从操作数栈中读取所需参数,以及基于第二参数特征将所需输出的返回值存入所述操作数栈;
检测目标调用指令在运行过程中所述操作数栈的栈存储状态的变化特征;
基于运行目标调用指令所需参数的第一参数特征和所需返回值的第二参数特征,以及所述操作数栈的栈存储状态的变化特征确定出目标调用指令运行的开始位置和/或结束位置,其中,基于确定出的开始位置和/或结束位置能够完成对目标调用指令的优化处理。
这里,由于本申请方案能够确定出目标调用指令所需参数以及所需返回值的参数特征,且在目标调用指令的运行过程中操作数栈的栈存储状态会随着所需参数和/或返回值的出栈、进栈而变化,所以,基于此,本申请方案能够确定出目标调用指令运行的开始位置和/或结束位置,如此,便于基于开始位置和/或结束位置对目标调用指令进行优化处理,为最大化优化调用指令奠定了基础。
而且,由于本申请方案能够确定出目标调用指令运行的开始位置和/或结束位置,所以,与现有仅能优化一条调用指令的方法相比,本申请方案能够优化目标调用指令所运行的全部程序,且该全部程序中既能够包含调用指令所对应的全部指令(如参数构造指令等),也能够包含目标调用指令所生成的相关数据和/或目标调用指令所对应的其他调用指令所生成的相关数据,如此,进一步为最大化优化调用指令奠定了基础,为降低线上程序的包体积奠定了基础,同时,也为提高线上程序的运行效率,以及程序安全性奠定了基础。
在一具体实施例中,所述检测目标调用指令在运行过程中所述操作数栈的栈存储状态的变化特征,包括:
获取目标调用指令运行前所述操作数栈的第一栈存储状态特征;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京字节跳动网络技术有限公司,未经北京字节跳动网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911326434.X/2.html,转载请声明来源钻瓜专利网。