实现了输出字符串的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) "!"))

 

越来越复杂了。