有人可以分享语法来静态创建具有某些元素的表并引用它吗?我找不到任何网页汇编代码。
还有一些细节,比如我可以有多个列,如果索引不在表中会发生什么等等会有帮助吗?
答案 0 :(得分:4)
在文本格式中,声明table及其表类型,即(初始)大小和元素类型 - 当前anyfunc
是唯一受支持的类型:
(table $name 100 anyfunc)
通过提供一个或多个element segments:
,可以在模块中初始化表(elem (i32.const 0) $f1 $f2 $f3)
其中表达式表示偏移量,后面跟着模块中定义的函数列表。
使用此类表的唯一方法是通过call_indirect
指令:
(call_indirect (type $t) (arg1) ... (argn) (index))
您可以在Wasm规范测试套件中找到一些简单的示例,例如:这里:
https://github.com/WebAssembly/spec/blob/master/test/core/elem.wast
表没有列(尽管将来Wasm可能允许多个表)。对于execution,超出边界访问会导致陷阱,访问未初始化索引或类型不匹配也是如此。