blob: 5a5e20fdb4a6ac4eb3610e8cc4a2988a250f4590 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
;;; TOOL: run-interp
;;; ARGS: --trace
(module
(func $fib (param $n i32) (result i32)
local.get $n
i32.const 1
i32.le_s
if (result i32)
i32.const 1
else
local.get $n
i32.const 1
i32.sub
call $fib
local.get $n
i32.mul
end)
(func (export "main") (result i32)
i32.const 3
call $fib))
(;; STDOUT ;;;
>>> running export "main":
#0. 100: V:0 | i32.const 3
#0. 108: V:1 | call $0
#1. 0: V:1 | local.get $1
#1. 8: V:2 | i32.const 1
#1. 16: V:3 | i32.le_s 3, 1
#1. 20: V:2 | br_unless @44, 0
#1. 44: V:1 | local.get $1
#1. 52: V:2 | i32.const 1
#1. 60: V:3 | i32.sub 3, 1
#1. 64: V:2 | call $0
#2. 0: V:2 | local.get $1
#2. 8: V:3 | i32.const 1
#2. 16: V:4 | i32.le_s 2, 1
#2. 20: V:3 | br_unless @44, 0
#2. 44: V:2 | local.get $1
#2. 52: V:3 | i32.const 1
#2. 60: V:4 | i32.sub 2, 1
#2. 64: V:3 | call $0
#3. 0: V:3 | local.get $1
#3. 8: V:4 | i32.const 1
#3. 16: V:5 | i32.le_s 1, 1
#3. 20: V:4 | br_unless @44, 1
#3. 28: V:3 | i32.const 1
#3. 36: V:4 | br @84
#3. 84: V:4 | drop_keep $1 $1
#3. 96: V:3 | return
#2. 72: V:3 | local.get $2
#2. 80: V:4 | i32.mul 1, 2
#2. 84: V:3 | drop_keep $1 $1
#2. 96: V:2 | return
#1. 72: V:2 | local.get $2
#1. 80: V:3 | i32.mul 2, 3
#1. 84: V:2 | drop_keep $1 $1
#1. 96: V:1 | return
#0. 116: V:1 | return
main() => i32:6
;;; STDOUT ;;)
|