一种程序数据生成方法及装置制造方法及图纸

技术编号:37502872 阅读:11 留言:0更新日期:2023-05-07 09:38
本申请公开了一种程序数据生成方法及装置,可以对wasm编译的二进制文件进行程序数据特性检测,得到检测结果;若所述检测结果未超过目标格式文件的所述程序数据特性,则接着对所述二进制文件中的数据进行调整,以得到部分目标段数据;然后,根据转换配置信息和所述部分目标段数据信息生成目标应用段、目标导出段和目标配置段数据,对所述部分目标段数据、所述目标应用段、所述目标导出段和所述目标配置段数据进行组合,生成目标设备可识别且可加载的目标程序数据,可提高目标设备执行目标程序数据的运行效率。数据的运行效率。数据的运行效率。

【技术实现步骤摘要】
一种程序数据生成方法及装置


[0001]本申请涉及程序数据生成的
,尤其涉及一种程序数据生成方法及装置。

技术介绍

[0002]WebAssembly(简称wasm)技术是一个虚拟指令集体系架构,其初始目标是为C/C++等语言编写的程序经过编译,在确保安全和接近原生应用的运行速度更好地在Web(World Wide Web,全球广域网)平台上运行。如果将wasm技术应用到资源受限设备,需要限定支持wasm指令集范围和支持程序数据空间、访问范围,设计一种简单且可以有效表达wasm编译二进制文件的程序数据格式,从而达到在现有资源受限设备条件下利用wasm技术更高效运行程序。

技术实现思路

