一种优化wasm字节码的方法及执行方法、计算机设备及存储介质技术

技术编号:39175034 阅读:34 留言:0更新日期:2023-10-27 08:23
一种优化wasm字节码的方法,包括:读取wasm字节码并解析,得到wasm模块对象;根据解析得到的wasm模块对象创建线性内存并填充线性内存;执行所述wasm模块对象中的start函数,并根据start函数的执行结果修改线性内存;采用修改后的线性内存中的数据替换wasm模块对象中的对应数据段;编码替换数据段后的wasm模块并保存为wasm字节码。所述方法可以应用于区块链中wasm合约的部署和调用。块链中wasm合约的部署和调用。块链中wasm合约的部署和调用。

【技术实现步骤摘要】
一种优化wasm字节码的方法及执行方法、计算机设备及存储介质


[0001]本说明书实施例属于编译
,尤其涉及一种优化wasm字节码的方法及执行方法、计算机设备及存储介质。

技术介绍

[0002]WebAssembly是由W3C社区组开发的开放标准,是一种安全,可移植的低级代码格式,专为高效执行和紧凑表示而设计,可以接近原生的性能运行,并为诸如C、C++、Java、Go等语言提供一个编译目标。WASM虚拟机起初设计的目的是用于解决Web程序日益严峻的性能问题,由于其具有的优越特性,被越来越多的非Web项目所采用,例如替代区块链智能合约执行引擎EVM。

技术实现思路

[0003]本专利技术的目的在于提供一种优化wasm字节码的方法,一种执行所述优化后的wasm字节码的方法,计算机设备及存储介质,包括:
[0004]一种优化wasm字节码的方法,包括:
[0005]读取wasm字节码并解析,得到wasm模块对象;
[0006]根据解析得到的wasm模块对象创建线性内存并填充线性内存;<br/>[0007]本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种优化wasm字节码的方法,包括:读取wasm字节码并解析,得到wasm模块对象;根据解析得到的wasm模块对象创建线性内存并填充线性内存;执行所述wasm模块对象中的start函数,并根据start函数的执行结果修改线性内存;采用修改后的线性内存中的数据替换wasm模块对象中的对应数据段;编码替换数据段后的wasm模块并保存为wasm字节码。2.如权利要求1所述的方法,在所述编码前还包括去除wasm模块对象中的start函数。3.如权利要求1所述的方法,所述去除wasm模块对象中的start函数,包括:将start函数的启动标记删除;或,将start函数的内容整体去除。4.如权利要求1所述的方法,所述解析得到的wasm模块对象存储于受管内存中或受管内存以外的内存中。5.如权利要求4所述的方法,采用修改后的线性内存中的数据替换存储于受管内存中或受管内存以外的内存中的wasm模块对象中的对应数据段。6.如权利要求1所述的方法,所述采用修改后的线性内存中的数据替换wasm模块对象中的对应数据段,包括:将start函数执行后导致线性内存中变化的部分替换掉wasm模块对象中的数据段中的对应部分;或,采用修改后的线性内存中的整体数据替换wasm模块对象中的对应数...

【专利技术属性】
技术研发人员:周维张磊
申请(专利权)人:蚂蚁区块链科技上海有限公司
类型:发明
国别省市:

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

1