; Performance ; A looper program for timing measurements ; for i := 0 to n ; for j := 0 to m ; nop ; write "a" ; R1 constant 1 ; R2 n number of iterations for outer loop ; R3 m number of iterations for inner loop ; R4 i, outer loop counter: 0 ... n ; R5 j, inner loop counter 0 ... m ; R6 constant 2, trap write code ; R7 address of string to write ; R8 number of characters to write lea R1,1[R0] ; R1 = constant 1, loop increment load R2,n[R0] ; R2 = outer loop limit load R3,m[R0] ; R3 = inner loop limit lea R6,2[R0] ; R6 := 2 = trap write code lea R7,out[R0] ; R7 = address of output string lea R8,1[R0] ; R8 = length of output string add R4,R0,R0 ; i := 0, initialize outer loop counter outerloop cmp R4,R2 ; i >= n jumpge done[R0] ; if i >= n then goto done add R5,R0,R0 ; j := 0, initialize inner loop counter innerloop cmp R5,R3 ; j >= m jumpge innerdone[R0] ; if j >= m then goto innerdone add R5,R5,R1 ; j := j + 1 jump innerloop[R0] ; goto innerloop innerdone trap R6,R7,R8 ; write "a" add R4,R4,R1 ; i := i + 1 jump outerloop[R0] ; goto outer loop done trap R0,R0,R0 ; terminate n data 10 ; outer loop iterations m data 1000 ; inner loop iterations out data 97 ; character code for 'a'