.symbol fp 30 sp 29 retval 28 rads 27 data 1100 maxdata 1120 .code 0 mov fp #3500 mov sp #3000 jal rads main trap r0 #0 ; fun init pv 0 fs 1 :init ; gnAsg :(#1 0 ) ; gnAsg :((vec data #1 )(- maxdata #1 )) ; gnBop :(- maxdata #1 ) ; gnBop :(< #1 maxdata ) st r1 @1 fp st r2 @2 fp st r3 @3 fp add fp fp #4 st rads @0 fp mov r1 #0 jmp L102 :L103 ld r2 maxdata sub r3 r2 r1 ; vec LHS st r3 @data r1 add r1 r1 #1 :L102 ld r3 maxdata lt r2 r1 r3 jt r2 L103 :L101 ld rads @0 fp sub fp fp #4 ld r3 @3 fp ld r2 @2 fp ld r1 @1 fp ret rads ; fun show pv 0 fs 1 :show ; gnAsg :(#1 0 ) ; gnBop :(< #1 maxdata ) st r1 @1 fp st r2 @2 fp st r3 @3 fp add fp fp #4 st rads @0 fp mov r1 #0 jmp L105 :L106 ; vec RHS ld r2 @data r1 trap r2 #1 add r1 r1 #1 :L105 ld r3 maxdata lt r2 r1 r3 jt r2 L106 mov r2 #92 trap r2 #2 mov r2 #110 trap r2 #2 :L104 ld rads @0 fp sub fp fp #4 ld r3 @3 fp ld r2 @2 fp ld r1 @1 fp ret rads ; fun swap pv 2 fs 3 :swap ; gnAsg :(#3 (vec data #1 )) ; gnAsg :((vec data #1 )(vec data #2 )) ; gnAsg :((vec data #2 )#3 ) st r1 @1 fp st r2 @2 fp st r3 @3 fp st r4 @4 fp add fp fp #5 st rads @0 fp pop sp r2 pop sp r1 ; vec RHS ld r4 @data r1 mov r3 r4 ; vec RHS ld r4 @data r2 ; vec LHS st r4 @data r1 ; vec LHS st r3 @data r2 :L107 ld rads @0 fp sub fp fp #5 ld r4 @4 fp ld r3 @3 fp ld r2 @2 fp ld r1 @1 fp ret rads ; fun sort pv 0 fs 2 :sort ; gnAsg :(#1 0 ) ; gnAsg :(#2 0 ) ; gnBop :(< (vec data (+ #2 1 ))(vec data #2 )) ; gnBop :(+ #2 1 ) ; gnBop :(+ #2 1 ) ; gnBop :(< #2 (- maxdata 1 )) ; gnBop :(- maxdata 1 ) ; gnBop :(< #1 maxdata ) st r1 @1 fp st r2 @2 fp st r3 @3 fp st r4 @4 fp st r5 @5 fp add fp fp #6 st rads @0 fp mov r1 #0 jmp L109 :L110 mov r2 #0 jmp L111 :L112 ; vec RHS add r4 r2 #1 ld r3 @data r4 ; vec RHS ld r5 @data r2 lt r4 r3 r5 jf r4 L113 push sp r2 add r3 r2 #1 push sp r3 jal rads swap :L113 add r2 r2 #1 :L111 ld r4 maxdata sub r5 r4 #1 lt r3 r2 r5 jt r3 L112 add r1 r1 #1 :L109 ld r4 maxdata lt r3 r1 r4 jt r3 L110 :L108 ld rads @0 fp sub fp fp #6 ld r5 @5 fp ld r4 @4 fp ld r3 @3 fp ld r2 @2 fp ld r1 @1 fp ret rads ; fun main pv 0 fs 0 :main ; gnAsg :(maxdata 5 ) st r1 @1 fp add fp fp #2 st rads @0 fp mov r1 #5 st r1 maxdata jal rads init jal rads show jal rads sort jal rads show :L114 ld rads @0 fp sub fp fp #2 ld r1 @1 fp ret rads .data 200 .end