WebAssembly execution is specified as a stack machine. Instructions push values, pop operands, and produce results. Engines may internally compile to registers, SSA, or machine code, but validation is defined in stack terms.

i32.add stack effect
before: [ ..., i32, i32 ]
instr:  i32.add
after:  [ ..., i32 ]
  • Core numeric value types are `i32`, `i64`, `f32`, and `f64`.
  • `v128` is used by SIMD instructions.
  • Reference values include `funcref` and `externref`.
  • Blocks, loops, if/else, branch labels, return, call, and call_indirect all have validated stack effects.