简体   繁体   English

如何在WASM WAT中导入WASI并写一个简单的控制台日志 function

[英]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.

相关问题 如何使用wasi-sdk在C中直接调用WASI函数(导入模块问题) - How to call WASI functions directly in C using wasi-sdk (import module problem) WASI 和 proxy-wasm 是什么关系? - What is the relationship between WASI and proxy-wasm? 如何使用 wasmer-wasi 从 Rust 中的 WASM 读取现有目录? - How can I read an existing directory from WASM in Rust using wasmer-wasi? 如何在使用 emcc 从 c++ 编译的 wee8 wasm 代码中运行? (wee8 的 WASI?) - How to run in wee8 wasm code that was compiled from c++ with emcc? (WASI in wee8?) 编辑:Wasm/WASI 会通过消息传递实现流程吗? - Edit: Will Wasm/WASI implement processes with message passing? 如何在wasm中生成导入部分? - How to generate import section in wasm? 为什么这个 wasm 模块中有“wasi_snapshot_preview_1”导入? - Why are there "wasi_snapshot_preview_1" imports in this wasm module? (import) in.wat 是什么意思? - What does (import) in .wat mean? Wasmer 导入“wasi_snapshot_preview1”时出错。“proc_exit”:未知导入。 预期功能 - Wasmer Error while importing “wasi_snapshot_preview1”.“proc_exit”: unknown import. Expected Function 如何在 WASM (Rust) 中导入 WASM 模块并传递字符串参数 - How to import a WASM module in WASM (Rust) and pass a String parameter
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM