如何以 WebAssembly Text 格式表示操作?

时间:2021-03-11 15:36:03

标签: webassembly

假设我正在以 WebAssembly 文本格式编写以下 C 代码:

if (a < 2) a = 5;
else a = 6;

WASM:

(if
  (i32.eq (get_local $x) (i32.const 10))
  (then (i32.local 5) (set_local $x))
  (else (i32.const 7) (local.set $a))
)

这也有效:

(
    ;; ....
    get_local $a
    i32.const 2
    i32.lt_s ;; a < 2  
    (if
        (then
            i32.const 5
            local.set $a
        )
        (else 
            i32.const 7
            local.set $a
        )
    )
    ;; ...
)

要关注哪一个?为什么操作数之前和之后的写操作不同?

1 个答案:

答案 0 :(得分:1)

这纯粹是个人喜好问题——汇编的代码是一样的。你更喜欢哪种风格? (但我必须说,您的 WASM 代码与您的 C 代码不同!)