System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 数据编译、参数传递方法及装置制造方法及图纸_技高网

数据编译、参数传递方法及装置制造方法及图纸

技术编号:40679029 阅读:2 留言:0更新日期:2024-03-18 19:18
本说明书提供有数据编译、参数传递方法及装置。所述方法包括:资源受限设备的虚拟机响应于编译命令,将待编译的源代码编译为WebAssembly模块;在编译过程中,为所述WebAssembly模块分配空闲的内存地址,并在分配到的内存地址中记录所述WebAssembly模块的变量参数;以及,生成与所述内存地址唯一对应的内存地址编码。

【技术实现步骤摘要】

本说明书实施例涉及计算机领域,尤其涉及一种数据编译、参数传递方法及装置


技术介绍

1、webassembly(也可以简称为wasm)是一种新型代码技术,其可以为诸如c、c++和rust等高级编程语言提供一个高效的编译目标;且具有快速、高效、可移植的特点,可以在不同平台上以接近本地速度运行。

2、使用高级编程语言编写的应用程序代码,需要编译为webassembly字节码构成的实现若干功能的webassembly模块,然后进一步由虚拟机依次运行这些webassembly模块。webassembly模块是应用模块、库模块程序编译、加载和执行的基本单元。webassembly模块中包含有应用程序的函数、表、内存空间大小、全局变量、导入信息和导出信息等。

3、虚拟机运行时,可以根据当前运行的webassembly模块中定义的内存空间大小,为webassembly模块分配独立的线性内存(数据内存区)。每个webassembly模块可以有自己独立的线性内存,且每个webassembly应用模块只能访问自身的、或者模块的线性内存。

4、经过编译的webassembly模块中的变量被编译为从一个指定偏移开始,其数据存储空间连续分布的数据段。

5、webassembly模块之间进行函数调用时,被调用方的webassembly模块传递给调用方的webassembly模块的参数时,是基于自身线性内存的编译,这就导致调用方调用的函数无能正确访问传递过来的数据,从而产生错误的执行结果。

6、举例:模块a调用模块b的函数,传递了模块a的线性内存偏移(作为指针的取值)给模块b的函数,模块b的函数执行时,根据参数,和模块的全局数据内存区的访问规则,则从模块b的全局数据内存区获取数组或者结构体元素的值,这必然导致模块b的函数并没有访问到模块a传递过来的数据,产生错误的执行结果。


技术实现思路

1、本说明书实施例提供的一种数据编译、参数传递方法及装置。用以解决资源受限设备中webassembly模块之间进行函数调用时,由于线性内存偏移导致函数执行结果错误的问题。

2、根据本说明书实施例的第一方面,提供一种数据编译方法,应用于资源受限设备的虚拟机,所述方法包括:

3、资源受限设备的虚拟机响应于编译命令,将待编译的源代码编译为webassembly模块;

4、在编译过程中,为所述webassembly模块的变量参数分配内存地址,并在分配到的内存地址中记录所述webassembly模块的变量参数;以及,生成与所述内存地址唯一对应的内存地址编码。

5、可选的,所述变量参数包括可读写变量参数和只读变量参数;在编译过程中,还会生成所述webassembly模块的全局数据段信息;所述全局数据段信息包括所述webassembly模块中的可读写变量参数信息、只读变量参数信息和所述webassembly模块的变量参数结束地址信息;

6、其中,所述可读写变量参数信息包括可读写变量参数的内存块标识和内存基址;

7、所述只读变量参数信息包括只读变量参数的内存块标识和内存基址;

8、所述变量参数结束地址信息包括变量参数结束的内存块标识和内存地址。

9、可选的,所述为所述webassembly模块的变量参数分配内存地址,包括:

10、获取所述编译命令中配置的内存基址参数;其中,所述内存基址参数包括内存块标识和内存基址;

11、从所述内存基址参数指定的内存基址开始,为所述webassembly模块的变量参数顺序分配空闲的内存地址;

12、所述方法还包括:

13、响应于编译完成的webassembly模块下载到所述资源受限设备,为所述webassembly模块分配空闲的物理存储地址。

14、可选的,所述webassembly模块的变量参数包括只读变量参数、可读写变量参数和自定义类型变量参数;

15、所述为所述webassembly模块分配空闲的物理存储地址,包括:

16、针对所述webassembly模块中的只读变量参数,分配非易失性存储器中空闲的物理存储地址,并将所述只读变量参数存储到所述非易失性存储器;

17、针对所述webassembly模块中的可读写变量参数,分配易失性存储器中空闲的物理存储地址,并将所述可读写变量参数存储到所述易失性存储器;

18、确定与所述内存地址编码唯一对应的所述物理存储地址的映射。

19、可选的,所述确定与所述内存地址编码唯一对应的所述物理存储地址的映射,包括:

20、针对所述只读变量参数,将所述只读变量参数的内存地址编码的编码值减去只读变量参数的内存基址,再加上只读变量参数的物理存储空间起始地址,得到物理存储地址;

21、针对所述可读写变量参数,将所述可读写变量参数的内存地址编码的编码值减去可读写变量参数的内存基址,再加上可读写变量参数的物理存储空间起始地址,得到物理地址;

