2017-06-22 292 views

回答

2

所有的uintN,varuintNvarintN都是WebAssembly的binary format独有的概念。它们纯粹是以紧凑的机器可读格式对WebAssembly进行编码。

i32和朋友是language typessemantics of WebAssembly有更好的描述这些类型以及它们如何相互作用。基本上,它们存在于语言级别,并形成WebAssembly程序中可用的基本数据类型。

他们在两个完全不同的层次。这有点像C int与用于C源代码的ASCII编码。一种纯粹在语言层面,另一种纯粹用于以稳定格式表示该语言(对于C:源.c文件;对于WebAssembly:二进制.wasm文件)。

“类型构造函数”只是对应于二进制格式中特定二进制值的类型:您需要一些二进制值,您可以使用它们对每种类型进行编码。回到我的C源代码示例,源字符大写字母B将以ASCII码编码为0x42。那么这里WebAssembly i32类型被编码为字节0x7f

+0

根据我的理解,如果我在wasm二进制文件中找到一个字节'0x7f',这意味着这个地方必须有某种整数值? – YHSPY

+0

谢谢!我想我明白这一点。 :) – YHSPY

+0

不,如果您发现'0x7f',这可能意味着很多事情,因为WebAssembly格式是可变长度编码。取决于上下文,“0x7f”可能意味着不同的事情。这与x86中的相同,每个字节可能意味着不同的事情,具体取决于正在解码的指令。 –

相关问题