0 .s 0 rz 0 0 retv 28 0 bp 29 0 rads 30 0 sp 31 0 print 1 0 printch 2 0 .a 0 0 .c 0 ld sp #1000 ;; initialise sp 1 ld bp #3000 ;; initialise bp 2 ;; ---- Call 5 2 jal rads label_5 3 ;; ---- Stop 3 trap stop rz 4 ;; ---- Func 0 0 4 :label_5 4 add bp bp #1 5 st @0 bp rads 6 ;; ---- save regs 6 st @1 sp r1 7 add sp sp #1 8 ;; ---- Lvalg 1 8 ;; ---- Lit 10 8 ;; ---- Set 8 ;; ---- 6: N = 10; 8 ld r1 #10 9 st @2001 rz r1 10 ;; ---- Call 58 10 jal rads label_58 11 ;; ---- Lit 0 11 ;; ---- Lit 5 11 ;; ---- Call 383 11 ld r1 #5 12 st @2 bp r1 13 st @1 bp r0 14 jal rads label_383 15 ;; ---- Lit 2 15 ;; ---- Lit 8 15 ;; ---- Call 383 15 ld r1 #8 16 st @2 bp r1 17 ld r1 #2 18 st @1 bp r1 19 jal rads label_383 20 ;; ---- Call 106 20 jal rads label_106 21 ;; ---- Lit 0 21 ;; ---- Rvalg 1 21 ;; ---- Lit 1 21 ;; ---- Sub 21 ld r1 2001 22 sub r1 r1 #1 23 ;; ---- Call 164 23 st @2 bp r1 24 st @1 bp r0 25 jal rads label_164 26 ;; ---- Call 106 26 jal rads label_106 27 ;; ---- Ret0 27 ld rads @0 bp 28 sub bp bp #1 29 ;; ---- restore regs 29 ld r1 @0 sp 30 sub sp sp #1 31 jr rads 32 ;; ---- Func 0 1 32 :label_58 32 add bp bp #2 33 ;; ---- save regs 33 st @1 sp r1 34 st @2 sp r2 35 add sp sp #2 36 ;; ---- Lval 1 36 ;; ---- Lit 0 36 ;; ---- Set 36 ;; ---- 16: i = 0; 36 st @-1 bp r0 37 ;; ---- Rval 1 37 :label_70 37 ;; ---- Rvalg 1 37 ;; ---- Lt 37 ld r1 @-1 bp 38 ld r2 2001 39 sub rz r1 r2 40 jmp ge label_105 41 ;; ---- Jz 105 41 ;; ---- 17: while( i x) 148 ;; ---- Lval 2 148 ;; ---- Rval 2 148 ;; ---- Lit 1 148 ;; ---- Sub 148 ld r1 @-2 bp 149 sub r1 r1 #1 150 ;; ---- Set 150 ;; ---- 48: j = j - 1; 150 st @-2 bp r1 151 ;; ---- Jmp 278 151 jmp always label_278 152 ;; ---- Lval 3 152 :label_307 152 ;; ---- Rval 3 152 ;; ---- Lit 1 152 ;; ---- Add 152 ld r1 @-3 bp 153 add r1 r1 #1 154 ;; ---- Set 154 ;; ---- 49: i = i + 1; 154 st @-3 bp r1 155 ;; ---- Lvalg 2 155 :label_318 155 ;; ---- Rval 3 155 ;; ---- Index 155 ld r1 #2002 156 ld r2 @-3 bp 157 add r1 r1 r2 158 ;; ---- Fetch 158 ld r1 @0 r1 159 ;; ---- Rval 4 159 ;; ---- Lt 159 ld r2 @-4 bp 160 sub rz r1 r2 161 jmp ge label_347 162 ;; ---- Jz 347 162 ;; ---- 50: while(a[i] < x) 162 ;; ---- Lval 3 162 ;; ---- Rval 3 162 ;; ---- Lit 1 162 ;; ---- Add 162 ld r1 @-3 bp 163 add r1 r1 #1 164 ;; ---- Set 164 ;; ---- 51: i = i + 1; 164 st @-3 bp r1 165 ;; ---- Jmp 318 165 jmp always label_318 166 ;; ---- Rval 3 166 :label_347 166 ;; ---- Rval 2 166 ;; ---- Lt 166 ld r1 @-3 bp 167 ld r2 @-2 bp 168 sub rz r1 r2 169 jmp ge label_369 170 ;; ---- Jz 369 170 ;; ---- 52: if( i < j ) swap(i,j); 170 ;; ---- Rval 3 170 ;; ---- Rval 2 170 ;; ---- Call 383 170 ld r1 @-2 bp 171 st @2 bp r1 172 ld r1 @-3 bp 173 st @1 bp r1 174 jal rads label_383 175 ;; ---- Jmp 376 175 jmp always label_376 176 ;; ---- Lval 1 176 :label_369 176 ;; ---- Lit 0 176 ;; ---- Set 176 ;; ---- 53: else flag = 0; 176 st @-1 bp r0 177 ;; ---- Jmp 261 177 :label_376 177 jmp always label_261 178 ;; ---- Rval 2 178 :label_379 178 ;; ---- Ret1 178 ;; ---- 55: return j; 178 ld r1 @-2 bp 179 or retv r1 rz 180 ld rads @0 bp 181 sub bp bp #7 182 ;; ---- restore regs 182 ld r1 @-1 sp 183 ld r2 @0 sp 184 sub sp sp #2 185 jr rads 186 ;; ---- Func 2 1 186 :label_383 186 add bp bp #4 187 ;; ---- save regs 187 st @1 sp r1 188 st @2 sp r2 189 st @3 sp r3 190 add sp sp #3 191 ;; ---- Lval 1 191 ;; ---- Lvalg 2 191 ;; ---- Rval 3 191 ;; ---- Index 191 ld r1 #2002 192 ld r2 @-3 bp 193 add r1 r1 r2 194 ;; ---- Fetch 194 ld r1 @0 r1 195 ;; ---- Set 195 ;; ---- 59: t = a[i]; 195 st @-1 bp r1 196 ;; ---- Lvalg 2 196 ;; ---- Rval 3 196 ;; ---- Index 196 ld r1 #2002 197 ld r2 @-3 bp 198 add r1 r1 r2 199 ;; ---- Lvalg 2 199 ;; ---- Rval 2 199 ;; ---- Index 199 ld r2 #2002 200 ld r3 @-2 bp 201 add r2 r2 r3 202 ;; ---- Fetch 202 ld r2 @0 r2 203 ;; ---- Set 203 ;; ---- 60: a[i] = a[j]; 203 st @0 r1 r2 204 ;; ---- Lvalg 2 204 ;; ---- Rval 2 204 ;; ---- Index 204 ld r1 #2002 205 ld r2 @-2 bp 206 add r1 r1 r2 207 ;; ---- Rval 1 207 ;; ---- Set 207 ;; ---- 61: a[j] = t; 207 ld r2 @-1 bp 208 st @0 r1 r2 209 ;; ---- Ret0 209 sub bp bp #4 210 ;; ---- restore regs 210 ld r1 @-2 sp 211 ld r2 @-1 sp 212 ld r3 @0 sp 213 sub sp sp #3 214 jr rads 215 215 .e