代码编译方法、装置、设备及介质制造方法及图纸

技术编号:35898249 阅读:12 留言:0更新日期:2022-12-10 10:33
本发明专利技术涉及编译器技术领域,公开了一种代码编译方法、装置、设备及介质,其方法包括:获取待编译的汇编代码;基于预设的搜索算法,获取所述汇编代码中达到预设标准的目标代码变量块;将所述目标代码变量块进行封装,确定对应的宏函数;基于所述宏函数,执行代码编译。本发明专利技术通过将待编译的汇编代码进行相同目标代码变量块合并的优化,采用预设的搜索算法确定具有一致性的目标代码变量块,并基于该目标代码变量块进行封装确定进行编译的宏函数,极大地提高了程序查找的速度,并减少了代码指令字节总数,减少了程序内存,加快了运行速度,进一步地提高了汇编语言的编译效率。步地提高了汇编语言的编译效率。步地提高了汇编语言的编译效率。

【技术实现步骤摘要】
代码编译方法、装置、设备及介质


[0001]本专利技术涉及编译器
,尤其涉及一种代码编译方法、装置、设备及介质。

技术介绍

[0002]C51语言是一种结构化程序设计语言,具有丰富的运算符和数据类型,便于实现各类复杂的数据结构,另外,它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C51语言实现了对硬件的编程操作,集高级语言和低级语言的功能于一体,另外,C51语言具有效率高,可移植性强等特点,因此,可以广泛地移植到各种平台的计算机或单片机上。
[0003]C51编译器的编译效率是衡量一个编译器好坏的重要指标,现有的C51语言在使用过程中因为会对相同的代码块进行重复编译,所以就造成编译器进行编译的指令字节数过多、编译出来二进制文件大、程序占用空间大、运行速度慢,编译器性能低等问题,进一步地,编译语言进行程序编译的编译效率低。

技术实现思路

