实现了输出字符串的api 。 并且脱离数据存储字符串。
(module (type (;0;) (func (param i32 i32))) (type (;1;) (func (param i32))) (type (;2;) (func (param f64))) (type (;3;) (func (param i32 i32 i32) (result i32))) (type (;4;) (func (result f64))) (import "console" "log2" (func (;0;) (type 0))) (import "console" "log" (func (;1;) (type 1))) (import "console" "log" (func (;2;) (type 2))) (func (;3;) (type 3) (param i32 i32 i32) (result i32) (local i32 i32 i32 i32) local.get 0 local.get 2 i32.add local.set 2 loop ;; label = @1 local.get 0 local.get 1 i32.load8_u i32.store local.get 0 i32.const 1 i32.add local.set 0 local.get 1 i32.const 1 i32.add local.set 1 local.get 0 local.get 2 i32.le_u if ;; label = @2 br 1 (;@1;) end end local.get 2) (func (;4;) (type 4) (result f64) (local i32 i32) i32.const 0 f64.const 0x1.388p+13 (;=10000;) f64.store i32.const 8 f64.const 0x1p+0 (;=1;) f64.store i32.const 16 f64.const -0x1p+0 (;=-1;) f64.store i32.const 24 f64.const 0x0p+0 (;=0;) f64.store loop ;; label = @1 i32.const 24 i32.const 0 f64.load f64.store i32.const 32 local.set 0 local.get 0 local.set 1 local.get 1 i32.const 8102 i32.const 6 call 3 local.set 1 local.get 1 i32.const 8092 i32.const 5 call 3 local.set 1 local.get 1 i32.const 8097 i32.const 5 call 3 local.set 1 local.get 1 i32.const 8108 i32.const 1 call 3 local.set 1 i32.const 17 local.set 1 i32.const 0 f64.load i32.const 8 f64.load f64.ne local.set 0 i32.const 0 i32.const 0 f64.load i32.const 16 f64.load f64.add f64.store local.get 0 if ;; label = @2 br 1 (;@1;) end end i32.const 8102 i32.const 0 call 0 f64.const 0x0p+0 (;=0;) return) (memory (;0;) 10) (export "mem" (memory 0)) (export "main" (func 4)) (data (;0;) (i32.const 8092) "hello") (data (;1;) (i32.const 8097) "world") (data (;2;) (i32.const 8102) "") (data (;3;) (i32.const 8102) "say3: ") (data (;4;) (i32.const 8108) "!"))
越来越复杂了。