;;; TOOL: run-interp (module (func (export "call") (result i32) i32.const 1 i64.const 2 f32.const 3 f64.const 4 call $helper) (func $helper (param i32 i64 f32 f64) (result i32) get_local 1 i32.wrap/i64 get_local 0 i32.add get_local 2 i32.trunc_s/f32 i32.add get_local 3 i32.trunc_s/f64 i32.add return) (func (export "fac10") (result i32) i32.const 10 call $fac) (func $fac (param i32) (result i32) get_local 0 i32.const 0 i32.gt_s if (result i32) get_local 0 get_local 0 i32.const 1 i32.sub call $fac i32.mul return else i32.const 1 return end) ) (;; STDOUT ;;; call() => i32:10 fac10() => i32:3628800 ;;; STDOUT ;;)