WebAssembly:复制栈顶

Posted

技术标签:

【中文标题】WebAssembly:复制栈顶【英文标题】:WebAssembly: Duplicating the top of stack 【发布时间】:2018-08-09 13:18:56 【问题描述】:

没有dup 指令,可以让我复制堆栈顶部。我可以使用哪个指令序列来复制这种行为?

【问题讨论】:

您能否提供更多背景信息?为什么要复制堆栈值?通常线性内存用于程序/工作内存而不是堆栈 经常出现使用计算值两次或更多次的必要性。我的直觉是使用内存要慢得多,也太复杂了。 【参考方案1】:

Wasm 没有堆栈杂耍原语,因为它有局部变量。要复制操作数堆栈的顶部,您需要定义正确类型的局部变量。然后你可以例如使用以下指令序列:

(tee_local $x) (get_local $x)

$x 是你的变量。

【讨论】:

以上是关于WebAssembly:复制栈顶的主要内容,如果未能解决你的问题,请参考以下文章

WebAssembly Heapf64.set 的文档在哪里

前端每周清单:Instant App将至,WebAssembly将获默认支持,PWA实践渐增

JVM | 字节码指令基础

PUSHPOPPUSHAD与PUSHFD

JVM常用指令

操作数栈管理指令