.data .align 0 endl: .asciiz "\n" error: .asciiz "ERROR\n" .text .globl main main: sw $fp, -8($sp) sw $ra, -4($sp) move $fp, $sp subu $sp, $sp,20 sw $s0, -12($fp) sw $s1, -16($fp) sw $s2, -20($fp) move $v1, $a0 li $a0, 16 li $v0, 9 syscall move $s0, $v0 move $a0, $v1 move $v1, $a0 li $a0, 12 li $v0, 9 syscall move $s1, $v0 move $a0, $v1 la $s2, BBS_Start sw $s2, 0($s0) la $s2, BBS_Sort sw $s2, 4($s0) la $s2, BBS_Print sw $s2, 8($s0) la $s2, BBS_Init sw $s2, 12($s0) sw $s0, 0($s1) li $s0, 0 sw $s0, 4($s1) sw $s0, 8($s1) lw $s0, 0($s1) lw $s0, 0($s0) li $s2, 10 move $a0, $s1 move $a1, $s2 jalr $s0 move $s0, $v0 move $v1, $a0 move $a0, $s0 li $v0, 1 syscall la $a0, endl li $v0, 4 syscall move $a0, $v1 lw $s2, -20($fp) lw $s1, -16($fp) lw $s0, -12($fp) addu $sp, $sp,20 lw $fp, -8($sp) lw $ra, -4($sp) j $ra .text .globl BBS_Start BBS_Start: sw $fp, -8($sp) sw $ra, -4($sp) move $fp, $sp subu $sp, $sp,32 sw $s0, -12($fp) sw $s1, -16($fp) sw $s2, -20($fp) sw $s3, -24($fp) li $s0, 0 move $s1, $a0 lw $s2, 0($s1) lw $s2, 12($s2) move $s3, $a1 sw $a0, -28($fp) sw $a1, -32($fp) move $a0, $s1 move $a1, $s3 jalr $s2 lw $a1, -32($fp) lw $a0, -28($fp) move $s1, $v0 move $s0, $s1 move $s1, $a0 lw $s2, 0($s1) lw $s2, 8($s2) sw $a0, -28($fp) sw $a1, -32($fp) move $a0, $s1 jalr $s2 lw $a1, -32($fp) lw $a0, -28($fp) move $s1, $v0 move $s0, $s1 move $v1, $a0 li $a0, 99999 li $v0, 1 syscall la $a0, endl li $v0, 4 syscall move $a0, $v1 move $s1, $a0 lw $s2, 0($s1) lw $s2, 4($s2) sw $a0, -28($fp) sw $a1, -32($fp) move $a0, $s1 jalr $s2 lw $a1, -32($fp) lw $a0, -28($fp) move $s1, $v0 move $s0, $s1 move $s1, $a0 lw $s2, 0($s1) lw $s2, 8($s2) sw $a0, -28($fp) sw $a1, -32($fp) move $a0, $s1 jalr $s2 lw $a1, -32($fp) lw $a0, -28($fp) move $s1, $v0 li $v0, 0 lw $s3, -24($fp) lw $s2, -20($fp) lw $s1, -16($fp) lw $s0, -12($fp) addu $sp, $sp,32 lw $fp, -8($sp) lw $ra, -4($sp) j $ra .text .globl BBS_Sort BBS_Sort: sw $fp, -8($sp) sw $ra, -4($sp) move $fp, $sp subu $sp, $sp,44 sw $s0, -12($fp) sw $s1, -16($fp) sw $s2, -20($fp) sw $s3, -24($fp) sw $s4, -28($fp) sw $s5, -32($fp) sw $s6, -36($fp) sw $s7, -40($fp) li $s0, 0 li $s1, 0 lw $s2, 8($a0) li $v0, 1 sub $s2, $s2, $v0 move $s0, $s2 li $s2, 0 li $v0, 1 sub $s2, $s2, $v0 move $s1, $s2 BBS_Sort_LABEL_0:nop move $s2, $s1 move $s3, $s0 slt $s2, $s2, $s3 beqz $s2, BBS_Sort_LABEL_1 li $s2, 1 BBS_Sort_LABEL_2:nop move $s3, $s2 move $s4, $s0 li $v0, 1 add $s4, $s4, $v0 slt $s3, $s3, $s4 beqz $s3, BBS_Sort_LABEL_3 move $s3, $s2 li $v0, 1 sub $s3, $s3, $v0 move $s3, $s3 lw $s4, 4($a0) move $s3, $s3 lw $s5, 0($s4) move $s3, $s3 slt $s5, $s3, $s5 beqz $s5, BBS_Sort_LABEL_4 b BBS_Sort_LABEL_5 BBS_Sort_LABEL_4:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Sort_LABEL_5:nop li $v0, 1 add $s3, $s3, $v0 li $v0, 4 mul $s3, $s3, $v0 add $s3, $s4, $s3 lw $s3, 0($s3) move $s3, $s3 lw $s4, 4($a0) move $s5, $s2 lw $s6, 0($s4) move $s5, $s5 slt $s6, $s5, $s6 beqz $s6, BBS_Sort_LABEL_6 b BBS_Sort_LABEL_7 BBS_Sort_LABEL_6:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Sort_LABEL_7:nop li $v0, 1 add $s5, $s5, $v0 li $v0, 4 mul $s5, $s5, $v0 add $s5, $s4, $s5 lw $s4, 0($s5) move $s4, $s4 move $s4, $s4 move $s3, $s3 slt $s3, $s4, $s3 beqz $s3, BBS_Sort_LABEL_8 move $s3, $s2 li $v0, 1 sub $s3, $s3, $v0 move $s3, $s3 lw $s4, 4($a0) move $s5, $s3 lw $s6, 0($s4) move $s5, $s5 slt $s6, $s5, $s6 beqz $s6, BBS_Sort_LABEL_10 b BBS_Sort_LABEL_11 BBS_Sort_LABEL_10:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Sort_LABEL_11:nop li $v0, 1 add $s5, $s5, $v0 li $v0, 4 mul $s5, $s5, $v0 add $s5, $s4, $s5 lw $s4, 0($s5) move $s4, $s4 lw $s5, 4($a0) move $s3, $s3 lw $s6, 0($s5) move $s3, $s3 slt $s6, $s3, $s6 beqz $s6, BBS_Sort_LABEL_12 b BBS_Sort_LABEL_13 BBS_Sort_LABEL_12:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Sort_LABEL_13:nop li $v0, 1 add $s3, $s3, $v0 li $v0, 4 mul $s3, $s3, $v0 add $s3, $s5, $s3 lw $s5, 4($a0) move $s6, $s2 lw $s7, 0($s5) move $s6, $s6 slt $s7, $s6, $s7 beqz $s7, BBS_Sort_LABEL_14 b BBS_Sort_LABEL_15 BBS_Sort_LABEL_14:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Sort_LABEL_15:nop li $v0, 1 add $s6, $s6, $v0 li $v0, 4 mul $s6, $s6, $v0 add $s6, $s5, $s6 lw $s5, 0($s6) sw $s5, 0($s3) lw $s3, 4($a0) move $s5, $s2 lw $s6, 0($s3) move $s5, $s5 slt $s6, $s5, $s6 beqz $s6, BBS_Sort_LABEL_16 b BBS_Sort_LABEL_17 BBS_Sort_LABEL_16:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Sort_LABEL_17:nop li $v0, 1 add $s5, $s5, $v0 li $v0, 4 mul $s5, $s5, $v0 add $s3, $s3, $s5 move $s4, $s4 sw $s4, 0($s3) b BBS_Sort_LABEL_9 BBS_Sort_LABEL_8:nop BBS_Sort_LABEL_9:nop move $s3, $s2 li $v0, 1 add $s3, $s3, $v0 move $s2, $s3 b BBS_Sort_LABEL_2 BBS_Sort_LABEL_3:nop move $s2, $s0 li $v0, 1 sub $s2, $s2, $v0 move $s0, $s2 b BBS_Sort_LABEL_0 BBS_Sort_LABEL_1:nop li $v0, 0 lw $s7, -40($fp) lw $s6, -36($fp) lw $s5, -32($fp) lw $s4, -28($fp) lw $s3, -24($fp) lw $s2, -20($fp) lw $s1, -16($fp) lw $s0, -12($fp) addu $sp, $sp,44 lw $fp, -8($sp) lw $ra, -4($sp) j $ra .text .globl BBS_Print BBS_Print: sw $fp, -8($sp) sw $ra, -4($sp) move $fp, $sp subu $sp, $sp,28 sw $s0, -12($fp) sw $s1, -16($fp) sw $s2, -20($fp) sw $s3, -24($fp) li $s0, 0 li $s0, 0 BBS_Print_LABEL_18:nop move $s1, $s0 lw $s2, 8($a0) slt $s1, $s1, $s2 beqz $s1, BBS_Print_LABEL_19 lw $s1, 4($a0) move $s2, $s0 lw $s3, 0($s1) move $s2, $s2 slt $s3, $s2, $s3 beqz $s3, BBS_Print_LABEL_20 b BBS_Print_LABEL_21 BBS_Print_LABEL_20:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Print_LABEL_21:nop li $v0, 1 add $s2, $s2, $v0 li $v0, 4 mul $s2, $s2, $v0 add $s2, $s1, $s2 lw $s1, 0($s2) move $v1, $a0 move $a0, $s1 li $v0, 1 syscall la $a0, endl li $v0, 4 syscall move $a0, $v1 move $s1, $s0 li $v0, 1 add $s1, $s1, $v0 move $s0, $s1 b BBS_Print_LABEL_18 BBS_Print_LABEL_19:nop li $v0, 0 lw $s3, -24($fp) lw $s2, -20($fp) lw $s1, -16($fp) lw $s0, -12($fp) addu $sp, $sp,28 lw $fp, -8($sp) lw $ra, -4($sp) j $ra .text .globl BBS_Init BBS_Init: sw $fp, -8($sp) sw $ra, -4($sp) move $fp, $sp subu $sp, $sp,36 sw $s0, -12($fp) sw $s1, -16($fp) sw $s2, -20($fp) sw $s3, -24($fp) sw $s4, -28($fp) move $s0, $a1 sw $s0, 8($a0) move $s0, $a1 li $v0, 1 add $s1, $s0, $v0 li $v0, 4 mul $s1, $s1, $v0 move $v1, $a0 move $a0, $s1 li $v0, 9 syscall move $s1, $v0 move $a0, $v1 sw $s0, 0($s1) li $s2, 0 BBS_Init_LABEL_22:nop slt $s3, $s2, $s0 beqz $s3, BBS_Init_LABEL_23 li $v0, 1 add $s3, $s2, $v0 li $v0, 4 mul $s3, $s3, $v0 add $s3, $s1, $s3 li $s4, 0 sw $s4, 0($s3) li $v0, 1 add $s2, $s2, $v0 b BBS_Init_LABEL_22 BBS_Init_LABEL_23:nop sw $s1, 4($a0) lw $s0, 4($a0) lw $s1, 0($s0) li $s2, 0 slt $s1, $s2, $s1 beqz $s1, BBS_Init_LABEL_24 b BBS_Init_LABEL_25 BBS_Init_LABEL_24:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Init_LABEL_25:nop li $v0, 4 add $s0, $s0, $v0 li $s1, 20 sw $s1, 0($s0) lw $s0, 4($a0) lw $s1, 0($s0) li $s2, 1 slt $s1, $s2, $s1 beqz $s1, BBS_Init_LABEL_26 b BBS_Init_LABEL_27 BBS_Init_LABEL_26:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Init_LABEL_27:nop li $v0, 8 add $s0, $s0, $v0 li $s1, 7 sw $s1, 0($s0) lw $s0, 4($a0) lw $s1, 0($s0) li $s2, 2 slt $s1, $s2, $s1 beqz $s1, BBS_Init_LABEL_28 b BBS_Init_LABEL_29 BBS_Init_LABEL_28:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Init_LABEL_29:nop li $v0, 12 add $s0, $s0, $v0 li $s1, 12 sw $s1, 0($s0) lw $s0, 4($a0) lw $s1, 0($s0) li $s2, 3 slt $s1, $s2, $s1 beqz $s1, BBS_Init_LABEL_30 b BBS_Init_LABEL_31 BBS_Init_LABEL_30:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Init_LABEL_31:nop li $v0, 16 add $s0, $s0, $v0 li $s1, 18 sw $s1, 0($s0) lw $s0, 4($a0) lw $s1, 0($s0) li $s2, 4 slt $s1, $s2, $s1 beqz $s1, BBS_Init_LABEL_32 b BBS_Init_LABEL_33 BBS_Init_LABEL_32:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Init_LABEL_33:nop li $v0, 20 add $s0, $s0, $v0 li $s1, 2 sw $s1, 0($s0) lw $s0, 4($a0) lw $s1, 0($s0) li $s2, 5 slt $s1, $s2, $s1 beqz $s1, BBS_Init_LABEL_34 b BBS_Init_LABEL_35 BBS_Init_LABEL_34:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Init_LABEL_35:nop li $v0, 24 add $s0, $s0, $v0 li $s1, 11 sw $s1, 0($s0) lw $s0, 4($a0) lw $s1, 0($s0) li $s2, 6 slt $s1, $s2, $s1 beqz $s1, BBS_Init_LABEL_36 b BBS_Init_LABEL_37 BBS_Init_LABEL_36:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Init_LABEL_37:nop li $v0, 28 add $s0, $s0, $v0 li $s1, 6 sw $s1, 0($s0) lw $s0, 4($a0) lw $s1, 0($s0) li $s2, 7 slt $s1, $s2, $s1 beqz $s1, BBS_Init_LABEL_38 b BBS_Init_LABEL_39 BBS_Init_LABEL_38:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Init_LABEL_39:nop li $v0, 32 add $s0, $s0, $v0 li $s1, 9 sw $s1, 0($s0) lw $s0, 4($a0) lw $s1, 0($s0) li $s2, 8 slt $s1, $s2, $s1 beqz $s1, BBS_Init_LABEL_40 b BBS_Init_LABEL_41 BBS_Init_LABEL_40:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Init_LABEL_41:nop li $v0, 36 add $s0, $s0, $v0 li $s1, 19 sw $s1, 0($s0) lw $s0, 4($a0) lw $s1, 0($s0) li $s2, 9 slt $s1, $s2, $s1 beqz $s1, BBS_Init_LABEL_42 b BBS_Init_LABEL_43 BBS_Init_LABEL_42:nop la $a0, error li $v0, 4 syscall li $v0, 10 syscall BBS_Init_LABEL_43:nop li $v0, 40 add $s0, $s0, $v0 li $s1, 5 sw $s1, 0($s0) li $v0, 0 lw $s4, -28($fp) lw $s3, -24($fp) lw $s2, -20($fp) lw $s1, -16($fp) lw $s0, -12($fp) addu $sp, $sp,36 lw $fp, -8($sp) lw $ra, -4($sp) j $ra