Top level CFG BL 0:[(0,5) P:[] S:[1]] 0 ld [fibbs],%t4 1 st %t4,[$a0] 2 call init 3 st "Enter indices of eight fibbonacci numbers:",[$a0] 4 call PCAT$write_string 5 call PCAT$write_newline BL 1:[(6,9) P:[0,7] S:[3,2]] 6 L3: 7 ld [j],%t5 8 cmp %t5,8 9 bl L4 BL 2:[(10,10) P:[1] S:[8]] 10 ba L5 BL 3:[(11,17) P:[1] S:[5,4]] 11 L4: 12 call PCAT$read_int 13 st %o0,[n] 14 ld [n],%t6 15 ld [N],%t7 16 cmp %t6,%t7 17 bg L6 BL 4:[(18,18) P:[3] S:[6]] 18 ba L7 BL 5:[(19,26) P:[3] S:[7]] 19 L6: 20 st "Maximum index is ",[$a0] 21 call PCAT$write_string 22 ld [N],%t8 23 st %t8,[$a0] 24 call PCAT$write_int 25 call PCAT$write_newline 26 ba L8 BL 6:[(27,39) P:[4] S:[7]] 27 L7: 28 ld [n],%t9 29 st %t9,[$a0] 30 call PCAT$write_int 31 st " ",[$a0] 32 call PCAT$write_string 33 ld [n],%t11 34 st %t11,[$a0] 35 call fibb 36 mov %o0,%t10 37 st %t10,[$a0] 38 call PCAT$write_int 39 call PCAT$write_newline BL 7:[(40,44) P:[5,6] S:[1]] 40 L8: 41 ld [j],%t12 42 add %t12,1,%t13 43 st %t13,[j] 44 ba L3 BL 8:[(45,46) P:[2] S:[]] 45 L5: 46 return exits: [8] Iterations = 4 0 { j N n } 1 { j N n } 2 { } 3 { j N n } 4 { j N n } 5 { j N n } 6 { j N n } 7 { j N n } 8 { } Proc init CFG BL 0:[(0,1) P:[] S:[2,1]] 0 cmp 0,0 1 bge L0 BL 1:[(2,2) P:[0] S:[2]] 2 call PCAT$bounds_error BL 2:[(3,8) P:[0,1] S:[4,3]] 3 L0: 4 ld [a],%t0 5 sub %t0,1,%t1 6 ld [%t1],%t1 7 cmp 0,%t1 8 bl L1 BL 3:[(9,9) P:[2] S:[4]] 9 call PCAT$bounds_error BL 4:[(10,14) P:[2,3] S:[6,5]] 10 L1: 11 add %t0,0,%t0 12 st 1,[%t0] 13 cmp 1,0 14 bge L2 BL 5:[(15,15) P:[4] S:[6]] 15 call PCAT$bounds_error BL 6:[(16,21) P:[4,5] S:[8,7]] 16 L2: 17 ld [a],%t2 18 sub %t2,1,%t3 19 ld [%t3],%t3 20 cmp 1,%t3 21 bl L3 BL 7:[(22,22) P:[6] S:[8]] 22 call PCAT$bounds_error BL 8:[(23,25) P:[6,7] S:[9]] 23 L3: 24 add %t2,1,%t2 25 st 1,[%t2] BL 9:[(26,31) P:[8,15] S:[11,10]] 26 L4: 27 ld [i],%t4 28 ld [N],%t5 29 sub %t5,1,%t6 30 cmp %t4,%t6 31 bl L5 BL 10:[(32,32) P:[9] S:[16]] 32 ba L6 BL 11:[(33,36) P:[9] S:[13,12]] 33 L5: 34 ld [i],%t7 35 cmp %t7,0 36 bge L7 BL 12:[(37,37) P:[11] S:[13]] 37 call PCAT$bounds_error BL 13:[(38,43) P:[11,12] S:[15,14]] 38 L7: 39 ld [a],%t8 40 sub %t8,1,%t9 41 ld [%t9],%t9 42 cmp %t7,%t9 43 bl L8 BL 14:[(44,44) P:[13] S:[15]] 44 call PCAT$bounds_error BL 15:[(45,52) P:[13,14] S:[9]] 45 L8: 46 add %t8,%t7,%t8 47 ld [I],%t10 48 st %t10,[%t8] 49 ld [i],%t11 50 add %t11,1,%t12 51 st %t12,[i] 52 ba L4 BL 16:[(53,54) P:[10] S:[]] 53 L6: 54 return exits: [16] Iterations = 9 0 { i I a N } 1 { i I a N } 2 { i I a N %t0 } 3 { i I a N %t0 } 4 { i I a N } 5 { i I a N } 6 { i I %t2 a N } 7 { i I %t2 a N } 8 { i I a N } 9 { i I a N } 10 { } 11 { i I a N %t7 } 12 { i I a N %t7 } 13 { i I %t8 a N %t7 } 14 { i I %t8 a N %t7 } 15 { i I a N } 16 { } Proc fibb CFG BL 0:[(0,2) P:[] S:[2,1]] 0 ld [i],%t1 1 cmp %t1,0 2 bge L3 BL 1:[(3,3) P:[0] S:[2]] 3 call PCAT$bounds_error BL 2:[(4,9) P:[0,1] S:[4,3]] 4 L3: 5 ld [fibbs],%t2 6 sub %t2,1,%t3 7 ld [%t3],%t3 8 cmp %t1,%t3 9 bl L4 BL 3:[(10,10) P:[2] S:[4]] 10 call PCAT$bounds_error BL 4:[(11,16) P:[2,3] S:[6,5]] 11 L4: 12 add %t2,%t1,%t2 13 ld [%t2],%t0 14 ld [I],%t4 15 cmp %t0,%t4 16 be L0 BL 5:[(17,17) P:[4] S:[11]] 17 ba L1 BL 6:[(18,21) P:[4] S:[8,7]] 18 L0: 19 ld [i],%t5 20 cmp %t5,0 21 bge L5 BL 7:[(22,22) P:[6] S:[8]] 22 call PCAT$bounds_error BL 8:[(23,28) P:[6,7] S:[10,9]] 23 L5: 24 ld [fibbs],%t6 25 sub %t6,1,%t7 26 ld [%t7],%t7 27 cmp %t5,%t7 28 bl L6 BL 9:[(29,29) P:[8] S:[10]] 29 call PCAT$bounds_error BL 10:[(30,44) P:[8,9] S:[12]] 30 L6: 31 add %t6,%t5,%t6 32 ld [i],%t9 33 sub %t9,2,%t10 34 st %t10,[$a0] 35 call fibb 36 mov %o0,%t8 37 ld [i],%t12 38 sub %t12,1,%t13 39 st %t13,[$a0] 40 call fibb 41 mov %o0,%t11 42 add %t8,%t11,%t14 43 st %t14,[%t6] 44 ba L2 BL 11:[(45,45) P:[5] S:[12]] 45 L1: BL 12:[(46,49) P:[10,11] S:[14,13]] 46 L2: 47 ld [i],%t16 48 cmp %t16,0 49 bge L7 BL 13:[(50,50) P:[12] S:[14]] 50 call PCAT$bounds_error BL 14:[(51,56) P:[12,13] S:[16,15]] 51 L7: 52 ld [fibbs],%t17 53 sub %t17,1,%t18 54 ld [%t18],%t18 55 cmp %t16,%t18 56 bl L8 BL 15:[(57,57) P:[14] S:[16]] 57 call PCAT$bounds_error BL 16:[(58,62) P:[14,15] S:[]] 58 L8: 59 add %t17,%t16,%t17 60 ld [%t17],%t15 61 mov %t15,%i0 62 return BL 17:[(63,63) P:[] S:[]] 63 return exits: [16,17] Iterations = 4 0 { i I %t1 fibbs } 1 { i I %t1 fibbs } 2 { i I %t2 fibbs %t1 } 3 { i I %t2 fibbs %t1 } 4 { i fibbs } 5 { i fibbs } 6 { i fibbs %t5 } 7 { i fibbs %t5 } 8 { i %t6 fibbs %t5 } 9 { i %t6 fibbs %t5 } 10 { i fibbs } 11 { i fibbs } 12 { %t16 fibbs } 13 { %t16 fibbs } 14 { %t17 %t16 } 15 { %t17 %t16 } 16 { } 17 { }