webassembly学习——基础语法和数据类型[通俗易懂]

webassembly学习——基础语法和数据类型[通俗易懂]一、基础语法webassembly作为一种标准,当然也是有语法的

webassembly学习——基础语法和数据类型[通俗易懂]

一、基础语法

webassembly作为一种标准,当然也是有语法的。从比较容易的上层语言的角度来理解,wasm是一个结构化的堆栈机器。基本由数据类型、函数和模块组成。而函数就是指令序列,wasm的指令有控制指令和简单指令两类。前者负责操作数据的行动方式,后者决定数据操作。
wasm提供了一组与语言无关的操作运算符,它和具体的简单指令一一相对应,而这最基础的一定是数据类型和数据的结构。

二、数据类型和数据结构

来看一下wasm提供的数据类型:
1、值 类型
i32: ——32位整型,4字节
i64: ——64位整型,8字节
f32: ——32位浮点型,4字节
f64: ——64位浮点型,8字节
不过,上面的类型有一个特点,不管是整型还是浮点型,都不像其它语言的数据类型,是固定的有符号和无符号。它取决于特定的运算符的实际情况。

2、线性内存
线性内存是一段以字节寻址的连续存储区间, 范围从0 到一个N的内存大小 。 这个大小一般是WebAssembly页容量的倍数, WebAssembly的页容量被固定为64K,可以用grow_memory来动态增加它。

3、表
类似于线性内存,表元素是不透明值,一种特殊的_表元素类型, 而不是字节

4、特殊类型
void——表示函数无返回值

5、全局类型
存储固定值类型的单个值,并且可以声明为可变的或不可变的。其操作如下:
get_global: 获取全局变量的当前值
set_global: 设置全局变量的当前值
全局类型只能从模块内定义的 全局索引空间 中通过整数索引的方式获取。全局变量要么是被 导入 , 要么是 模块内定义的。这两种方式对后续的全局变量访问没有区别。

6、局部类型
每个函数都有一些固定的,预声明的局部变量,它们占用函数内部的单个索引空间。可以通过下面的方式对其进行操作:
get_local: 获取局部变量当前值
set_local: 设置局部变量当前值
tee_local: 类似 set_local, 设置局部变量当前值后返回被设置的新值

7、向量类型
SIMD指令,单指令多数据,可以理解成一种数组类型。

8、外部类型
部类型使用它们各自的类型对导入和外部值进行分类。

9、引用类型
引用类型对运行时存储中对象的第一类引用进行分类。
10、函数类型
其实就是高级语言的函数对象类型,也类似于C语言等中的函数指针。引用类型是不透明的,这意味着既不能观察到它们的大小,也不能观察到它们的位模式。引用类型的值可以存储在表中。

三、总结

其实写这段比较郁闷,不知道这样的划分是否和传统的语言划分是否一致,能否更容易为开发人员的理解。wasm是一个新东西,虽然发展了几年,有些壮大,但还是需要进一步的巩固和提高。学习就需要从基础开始,基本的数据类型就是基础中的基础。

今天的文章webassembly学习——基础语法和数据类型[通俗易懂]分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/88012.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注