2 (type $FUNCSIGi (func (result i32)))
3 (type $FUNCSIGii (func (param i32)))
4 (type $FUNCSIGiii (func))
5 (type $FUNCSIGiv (func (param i32 i32) (result i32)))
6 (type $FUNCSIG$v (func (param i32) (result i32)))
7 (import "env" "pop" (func $pop (result i32)))
8 (import "env" "push" (func $push (param i32)))
9 (import "env" "rinit" (func $rinit))
10 (import "env" "rpop" (func $rpop (result i32)))
11 (import "env" "rpush" (func $rpush (param i32)))
12 (import "env" "sys_read" (func $sys_read (param i32 i32) (result i32)))
13 (import "env" "sys_fetch" (func $sys_fetch (param i32 i32) (result i32)))
14 (import "env" "sys_listen" (func $sys_listen (param i32) (result i32)))
15 (import "env" "sys_write" (func $sys_write (param i32 i32) (result i32)))
16 (import "env" "sys_echo" (func $sys_echo (param i32)))
17 (import "env" "sys_echochar" (func $sys_echochar (param i32)))
18 (import "env" "sys_reflect" (func $sys_reflect (param i32)))
19 (import "env" "vocab_get" (func $vocab_get (param i32) (result i32)))
20 (import "env" "vocab_set" (func $vocab_set (param i32) (param i32) (result i32)))
21 (import "env" "is_whitespace" (func $is_whitespace (param i32) (result i32)))
22 (import "env" "sys_parsenum" (func $sys_parsenum (param i32) (result i32)))
23 (import "env" "sys_stack" (func $sys_stack))
24 (import "env" "sys_words" (func $sys_words))
25 (table (;0;) 0 anyfunc)
27 (global $inbuf i32 (i32.const 8))
28 (global $inbuf_size i32 (i32.const 12))
29 (global $inbuf_data i32 (i32.const 16))
30 (global $wbuf i32 (i32.const 256))
31 (global $wbuf_data i32 (i32.const 260))
32 (data (i32.const 8) "\f4\00\00\00") ;; STDIN buf, 244 len
33 (data (i32.const 256) "\7c\00\00\00") ;; WBUF, 124 len
34 (data (i32.const 384) "\20\03\00\00") ;; MODE
35 (data (i32.const 388) "\18\04\00\00") ;; HERE
36 (data (i32.const 392) "\58\02\00\00") ;; START
37 (data (i32.const 396) "\0a\00\00\00") ;; BASE
39 (data (i32.const 512) "\b8\02\00\00") ;; WORD xt (696)
40 (data (i32.const 516) "\06\00\00\00") ;; DUP
41 (data (i32.const 520) "\0a\00\00\00") ;; @
42 (data (i32.const 524) "\0e\00\00\00") ;; JZ:
43 (data (i32.const 528) "\2c\02\00\00") ;; INTERP-END addr (556)
44 (data (i32.const 532) "\02\00\00\00") ;; LIT xt
45 (data (i32.const 536) "\80\01\00\00") ;; MODE addr (384)
46 (data (i32.const 540) "\0a\00\00\00") ;; @ (fetch) xt
47 (data (i32.const 544) "\0c\00\00\00") ;; EXECUTE xt
48 (data (i32.const 548) "\0d\00\00\00") ;; NOOP xt
49 (data (i32.const 552) "\01\00\00\00") ;; RET
50 (data (i32.const 556) "\10\00\00\00") ;; DROP <-- INTERP-END
51 (data (i32.const 560) "\19\00\00\00") ;; BYE
53 (data (i32.const 600) "\03\00\00\00") ;; RINIT xt
54 (data (i32.const 604) "\00\02\00\00") ;; INTERPRET xt (512)
55 (data (i32.const 608) "\12\00\00\00") ;; JMP xt
56 (data (i32.const 612) "\58\02\00\00") ;; quit location (600)
57 (; Test instructions ;)
58 (data (i32.const 640) "\02\00\00\00") ;; LIT
59 (data (i32.const 644) "\02\00\00\00") ;; 2
60 (data (i32.const 648) "\06\00\00\00") ;; DUP
61 (data (i32.const 652) "\07\00\00\00") ;; +
62 (data (i32.const 656) "\09\00\00\00") ;; .
63 (data (i32.const 660) "\12\00\00\00") ;; JMP
64 (data (i32.const 664) "\58\02\00\00") ;; quit addr
66 (data (i32.const 696) "\14\00\00\00") ;; WB0
67 (data (i32.const 700) "\05\00\00\00") ;; KEY <-- KEYLOOP
68 (data (i32.const 704) "\06\00\00\00") ;; DUP
69 (data (i32.const 708) "\18\00\00\00") ;; J-1: 18
70 (data (i32.const 712) "\0c\03\00\00") ;; addr of WORDEND
71 (data (i32.const 716) "\11\00\00\00") ;; WS?
72 (data (i32.const 720) "\0e\00\00\00") ;; JZ:
73 (data (i32.const 724) "\00\03\00\00") ;; addr of DOCHAR
74 (data (i32.const 728) "\10\00\00\00") ;; DROP
75 (data (i32.const 732) "\12\00\00\00") ;; JMP:
76 (data (i32.const 736) "\bc\02\00\00") ;; addr of KEYLOOP
77 (data (i32.const 740) "\05\00\00\00") ;; KEY <-- WORDLOOP
78 (data (i32.const 744) "\11\00\00\00") ;; WS?
79 (data (i32.const 748) "\0f\00\00\00") ;; JNZ:
80 (data (i32.const 752) "\0c\03\00\00") ;; addr of WORDEND
81 (data (i32.const 756) "\06\00\00\00") ;; DUP
82 (data (i32.const 760) "\18\00\00\00") ;; J-1:
83 (data (i32.const 764) "\0c\03\00\00") ;; addr of WORDEND
84 (data (i32.const 768) "\13\00\00\00") ;; WPUTC <-- DOCHAR
85 (data (i32.const 772) "\12\00\00\00") ;; JMP:
86 (data (i32.const 776) "\e4\02\00\00") ;; addr of WORDLOOP
87 (data (i32.const 780) "\10\00\00\00") ;; DROP <-- WORDEND
88 (data (i32.const 784) "\02\00\00\00") ;; LIT (push addr of wbuf, 256)
89 (data (i32.const 788) "\00\01\00\00") ;; wbuf addr (utf16 string)
90 (data (i32.const 792) "\17\00\00\00") ;; WB!LEN
91 (data (i32.const 796) "\01\00\00\00") ;; RET
93 (data (i32.const 800) "\06\00\00\00") ;; DUP
94 (data (i32.const 804) "\15\00\00\00") ;; DICT_GET
95 (data (i32.const 808) "\06\00\00\00") ;; DUP
96 (data (i32.const 812) "\0e\00\00\00") ;; JZ:
97 (data (i32.const 816) "\44\03\00\00") ;; donum (832)
98 (data (i32.const 820) "\1a\00\00\00") ;; SWAP
99 (data (i32.const 824) "\10\00\00\00") ;; DROP
100 (data (i32.const 828) "\0c\00\00\00") ;; EXECUTE
101 (data (i32.const 832) "\01\00\00\00") ;; RET
102 (data (i32.const 836) "\10\00\00\00") ;; DROP (xt from dictionary)
103 (data (i32.const 840) "\16\00\00\00") ;; NUMBER <-- donum, pushes NUM, UNPARSED
104 (data (i32.const 844) "\06\00\00\00") ;; DUP
105 (data (i32.const 848) "\0f\00\00\00") ;; JNZ:
106 (data (i32.const 852) "\60\03\00\00") ;; donum_err (864)
107 (data (i32.const 856) "\10\00\00\00") ;; DROP
108 (data (i32.const 860) "\01\00\00\00") ;; RET
109 (data (i32.const 864) "\10\00\00\00") ;; PARSE_ERR <-- donum_err
110 (data (i32.const 868) "\10\00\00\00") ;; ( DROP DROP )
111 (data (i32.const 872) "\19\00\00\00") ;; BYE
113 (data (i32.const 900) "\b8\02\00\00") ;; WORD
114 (data (i32.const 904) "\1c\00\00\00") ;; HERE
115 (data (i32.const 908) "\1d\00\00\00") ;; VOCAB_SET
116 (data (i32.const 912) "\01\00\00\00") ;; RET
117 (data (i32.const 1000) "\08\00\00\00") ;; "word" size
118 (data (i32.const 1004) "w\00o\00r\00d\00") ;; utf16
119 (data (i32.const 1012) "\12\00\00\00") ;; "interpret" size
120 (data (i32.const 1016) "i\00n\00t\00e\00r\00p\00r\00e\00t\00") ;; utf16
121 (data (i32.const 1034) "\00\00") ;; align 32-bit
122 (data (i32.const 1036) "\08\00\00\00") ;; "quit" size
123 (data (i32.const 1040) "q\00u\00i\00t\00") ;; utf16
125 (export "memory" (memory $0))
126 (export "main" (func $main))
127 (func $main (result i32)
130 (func $interpret (result i32)
134 (local $inbuf_head i32)
135 (local $wbuf_head i32)
143 set_local $inbuf_head
159 block $default block $op0 block $ret block $lit block $rinit
160 block $word block $key block $dup block $plus block $noop2 block $emit
161 block $fetch block $set block $execute block $noop block $jz block $jnz
162 block $drop block $wsbool block $jmp block $wputc block $wbzero
163 block $dictget block $parsenum block $wbsetlen block $jneg1 block $swap
164 block $words block $here block $dictset
166 br_table $op0 $ret (;2;)$lit $rinit (;4;)$word $key (;6;)$dup $plus
167 (;8;)$jmp $emit (;10;)$fetch $set (;12;)$execute $noop (;14;)$jz $jnz
168 (;16;)$drop $wsbool (;18;)$jmp $wputc (;20;)$wbzero $dictget
169 (;22;)$parsenum $wbsetlen (;24;)$jneg1 $bye (;26;)$swap $words
170 (;28;)$here $dictset $default
213 get_global $wbuf_data
220 i32.const 396 (; load BASE ;)
236 get_global $wbuf_data
346 get_global $inbuf_size
348 get_local $inbuf_head
349 get_global $inbuf_data
353 get_local $inbuf_head
356 get_local $inbuf_head
359 set_local $inbuf_head
366 get_global $inbuf_size
372 i32.const -1 ;; <- keyval sent if sz == 0