VARS VAR a CODE mov 2,%t2 cmp %t2,0 bge L0 mov 0,%t2 L0: mov 2,%t3 cmp %t3,0 bge L1 mov 0,%t3 L1: mov 1,%t0 add %t0,%t2,%t0 add %t0,%t3,%t0 st %t0,[$a0] call PCAT$alloc add %o0,%t0,%t1 sub %t1,%t3,%t4 L2: cmp %t1,%t4 ble L3 dec %t1 st 2,[%t1] ba L2 L3: sub %t1,%t2,%t5 L4: cmp %t1,%t5 ble L5 dec %t1 st 1,[%t1] ba L4 L5: dec %t0 st %t0,[%o0] st %t1,[a] ENDCODE VARS VAR b CODE mov 2,%t8 cmp %t8,0 bge L6 mov 0,%t8 L6: ld [a],%t9 mov 1,%t6 add %t6,%t8,%t6 st %t6,[$a0] call PCAT$alloc add %o0,%t6,%t7 sub %t7,%t8,%t10 L7: cmp %t7,%t10 ble L8 dec %t7 st %t9,[%t7] ba L7 L8: dec %t6 st %t6,[%o0] st %t7,[b] ENDCODE CODE st "b[0][0] is ",[$a0] call PCAT$write_string cmp 0,0 bge L9 call PCAT$bounds_error L9: ld [b],%t12 sub %t12,1,%t13 ld [%t13],%t13 cmp 0,%t13 bl L10 call PCAT$bounds_error L10: add %t12,0,%t12 cmp 0,0 bge L11 call PCAT$bounds_error L11: ld [%t12],%t14 sub %t14,1,%t15 ld [%t15],%t15 cmp 0,%t15 bl L12 call PCAT$bounds_error L12: add %t14,0,%t14 ld [%t14],%t11 st %t11,[$a0] call PCAT$write_int call PCAT$write_newline st "b[0][1] is ",[$a0] call PCAT$write_string cmp 0,0 bge L13 call PCAT$bounds_error L13: ld [b],%t17 sub %t17,1,%t18 ld [%t18],%t18 cmp 0,%t18 bl L14 call PCAT$bounds_error L14: add %t17,0,%t17 cmp 1,0 bge L15 call PCAT$bounds_error L15: ld [%t17],%t19 sub %t19,1,%t20 ld [%t20],%t20 cmp 1,%t20 bl L16 call PCAT$bounds_error L16: add %t19,1,%t19 ld [%t19],%t16 st %t16,[$a0] call PCAT$write_int call PCAT$write_newline st "b[1][0] is ",[$a0] call PCAT$write_string cmp 1,0 bge L17 call PCAT$bounds_error L17: ld [b],%t22 sub %t22,1,%t23 ld [%t23],%t23 cmp 1,%t23 bl L18 call PCAT$bounds_error L18: add %t22,1,%t22 cmp 0,0 bge L19 call PCAT$bounds_error L19: ld [%t22],%t24 sub %t24,1,%t25 ld [%t25],%t25 cmp 0,%t25 bl L20 call PCAT$bounds_error L20: add %t24,0,%t24 ld [%t24],%t21 st %t21,[$a0] call PCAT$write_int call PCAT$write_newline st "b[1][3] is ",[$a0] call PCAT$write_string cmp 1,0 bge L21 call PCAT$bounds_error L21: ld [b],%t27 sub %t27,1,%t28 ld [%t28],%t28 cmp 1,%t28 bl L22 call PCAT$bounds_error L22: add %t27,1,%t27 cmp 3,0 bge L23 call PCAT$bounds_error L23: ld [%t27],%t29 sub %t29,1,%t30 ld [%t30],%t30 cmp 3,%t30 bl L24 call PCAT$bounds_error L24: add %t29,3,%t29 ld [%t29],%t26 st %t26,[$a0] call PCAT$write_int call PCAT$write_newline cmp 2,0 bge L25 call PCAT$bounds_error L25: ld [b],%t31 sub %t31,1,%t32 ld [%t32],%t32 cmp 2,%t32 bl L26 call PCAT$bounds_error L26: add %t31,2,%t31 cmp 0,0 bge L27 call PCAT$bounds_error L27: ld [%t31],%t33 sub %t33,1,%t34 ld [%t34],%t34 cmp 0,%t34 bl L28 call PCAT$bounds_error L28: add %t33,0,%t33 st 10,[%t33] return ENDCODE