io - WebAssembly 可以返回什么?

标签 io return return-value webassembly return-type

据我了解,WebAssembly 实例可以通过三种方式将值返回给外部调用者:

  • 直接返回一个值作为方法调用的结果(这只是基本数据类型 {i32, i64, f32, f64} 的单个值吗?)

  • 使用参数调用导入函数,该函数可以在调用时存储参数或访问内存,并将内容保存在其他地方

  • 写入内存并在执行后让外部环境访问它

还有更多吗?详情为何?

最佳答案

您的评估大致正确。函数可以直接返回 WebAssembly 值(i32、i64、f32、f64),也可以通过修改全局环境中的元素(例如 Memory、Table 和 Globals)间接返回数据。如果您正在谈论将数据返回给 WebAssembly 模块外部的调用者,则任何此类元素本身都需要从模块中导出。也就是说,你不能使用 WebAssembly 内存来间接返回数据,除非内存本身也被导出。

通过多值提案,您还可以直接返回多个值:https://github.com/WebAssembly/multi-value 。同样,GC 提案将允许您直接返回复杂的结构。但目前这两个都不可用。

关于io - WebAssembly 可以返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65429036/

相关文章:

javascript - 如何暂时用新的 rl.qu/estion 覆盖之前的 rl.qu/estion?

java - PostgreSQL 异常 : "An I/O error occured while sending to the backend"

c# - 如何不断从内部目录获取相同的目录路径

java - 如何让函数返回 "Double"或 "Int"?

java - 欧拉项目 3 解决方案

c++ - 如何清除 ifstream 中的异常掩码?

ruby - 为什么 `return a or b` 在 Ruby 中是空值表达式错误?

python - 尝试将日期和时间记录到 sqlite3

java - 更改 Java 中返回的对象

Javascript + 和函数的字符串返回值?