22、其中,所述只读参数变量的物理存储空间起始地址,或者可读写变量参数的物理存储空间起始地址,都由内存块标识映射得到。

23、可选的,所述内存地址编码的大小包括4个字节;

24、其中,所述4个字节中的低2字节用于记录对内存地址进行编码得到的编码值,所述4个字节中的高2字节若干比特用于记录内存块标识。

25、根据本说明书实施例的第二方面,提供一种参数传递方法,应用于资源受限设备的虚拟机执行webassembly模块之间的函数调用,所述webassembly模块通过前述数据编译方法完成编译;所述方法包括:

26、响应于第二webassembly模块调用第一webassembly模块中的目标函数,获取第二webassembly模块编译过程中生成的内存地址编码;

27、将所述内存地址编码传递给所述第一webassembly模块,以使所述第一webassembly模块解析所述内存地址编码对应的物理存储地址,并访问所述物理存储地址记录的所述第二webassembly模块的变量参数,以及将所述变量参数带入所述目标函数后执行。

28、可选的,所述解析所述内存地址编码对应的物理存储地址,包括:

29、解析所述内存地址编码的编码值;

30、获取所述第二webassembly模块的全局数据段信息;所述全局数据段信息包括所述第二webassembly模块中的只读变量参数的内存基址、所述第二webassembly模块中的可读写变量参数的内存基址;

31、如果所述编码值大于等于所述只读变量参数的内存基址,且小于所述可读写变量参数的内存基址,则将所述编码值减去所述只读变量参数的内存基址,再加上所述只读变量参数的物理存储空间起始地址,得到所述内存地址编码对应的非易失性存储器的物理存储地址;...

【技术保护点】

1.一种数据编译方法,其特征在于,应用于资源受限设备的虚拟机,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述变量参数包括可读写变量参数和只读变量参数;在编译过程中,还会生成所述WebAssembly模块的全局数据段信息;所述全局数据段信息包括所述WebAssembly模块中的可读写变量参数信息、只读变量参数信息和所述WebAssembly模块的变量参数结束地址信息;

3.根据权利要求2所述的方法,其特征在于,所述为所述WebAssembly模块的变量参数分配内存地址,包括:

4.根据权利要求3所述的方法,其特征在于,所述WebAssembly模块的变量参数包括只读变量参数、可读写变量参数和自定义类型变量参数;

5.根据权利要求4所述的方法,其特征在于,所述确定与所述内存地址编码唯一对应的所述物理存储地址的映射,包括:

6.根据权利要求5所述的方法,其特征在于,所述内存地址编码的大小包括4个字节;

7.一种参数传递方法,其特征在于,应用于资源受限设备的虚拟机执行WebAssembly模块之间的函数调用,所述WebAssembly模块通过权利要求1所述的数据编译方法完成编译;所述方法包括:

8.根据权利要求7所述的方法,其特征在于,所述解析所述内存地址编码对应的物理存储地址,包括:

9.根据权利要求8所述的方法,其特征在于,所述内存地址编码的大小包括4个字节;

10.根据权利要求9所述的方法,其特征在于,所述获取所述第二WebAssembly模块的全局数据段信息,包括:

11.根据权利要求10所述的方法,其特征在于,所述映射表包括内存块标识、模块标识,所述映射表在WebAssembly模型下载到资源受限设备的过程中建立,或者在代码执行应用流程时建立;

12.一种参数传递方法,其特征在于,所述方法包括:

13.根据权利要求12所述的方法,其特征在于,所述解析起始地址编码,包括:

14.一种数据编译装置,其特征在于,应用于资源受限设备的虚拟机,所述装置包括:

15.一种参数传递装置,其特征在于,应用于资源受限设备的虚拟机执行WebAssembly模块之间的函数调用,所述WebAssembly模块通过权利要求1所述的数据编译方法完成编译,所述装置包括:

16.一种参数传递装置,其特征在于,所述装置包括:

17.一种电子设备,其特征在于,包括:

...

【技术特征摘要】

1.一种数据编译方法,其特征在于,应用于资源受限设备的虚拟机,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述变量参数包括可读写变量参数和只读变量参数;在编译过程中,还会生成所述webassembly模块的全局数据段信息;所述全局数据段信息包括所述webassembly模块中的可读写变量参数信息、只读变量参数信息和所述webassembly模块的变量参数结束地址信息;

3.根据权利要求2所述的方法,其特征在于,所述为所述webassembly模块的变量参数分配内存地址,包括:

4.根据权利要求3所述的方法,其特征在于,所述webassembly模块的变量参数包括只读变量参数、可读写变量参数和自定义类型变量参数;

5.根据权利要求4所述的方法,其特征在于,所述确定与所述内存地址编码唯一对应的所述物理存储地址的映射,包括:

6.根据权利要求5所述的方法,其特征在于,所述内存地址编码的大小包括4个字节;

7.一种参数传递方法,其特征在于,应用于资源受限设备的虚拟机执行webassembly模块之间的函数调用,所述webassembly模块通过权利要求1所述的数据编译方法完成编译;所述方法包括:...

【专利技术属性】
技术研发人员:刘宏梅高景阳
申请(专利权)人:北京中电华大电子设计有限责任公司
类型:发明
国别省市:

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

1