WebAssembly - 程序结构
-
简述
WebAssembly,也称为 WASM,是一种二进制格式的低级代码,旨在以最有效的方式在浏览器中执行。WebAssembly 代码由以下概念构成 -- 值
- 类型
- 指令
现在让我们详细了解它们。 -
值
WebAssembly 中的值用于存储复杂数据,例如文本、字符串和向量。WebAssembly 支持以下内容 -- 字节
- 整数
- 浮点
- 名称
字节
字节是 WebAssembly 支持的最简单的值形式。该值采用十六进制格式。例如表示为b的字节也可以采用自然数 n,其中 n <256。整数
在 WebAssembly 中,支持的整数如下所示 -- i32:32 位整数
- i64:64 位整数
浮点
在 WebAssembly 中支持的浮点数如下 -- f32:32 位浮点数
- f64:64 位浮点数
名称
名称是字符序列,标量值由 Unicode 定义,可在链接http://www.unicode.org/versions/Unicode12.1.0/中获得。 -
类型
WebAssembly 中的实体被分类为类型。支持的类型如下所述 -- Value 类型
- Result 类型
- Function 类型
- Limits
- Memory 类型
- Table 类型
- Global 类型
- External 类型
让我们一一研究。Value 类型
WebAssembly 支持的值类型如下所述 -- i32:32 位整数
- i64:64 位整数
- f32:32 位浮点数
- f64:64 位浮点数
Result 类型
写在括号内的值被执行并存储在结果类型中。结果类型是执行由值组成的代码块的输出。Function 类型
函数类型将接受参数向量返回结果向量。Limits
Limits 是与内存和表类型相关的存储范围。Memory 类型
Memory 类型处理线性内存和大小范围。Table 类型
Table 类型按分配给它的元素类型分类。表类型取决于分配给它的最小和最大大小的限制。Global 类型
全局类型保存具有值的全局变量,可以更改或保持不变。External 类型
外部类型处理导入和外部值。 -
指令
WebAssembly 代码是遵循堆栈机器模型的指令序列。由于 WebAssembly 遵循堆栈机器模型,因此指令被推送到堆栈上。例如,函数的参数值从堆栈中弹出,结果被推回堆栈。最后,堆栈中将只有一个值,这就是结果。一些常用的指令如下 -- 数字指令
- 变量指令
数字指令
数值指令是对数值执行的操作。例如变量指令
变量指令是关于访问局部和全局变量的。例如访问局部变量 -设置局部变量 -访问全局变量 -设置全局变量 -