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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
|
export data $a = align 4 { w 12, w 34, w 56, }
export data $b = align 4 { w 97, w 98, w 99, }
export data $c = align 4 { w 0, }
export
function w $f() {
@start.1
@body.2
%.1 =w loadw $c
%.2 =w add %.1, 1
storew %.2, $c
ret 3
}
export
function w $g(w %.1, ...) {
@start.3
%.2 =l alloc4 4
storew %.1, %.2
%.3 =l alloc8 24
%.7 =l alloc8 8
%.9 =l alloc4 4
@body.4
%.4 =w loadw %.2
%.5 =l extsw %.4
%.6 =l mul %.5, 1
%.8 =l extsw 0
storel %.8, %.7
storew 1, %.9
vastart %.3
%.10 =w loadw %.9
%.11 =w sub %.10, 1
storew %.11, %.9
%.12 =l loadl %.7
%.13 =l vaarg %.3
%.14 =w loadw %.9
ret %.14
}
export
function w $main() {
@start.5
%.1 =l alloc4 4
%.5 =l alloc8 8
%.14 =l alloc8 8
%.19 =l alloc4 4
%.24 =l alloc4 4
%.45 =l alloc8 8
%.65 =l alloc8 8
%.79 =l alloc8 8
@body.6
storew 0, %.1
%.2 =w call $f()
%.3 =l extsw %.2
%.4 =l mul %.3, 4
%.6 =l extsw 0
storel %.6, %.5
%.7 =w loadw %.1
%.8 =w loadw $c
%.9 =w cnew %.8, 1
%.10 =w add %.7, %.9
storew %.10, %.1
%.11 =w loadw $c
%.12 =w add %.11, 1
storew %.12, $c
%.13 =l loadl %.5
%.15 =w loadw %.1
%.16 =w loadw $c
%.17 =w cnew %.16, 2
%.18 =w add %.15, %.17
storew %.18, %.1
%.20 =w loadw %.1
%.21 =w loadw $c
%.22 =w cnew %.21, 2
%.23 =w add %.20, %.22
storew %.23, %.1
%.25 =w loadw %.1
%.26 =w loadw $c
%.27 =w cnew %.26, 2
%.28 =w add %.25, %.27
storew %.28, %.1
%.29 =w loadw %.1
%.30 =l loadl %.5
%.31 =l extsw 0
%.32 =w cnel %.30, %.31
%.33 =w add %.29, %.32
storew %.33, %.1
%.34 =w loadw $c
%.35 =w add %.34, 1
storew %.35, $c
storel $a, %.5
%.36 =l alloc4 %.4
%.37 =w loadw %.1
%.38 =w loadw $c
%.39 =w cnew %.38, 3
%.40 =w add %.37, %.39
storew %.40, %.1
%.41 =w loadw %.1
%.42 =l loadl %.5
%.43 =w cnel %.42, $a
%.44 =w add %.41, %.43
storew %.44, %.1
%.46 =w loadw %.1
%.47 =w loadw $c
%.48 =w cnew %.47, 3
%.49 =w add %.46, %.48
storew %.49, %.1
%.50 =w loadw %.1
%.51 =l loadl %.5
%.52 =w cnel %.51, $a
%.53 =w add %.50, %.52
storew %.53, %.1
%.54 =w loadw $c
%.55 =w add %.54, 1
storew %.55, $c
%.56 =l loadl %.5
%.57 =l extsw 0
%.58 =w loadw %.1
%.59 =w loadw $c
%.60 =w cnew %.59, 4
%.61 =w add %.58, %.60
storew %.61, %.1
%.62 =w loadw $c
%.63 =w add %.62, 1
storew %.63, $c
%.64 =l loadl %.5
%.66 =l extsw 0
storel %.66, %.65
%.67 =l loadl %.65
%.68 =w loadw %.1
%.69 =w loadw $c
%.70 =w cnew %.69, 5
%.71 =w add %.68, %.70
storew %.71, %.1
%.72 =w loadw %.1
%.73 =l loadl %.5
%.74 =w call $g(w 3, ..., l %.73)
%.75 =w add %.72, %.74
storew %.75, %.1
%.76 =w loadw $c
%.77 =w add %.76, 1
storew %.77, $c
%.78 =l loadl %.5
%.80 =w loadw %.1
%.81 =w loadw $c
%.82 =w cnew %.81, 6
%.83 =w add %.80, %.82
storew %.83, %.1
%.84 =w loadw %.1
ret %.84
}
|