[0004]本专利技术的主要目的在于提出一种代码编译方法、装置、设备及介质,旨在提高程序编译的编译效率。
[0005]为实现上述目的,本专利技术提供一种代码编译方法,所述代码编译方法,包括:
[0006]获取待编译的汇编代码;
[0007]基于预设的搜索算法,获取所述汇编代码中达到预设标准的目标代码变量块;
[0008]将所述目标代码变量块进行封装,确定对应的宏函数;
[0009]基于所述宏函数,执行代码编译。
[0010]优选地,所述基于预设的搜索算法,获取所述汇编代码中达到预设标准的目标代码变量块的步骤,包括:
[0011]获取所述汇编代码中每行代码对应的代码行Hash值以及代码块,并确定将所述代码块进行排序的第一顺序;
[0012]基于所述第一顺序,根据所述代码行Hash值对所述代码行进行比较搜索,确定所述代码块中达到第一预设标准的第一代码变量块;
[0013]生成所述第一代码变量块对应的第一代码变量块Hash值,并确定所述第一代码变量块进行排列的第二顺序;
[0014]基于所述第二顺序,根据所述第一代码变量块Hash值对所述第一代码变量块与所述代码块进行比较搜索,确定所述第一代码变量块中达到第二预设标准的第二代码变量块;
[0015]将所述第二代码变量块与所述第一代码变量块对应的Hash值进行比较搜索,确定对应的目标代码变量块。
[0016]优选地,在所述基于预设的搜索算法,获取所述汇编代码中达到预设标准的目标代码变量块的步骤之前,所述代码编译方法,还包括:
[0017]对所述汇编代码进行解析,获取汇编代码的解析信息;
[0018]根据所述解析信息中的功能语句划分所述汇编代码,生成包含若干代码行的代码块;
[0019]对所述代码块中的每行代码行生成一个对应的代码行Hash值;
[0020]获取所述代码块中每一行的指令字节数,将所述代码块根据所述指令字节数进行排序。
[0021]优选地,所述对所述代码块中的每行代码行生成一个对应的代码行Hash值的步骤,包括:
[0022]将所述代码行对应的汇编指令映射成二进制整型;
[0023]基于所述二进制整型,与预设的种子SEED进行异或操作,获得所述代码行的汇编指令对应的Hash值。
[0024]优选地,在所述确定对应的目标代码变量块的步骤之后,所述代码编译方法,还包括:
[0025]对所述目标代码变量块进行优化评估;
[0026]若所述目标代码变量块的指令字节数大于原代码块的指令字节数,则删除所述目标代码块;
[0027]若所述目标代码变量块的指令字节数小于原代码块的指令字节数,则保留所述目标代码块。
[0028]优选地,所述将所述目标代码变量块进行封装,确定对应的宏函数的步骤,包括:
[0029]获取所述目标代码变量块ID;
[0030]基于所述目标代码变量块ID,确定所述宏函数的函数入口,并根据所述宏函数的函数入口连接所述目标代码变量块,确定所述目标代码变量块对应的宏函数。
[0031]优选地,所述基于所述宏函数,执行代码编译的步骤,包括:
[0032]基于预设的跳转指令连接所述宏函数的宏函数入口,并通过所述宏函数入口执行所述宏函数的内部汇编指令;
[0033]基于预设的返回指令,返回预设的代码块跳转指令对应的汇编语句,并执行所述汇编语句。
[0034]此外,为实现上述目的,本专利技术实施例还提出一种代码编译装置,所述代码编译装置包括:
[0035]代码获取模块,用于获取待编译的汇编代码;
[0036]代码搜索合并模块,用于基于预设的搜索算法,获取所述汇编代码中达到预设标准的目标代码变量块;
[0037]代码封装模块,用于将所述目标代码变量块进行封装,确定对应的宏函数;
[0038]执行编译模块,用于基于所述宏函数,执行代码编译。
[0039]优选地,所述代码获取模块,包括:
[0040]对所述汇编代码进行解析,获取汇编代码的解析信息;
[0041]根据所述解析信息中的功能语句划分所述汇编代码,生成包含若干代码行的代码块;
[0042]对所述代码块中的每行代码行生成一个对应的代码行Hash值;
[0043]获取所述代码块中每一行的指令字节数,将所述代码块根据所述指令字节数进行排序。
[0044]优选地,所述代码获取模块,还包括:
[0045]将所述代码行对应的汇编指令映射成二进制整型;
[0046]基于所述二进制整型,与预设的种子SEED进行异或操作,获得所述代码行的汇编指令对应的Hash值。
[0047]优选地,所述代码搜索合并模块,包括:
[0048]获取所述汇编代码中每行代码对应的代码行Hash值以及代码块,并确定将所述代码块进行排序的第一顺序;
[0049]基于所述第一顺序,根据所述代码行Hash值对所述代码行进行比较搜索,确定所述代码块中达到第一预设标准的第一代码变量块;
[0050]生成所述第一代码变量块对应的第一代码变量块Hash值,并确定所述第一代码变量块进行排列的第二顺序;
[0051]基于所述第二顺序,根据所述第一代码变量块Hash值对所述第一代码变量块与所述代码块进行比较搜索,确定所述第一代码变量块中达到第二预设标准的第二代码变量块;
[0052]将所述第二代码变量块与所述第一代码变量块对应的Hash值进行比较搜索,确定对应的目标代码变量块。
[0053]优选地,所述代码封装模块,包括:
[0054]获取所述目标代码变量块ID;
[0055]基于所述目标代码变量块ID,确定所述宏函数的函数入口,并根据所述宏函数的函数入口连接所述目标代码变量块,确定所述目标代码变量块对应的宏函数。
[0056]优选地,所述执行编译模块,包括:
[0057]基于预设的跳转指令连接所述宏函数的宏函数入口,并通过所述宏本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码编译方法,其特征在于,所述代码编译方法,包括:获取待编译的汇编代码;基于预设的搜索算法,获取所述汇编代码中达到预设标准的目标代码变量块;将所述目标代码变量块进行封装,确定对应的宏函数;基于所述宏函数,执行代码编译。2.如权利要求1所述的代码编译方法,其特征在于,所述基于预设的搜索算法,获取所述汇编代码中达到预设标准的目标代码变量块的步骤,包括:获取所述汇编代码中每行代码对应的代码行Hash值以及代码块,并确定将所述代码块进行排序的第一顺序;基于所述第一顺序,根据所述代码行Hash值对所述代码行进行比较搜索,确定所述代码块中达到第一预设标准的第一代码变量块;生成所述第一代码变量块对应的第一代码变量块Hash值,并确定所述第一代码变量块进行排列的第二顺序;基于所述第二顺序,根据所述第一代码变量块Hash值对所述第一代码变量块与所述代码块进行比较搜索,确定所述第一代码变量块中达到第二预设标准的第二代码变量块;将所述第二代码变量块与所述第一代码变量块对应的Hash值进行比较搜索,确定对应的目标代码变量块。3.如权利要求2所述的代码编译方法,其特征在于,在所述基于预设的搜索算法,获取所述汇编代码中达到预设标准的目标代码变量块的步骤之前,所述代码编译方法,还包括:对所述汇编代码进行解析,获取汇编代码的解析信息;根据所述解析信息中的功能语句划分所述汇编代码,生成包含若干代码行的代码块;对所述代码块中的每行代码行生成一个对应的代码行Hash值;获取所述代码块中每一行的指令字节数,将所述代码块根据所述指令字节数进行排序。4.如权利要求3所述的代码编译方法,其特征在于,所述对所述代码块中的每行代码行生成一个对应的代码行Hash值的步骤,包括:将所述代码行对应的汇编指令映射成二进制整型;基于所述二进制整型,与预设的种子SEED进行异或操作,获得所述代码行的汇编指令对应的Hash值...

【专利技术属性】
技术研发人员:汪月团张雅琼胡术云毕磊毕超
申请(专利权)人:峰岧科技上海有限公司
类型:发明
国别省市:

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

1