[英]How to import WASI and write a simple console log function in WASM WAT
I want to understand the WebAssembly text format for educational purposes and for writing a POC compiler that compiles straight to WASM.我想了解 WebAssembly 文本格式以用于教育目的和编写直接编译为 WASM 的 POC 编译器。
I want to understand how to properly import the necessary WASI functions to create a console log function.我想了解如何正确导入必要的 WASI 函数来创建控制台日志 function。
I'd love to see an example written in somewhat readable WAT of a module that imports WASI and implements a simple console log/printf/echo function that can run outside the browser.我很想看到一个用可读性 WAT 编写的示例,该示例导入了 WASI 并实现了一个可以在浏览器外运行的简单控制台日志/printf/echo function。
eg,例如,
(module
(func $wasi_snapshot_preview1.fd_close (;0;) (import "wasi_snapshot_preview1" "fd_close") (param i32) (result i32))
(func $wasi_snapshot_preview1.fd_seek (;1;) (import "wasi_snapshot_preview1" "fd_seek") (param i32 i64 i32 i32) (result i32))
(func $wasi_snapshot_preview1.fd_write (;2;) (import "wasi_snapshot_preview1" "fd_write") (param i32 i32 i32 i32) (result i32))
(func $wasi_snapshot_preview1.proc_exit (;3;) (import "wasi_snapshot_preview1" "proc_exit") (param i32))
(data (; ... ;) )
(memory (; ... ;) )
(func $log (; ... ;))
)
This code imports the log
function from JS and uses it to print a number:此代码从 JS 中导入
log
function 并使用它打印一个数字:
(module
(func $log (import "imports" "log") (param i32))
(func (export "logNumber")
i32.const 13
call $log)
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.