可执行文件的字节码优化方法、装置及电子设备制造方法及图纸

技术编号:43599002 阅读:28 留言:0更新日期:2024-12-11 14:47
本发明专利技术涉及计算机技术领域,公开了一种可执行文件的字节码优化方法、装置及电子设备。该方法包括对可执行文件的函数的字节码进行分块,获得多个程序块;在程序块内搜索到寄存器赋值常数指令时,判断寄存器赋值常数指令的后续指令中的寄存器是否替换为预设赋值常数;若替换,在程序块内判断寄存器赋值常数指令之后是否存在将第一寄存器作为源寄存器或目标寄存器的指令,得到初步删除优化判断结果;在程序块内判断寄存器赋值常数指令之后是否存在分支跳转出程序块的指令;若存在,则判断跳转至的程序块中是否存在将所述第一寄存器作为源寄存器的指令;若跳转至的程序块中存在将所述第一寄存器作为源寄存器的指令,则将寄存器赋值常数指令标记为不能删除优化指令,否则将寄存器赋值常数指令标记为目标删除优化指令;遍历每一个程序块,直至对每一个寄存器赋值常数指令判定完成并删除标记为目标删除优化指令的寄存器赋值常数指令。本发明专利技术中对各个函数的字节码进行寄存器赋值常数指令的删除优化,直接对已编译过的字节码进行优化,减小可执行文件大小提高执行速度。

【技术实现步骤摘要】

本专利技术涉及计算机,尤其涉及一种可执行文件的字节码优化方法、装置及电子设备


技术介绍

1、计算机或者虚拟机的指令集,有时候会为了适应不同的使用场景而进行修改。例如安卓的dalvik虚拟机指令集,dalvik虚拟机一般是运行在手机处理器上的,如果想在一个存储器资源和计算能力有限的mcu芯片上运行dalvik虚拟机,就需要考虑对dalvik虚拟机的指令集做一些改造。

2、比如dalvik虚拟机中有“if-test va,vb,+cccc”一类的指令,该指令比较寄存器va和vb,决定是否跳转,应用程序源码中,很多时候的写法是比较一个变量和一个常数,比如“if(var==3){...}”这种写法,编译器生成dalvik虚拟机的字节码时,需要先使用一个寄存器赋值常数指令,将常数3赋值到一个寄存器(假设为寄存器v1),然后再使用“if-testva,vb,+cccc”类指令比较var变量所在的寄存器(假设为v0)和v1,本例子中可以生成如下两个指令:const/4v1,0x3(v1寄存器赋值为3)、if-ne v0,v1,:xxxx(如果v0的值不等于本文档来自技高网...

【技术保护点】

1.一种可执行文件的字节码优化方法,其特征在于,包括:

2.如权利要求1所述的方法,其特征在于,所述获取可执行文件的函数并对所述函数的字节码进行分块,以获得多个程序块,包括:

3.如权利要求2所述的方法,其特征在于,所述根据所述函数的第一个指令以及排序后的X个所述跳转目标地址的指令确定多个程序块,包括:

4.如权利要求2所述的方法,其特征在于,所述根据所述函数的第一个指令以及排序后的X个所述跳转目标地址的指令确定多个程序块,包括:

5.如权利要求1所述的方法,其特征在于,所述在所述程序块内搜索到寄存器赋值常数指令时,判断所述寄存器赋值常数指...

【技术特征摘要】

1.一种可执行文件的字节码优化方法,其特征在于,包括:

2.如权利要求1所述的方法,其特征在于,所述获取可执行文件的函数并对所述函数的字节码进行分块,以获得多个程序块,包括:

3.如权利要求2所述的方法,其特征在于,所述根据所述函数的第一个指令以及排序后的x个所述跳转目标地址的指令确定多个程序块,包括:

4.如权利要求2所述的方法,其特征在于,所述根据所述函数的第一个指令以及排序后的x个所述跳转目标地址的指令确定多个程序块,包括:

5.如权利要求1所述的方法,其特征在于,所述在所述程序块内搜索到寄存器赋值常数指令时,判断所述寄存器赋值常数指令的后续指令中的寄存器是否替换为预设赋值常数,包括:

6.如权利要求1所述的方法,其特征在于,所述在所述程序块内判断所述寄存器赋值常数指令之后是否存在将第一寄存器作为...

【专利技术属性】
技术研发人员:严泽旭周杰肖灵董逢华
申请(专利权)人:武汉天喻信息产业股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1