logoalt Hacker News

rusakov-fieldtoday at 4:11 PM1 replyview on HN

Not familiar with WebAssembly, but from the namesake was expecting the syntax to kind of resemble assembly.

He is showing S-expressions ? That is its' syntax ? I am intrigued now.


Replies

flohofwoetoday at 4:19 PM

Real-world WAT (WASM text format) looks more like this (e.g. it looks like a 'structured assembly' type of thing):

    i32.const 27512
    i32.load
    local.tee $var1
    if
      i32.const 27404
      i32.load
      local.get $var1
      call_indirect (param i32)
    end
S-expressions are only used outside such instruction blocks for the 'program-structure' (e.g. see: https://developer.mozilla.org/en-US/docs/WebAssembly/Referen...). IIRC early pre-release-versions of WASM were entirely built from S-expressions and as a 'pure stack machine' (I may remember wrong though).

To see what a complete WASM blob looks like in WAT format you can go here: https://floooh.github.io/sokol-html5/clear-sapp.html, open the browser devtools, go to the 'Sources' tab and click the `clear-sapp.wasm` file).

show 1 reply