[0003]本申请提供一种程序数据生成方法及装置,可以对所述二进制文件中的数据进行调整,以得到部分目标段数据;然后,根据转换配置信息和所述部分目标段数据信息生成目标应用段、目标导出段和目标配置段数据,对所述部分目标段数据、所述目标应用段、所述目标导出段和所述目标配置段数据进行组合,生成目标设备可识别且可加载的目标程序数据,以在目标设备高效的运行。
[0004]第一方面,本申请提供了一种程序数据生成方法,包括:对wasm编译的二进制文件进行程序数据特性检测,得到检测结果;若所述检测结果为超出目标格式文件的所述程序数据特性,则报错;若所述检测结果为未超过所述目标格式文件的所述程序数据特性,则对所述二进制文件中的数据进行调整,以得到部分目标段数据;根据转换配置信息和所述部分目标段数据信息生成目标应用段、目标导出段和目标配置段数据,对所述部分目标段数据、所述目标应用段、所述目标导出段和所述目标配置段数据进行组合,生成目标设备可识别且可加载的目标格式文件。
[0005]可选地,在所述对二进制文件进行程序数据特性检测,得到检测结果步骤后,所述程序数据生成方法包括:若所述检测结果为符合所述程序数据特性,则根据所述二进制文件生成目标设备可识别且可加载的所述目标程序数据。
[0006]可选地,在得到所述部分目标段数据后,所述程序数据生成方法包括:根据转换配置信息生成目标应用段数据;根据转换配置信息生成包含导出函数信息的目标导出段数据;在所述部分目标段数据、所述目标应用段数据、所述目标导出段数据中提取目标段数据长度、个数配置或类型配置信息,并结合转换配置信息,生成包含目标段数据长度、配置信息和模块标识信息的目标配置段数据。
[0007]可选地,所述对wasm编译的二进制文件进行所述程序数据特性检测,得到检测结
果前,所述程序数据生成方法包括:确定所述二进制文件中的段数据;给每个所述段数据的数据设置限制条件;所述限制条件为所述二进制文件的所述程序数据特性。
[0008]可选地,所述限制条件所限制的程序数据有变量数据类型、字节码类型、函数个数、引用模块个数、参数及临时变量个数;所述程序数据特性包括预设变量数据类型、预设字节码类型、预设函数个数、预设引用模块个数、预设参数及预设临时变量个数。
[0009]可选地,所述对所述二进制文件中的数据进行调整的方法有重组、更改、以及删除;所述对所述二进制文件中的数据进行调整,以得到部分目标段数据,包括:所述二进制文件类型段、函数段中函数签名信息和代码段函数字节码头信息中临时变量类型、个数信息整合为目标代码段函数字节码头信息;所述二进制文件导入段中外部模块名称信息改为外部模块的版本和标识信息,相同外部模块版本和标识信息保留一个,得到目标导入段数据,记录目标导入段引用外部模块个数配置信息供生成目标配置段使用;在所述二进制文件导入段、函数段中提取外部函数个数和内部函数个数信息为2字节无符号数得到目标函数段外部函数个数和内部函数个数数据;将所述二进制文件导入段外部函数信息改为外部函数对应外部模块中索引和外部模块名称在目标导入段中索引组合形成的无符号2字节16个bit位表示的目标函数段外部函数数据;将所述二进制文件代码段函数头中LEB128格式的函数字节码长度改为2字节无符号数表示的目标函数段内部函数数据;所述外部函数个数和内部函数个数数据和所述目标函数段外部函数数据以及所述目标函数段内部函数数据组合后得到目标函数段数据;在所述二进制文件全局段和数据段提取不同类型变量数据起始地址,不同类型变量数据结束地址或变量数据空间信息,相关地址和或空间信息使用无符号2字节数据格式表示得到目标全局段数据;提取所述二进制文件元素段数据,转换为无符号1字节或无符号2字节数据得到目标元素段数据,记录目标元素段数据类型配置信息供生成目标配置段使用;提取所述二进制文件数据段中不同类型变量数据内容得到目标数据段数据;至少通过上述步骤得到所述部分目标段数据。
[0010]可选地,所述给每个所述段数据的数据设置限制条件步骤中的所述段数据包括:类型段、导入段、函数段、代码段。
[0011]第二方面,本申请提供了一种程序数据生成装置,其特征在于,包括:检测单元,用于对wasm编译的二进制文件进行程序数据特性检测,得到检测结果;调整单元,若所述检测结果为超出目标格式文件的所述程序数据特性,则用于报错;若所述检测结果为未超过所述目标格式文件的所述程序数据特性,则用于对所述二进制文件中的数据进行调整,以得到部分目标段数据;
转换单元,根据转换配置信息和所述部分目标段数据信息生成目标应用段、目标导出段和目标配置段数据,对所述部分目标段数据、所述目标应用段、所述目标导出段和所述目标配置段数据进行组合,生成目标设备可识别且可加载的目标程序数据。
[0012]可选地,所述程序数据生成装置包括:增加单元,在得到所述部分目标段数据后,所述增加单元用于根据转换配置信息生成目标应用段数据;根据转换配置信息生成包含导出函数信息的目标导出段数据;在所述部分目标段数据、所述目标应用段数据、所述目标导出段数据中提取目标段数据长度、个数配置或类型配置信息,并结合转换配置信息,生成包含目标段数据长度、配置信息和模块标识信息的目标配置段数据。
[0013]第三方面,本申请提供了一种计算机可读存储介质,包括执行指令,当电子设备的处理器执行所述执行指令时,所述电子设备执行如第一方面中任一所述的方法。
[0014]第四方面,本申请提供了一种电子设备,处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现第一方面任一所述的方法。
[0015]本申请提供了一种程序数据生成方法及装置,可以对wasm编译的二进制文件进行程序数据特性检测,得到检测结果;若所述检测结果为未超过目标格式文件的所述程序数据特性,则接着对所述二进制文件中的数据进行调整,以得到部分目标段数据;然后,根据转换配置信息和所述部分目标段数据信息生成目标应用段、目标导出段和目标配置段数据,对所述部分目标段数据、所述目标应用段、所述目标导出段和所述目标配置段数据进行组合,生成目标设备可识别且可加载的目标程序数据,可提高目标设备执行目标程序数据的运行效率。
[0016]上述的非惯用的优本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种程序数据生成方法,其特征在于,包括:对wasm编译的二进制文件进行程序数据特性检测,得到检测结果;若所述检测结果为超出目标格式文件的所述程序数据特性,则报错;若所述检测结果为未超过所述目标格式文件的所述程序数据特性,则对所述二进制文件中的数据进行调整,以得到部分目标段数据;根据转换配置信息和所述部分目标段数据信息生成目标应用段、目标导出段和目标配置段数据,对所述部分目标段数据、所述目标应用段、所述目标导出段和所述目标配置段数据进行组合,生成目标设备可识别且可加载的目标程序数据。2.如权利要求1所述的程序数据生成方法,其特征在于,在所述对wasm编译的二进制文件进行程序数据特性检测,得到检测结果步骤后,所述程序数据生成方法包括:若所述检测结果为符合所述程序数据特性,则根据所述二进制文件生成目标设备可识别且可加载的所述目标程序数据。3.如权利要求1或2所述的程序数据生成方法,其特征在于,在得到所述部分目标段数据后,所述程序数据生成方法包括:根据转换配置信息生成目标应用段数据;根据转换配置信息生成包含导出函数信息的目标导出段数据;在所述部分目标段数据、所述目标应用段数据、所述目标导出段数据中提取目标段数据长度、个数配置或类型配置信息,并结合转换配置信息,生成包含目标段数据长度、配置信息和模块标识信息的目标配置段数据。4.如权利要求1所述的程序数据生成方法,其特征在于,所述对wasm编译的二进制文件进行程序数据特性检测,得到检测结果前,所述程序数据生成方法包括:确定所述二进制文件中的段数据;给每个所述段数据的数据设置限制条件;所述限制条件为所述二进制文件的所述程序数据特性。5.如权利要求4所述的程序数据生成方法,其特征在于,所述限制条件所限制的程序数据有变量数据类型、字节码类型、函数个数、引用模块个数、参数及临时变量个数;所述程序数据特性包括预设变量数据类型、预设字节码类型、预设函数个数、预设引用模块个数、预设参数及预设临时变量个数。6.如权利要求5所述的程序数据生成方法,其特征在于,所述对所述二进制文件中的数据进行调整的方法有重组、更改、以及删除;所述对所述二进制文件中的数据进行调整,以得到部分目标段数据,包括:所述二进制文件类型段、函数段中函数签名信息和代码段函数字节码头信息中临时变量类型、个数信息整合为目标代码段函数字节码头信息;所述二进制文件导入段中外部模块名称信息改为外部模块的版本和标识信息,相同外部模块版本和标识信息保留一个,得到目标导入段数据,记录目标导入段引用外部模...

【专利技术属性】
技术研发人员:刘静亚路倩张章邹重人
申请(专利权)人:紫光同芯微电子有限公司
类型:发明
国别省市:

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

1