这些不是函数声明,而是声明函数类型的类型声明。
我正在编译Rust代码,该代码在C++静态库中链接到wasm32未知emcc。出于好奇,我将生成的wasm文件转换为.wat文件以提高可读性,并在顶部看到了这一点。我理解了最后一行,因为我可以在随附的.js文件中看到invoke_viii
的定义。在哪里可以找到关于前18个函数声明的函数定义/文档?
(module
(type (;0;) (func (param i32 i32) (result i32)))
(type (;1;) (func (param i32) (result i32)))
(type (;2;) (func (param i32 i32)))
(type (;3;) (func (param i32 i32 i32) (result i32)))
(type (;4;) (func (param i32)))
(type (;5;) (func (param i32 i32 i32)))
(type (;6;) (func (param i32 i32 i32 i32)))
(type (;7;) (func))
(type (;8;) (func (param i32 i32 i32 i32 i32)))
(type (;9;) (func (result i32)))
(type (;10;) (func (param i32 i32 i32 i32) (result i32)))
(type (;11;) (func (param i32) (result i64)))
(type (;12;) (func (param i32 i32 i32 i32 i32 i32)))
(type (;13;) (func (param i32 i32 i32 i32 i32 i32) (result i32)))
(type (;14;) (func (param i32 i32 i32 i32 i32 i32 i32)))
(type (;15;) (func (param i32 i32 i32 i32 i32) (result i32)))
(type (;16;) (func (param i32 i32 i32 i32 i32 i32 i32) (result i32)))
(type (;17;) (func (param i64 i32 i32) (result i32)))
(type (;18;) (func (param i32 i32 i32 i32 i32 i32 i32 i32)))
(import "env" "invoke_viii" (func $invoke_viii (type 6)))
// More stuff below
(import "env" "invoke_viii" (func $invoke_viii (type 6)))
这是在导入名为";invoke_viii";这个函数的类型是类型6,这个:
(type (;6;) (func (param i32 i32 i32 i32)))
在.wat文件中,(func ...)
声明(无论是否在import
内部(都是函数声明和定义。