.text main: .data a: .word 0 x: .word 0 y: .word 0 z: .word 0 result: .word 0 statuscode: .word 0 threshold: .word 0 .text # B0 successors: B3 B1 li $t0,10 sw $t0,threshold li $v0,5 syscall move $t0,$v0 sw $t0,a lw $t0,a li $t1,0 seq $t0,$t0,$t1 bnez $t0,GETNUMS # B1 successors: B3 B2 lw $t0,a li $t1,1 seq $t0,$t0,$t1 bnez $t0,GETNUMS # B2 successors: B10 b ERROR # B3 successors: B6 B4 GETNUMS: li $v0,5 syscall move $t0,$v0 sw $t0,x li $v0,5 syscall move $t0,$v0 sw $t0,y lw $t0,a li $t1,1 sne $t0,$t0,$t1 bnez $t0,DIVNUMS # B4 successors: B9 B5 MULNUMS: lw $t0,x lw $t1,y mul $t0,$t0,$t1 sw $t0,result lw $t0,result lw $t1,threshold sgt $t0,$t0,$t1 bnez $t0,OVERFLOW # B5 successors: B8 b WRITERESULT # B6 successors: B9 B7 DIVNUMS: lw $t0,x lw $t1,y div $t0,$t0,$t1 sw $t0,result lw $t0,result lw $t1,threshold sgt $t0,$t0,$t1 bnez $t0,OVERFLOW # B7 successors: B8 b WRITERESULT # B8 successors: B11 WRITERESULT: lw $t0,result sw $t0,z lw $t0,z li $v0,1 move $a0,$t0 syscall li $t0,0 sw $t0,statuscode b FINISHED # B9 successors: B11 OVERFLOW: li $t0,0 sw $t0,z lw $t0,z li $t1,1 sub $t0,$t0,$t1 sw $t0,z lw $t0,z li $t1,1 sub $t0,$t0,$t1 sw $t0,z lw $t0,z sw $t0,statuscode b FINISHED # B10 successors: B11 ERROR: li $t0,1 neg $t0,$t0 sw $t0,statuscode b FINISHED # B11 FINISHED: lw $t0,statuscode li $v0,1 move $a0,$t0 syscall li $v0,10 syscall # IDom tree edges # B0: - # B1: B0 # B2: B1 # B3: B0 # B4: B3 # B5: B4 # B6: B3 # B7: B6 # B8: B3 # B9: B3 # B10: B2 # B11: B0