diff options
Diffstat (limited to 'lib.s')
-rw-r--r-- | lib.s | 164 |
1 files changed, 60 insertions, 104 deletions
@@ -1,143 +1,113 @@ _func_printf: - addiu $sp, $sp, -88 - sw $31, 84($sp) #printf + addiu $sp, $sp, -64 + sw $31, 60($sp) #printf # load fmt_0 + lw $8, 64($sp) #fmt # load arg_0 -# load len_0 # load ch_0 + lb $9, 12($sp) #ch # load x_0 + lw $10, 4($sp) #x +# load len_0 + lw $11, 8($sp) #len # t0 = addr fmt_0 - addiu $2, $sp, 88 - sw $2, 80($sp) #t0 + addiu $12, $sp, 64 # arg_1 = t0 + 4 - lw $2, 80($sp) #t0 - addiu $2, $2, 4 - sw $2, 16($sp) #arg + addiu $12, $12, 4 + sw $12, 16($sp) #arg # goto __L2 j __L2 __L1: # t3 = ch_2 == 37 - lb $2, 12($sp) #ch li $3, 37 - seq $2, $2, $3 - sw $2, 76($sp) #t3 + seq $13, $9, $3 # if not (t3) goto __L20 - lw $2, 76($sp) #t3 - beqz $2, __L20 + beqz $13, __L20 # fmt_4 = fmt_1 + 1 - lw $2, 88($sp) #fmt - addiu $2, $2, 1 - sw $2, 88($sp) #fmt + addiu $8, $8, 1 + sw $8, 64($sp) #fmt # ch_4 = fmt_4[0] - lw $2, 88($sp) #fmt - lb $3, 0($2) - sb $3, 12($sp) #ch + lb $9, 0($8) + sb $9, 12($sp) #ch # t5 = ch_4 == 100 - lb $2, 12($sp) #ch li $3, 100 - seq $2, $2, $3 - sw $2, 72($sp) #t5 + seq $13, $9, $3 # if not (t5) goto __L6 - lw $2, 72($sp) #t5 - beqz $2, __L6 + beqz $13, __L6 # t7 = arg_2[0] - lw $2, 16($sp) #arg - lw $3, 0($2) - sw $3, 68($sp) #t7 + lw $13, 0($12) # push t7 - lw $2, 68($sp) #t7 - sw $2, 0($sp) # push + sw $13, 0($sp) # push # t6 = call __print_int jal _func___print_int - sw $2, 64($sp) #t6 # goto __L19 j __L19 __L6: # t8 = ch_4 == 99 - lb $2, 12($sp) #ch li $3, 99 - seq $2, $2, $3 - sw $2, 60($sp) #t8 + seq $13, $9, $3 # if not (t8) goto __L8 - lw $2, 60($sp) #t8 - beqz $2, __L8 + beqz $13, __L8 # t10 = arg_2[0] - lw $2, 16($sp) #arg - lw $3, 0($2) - sb $3, 56($sp) #t10 + lw $13, 0($12) # push t10 - lb $2, 56($sp) #t10 - sw $2, 0($sp) # push + sw $13, 0($sp) # push # t9 = call __print_char jal _func___print_char - sw $2, 52($sp) #t9 # goto __L19 j __L19 __L8: # t11 = ch_4 == 115 - lb $2, 12($sp) #ch li $3, 115 - seq $2, $2, $3 - sw $2, 48($sp) #t11 + seq $13, $9, $3 # if not (t11) goto __L10 - lw $2, 48($sp) #t11 - beqz $2, __L10 + beqz $13, __L10 # t13 = arg_2[0] - lw $2, 16($sp) #arg - lw $3, 0($2) - sw $3, 44($sp) #t13 + lw $13, 0($12) # push t13 - lw $2, 44($sp) #t13 - sw $2, 0($sp) # push + sw $13, 0($sp) # push # t12 = call __print_string jal _func___print_string - sw $2, 40($sp) #t12 # goto __L19 j __L19 __L10: # x_4 = arg_2[0] - lw $2, 16($sp) #arg - lw $3, 0($2) - sw $3, 4($sp) #x + lw $10, 0($12) + sw $10, 4($sp) #x # t15 = x_4 == 0 - lw $2, 4($sp) #x li $3, 0 - seq $2, $2, $3 - sw $2, 36($sp) #t15 + seq $11, $10, $3 # if not (t15) goto __L12 - lw $2, 36($sp) #t15 - beqz $2, __L12 + beqz $11, __L12 # len_11 = 1 li $2, 1 - sw $2, 8($sp) #len + move $11 $2 + sw $11, 8($sp) #len # goto __L15 j __L15 __L12: # len_8 = 0 li $2, 0 - sw $2, 8($sp) #len + move $11 $2 + sw $11, 8($sp) #len # goto __L14 j __L14 __L13: # x_7 = x_6 / 10 - lw $2, 4($sp) #x li $3, 10 - divu $2, $2, $3 - sw $2, 4($sp) #x + divu $10, $10, $3 + sw $10, 4($sp) #x # len_10 = len_9 + 1 - lw $2, 8($sp) #len - addiu $2, $2, 1 - sw $2, 8($sp) #len + addiu $11, $11, 1 + sw $11, 8($sp) #len __L14: # if (x_6) goto __L13 - lw $2, 4($sp) #x - bnez $2, __L13 + bnez $10, __L13 __L15: # len_5 = 4 - len_4 li $2, 4 - lw $3, 8($sp) #len - subu $2, $2, $3 - sw $2, 8($sp) #len + subu $11, $2, $11 + sw $11, 8($sp) #len # goto __L17 j __L17 __L16: @@ -146,60 +116,46 @@ __L16: sw $2, 0($sp) # push # t17 = call __print_char jal _func___print_char - sw $2, 32($sp) #t17 # len_7 = len_6 - 1 - lw $2, 8($sp) #len li $3, 1 - subu $2, $2, $3 - sw $2, 8($sp) #len + subu $11, $11, $3 + sw $11, 8($sp) #len __L17: # if (len_6) goto __L16 - lw $2, 8($sp) #len - bnez $2, __L16 + bnez $11, __L16 # t19 = arg_2[0] - lw $2, 16($sp) #arg - lw $3, 0($2) - sw $3, 28($sp) #t19 + lw $13, 0($12) # push t19 - lw $2, 28($sp) #t19 - sw $2, 0($sp) # push + sw $13, 0($sp) # push # t18 = call __print_int jal _func___print_int - sw $2, 24($sp) #t18 # fmt_6 = fmt_4 + 2 - lw $2, 88($sp) #fmt - addiu $2, $2, 2 - sw $2, 88($sp) #fmt + addiu $8, $8, 2 + sw $8, 64($sp) #fmt __L19: # arg_4 = arg_2 + 4 - lw $2, 16($sp) #arg - addiu $2, $2, 4 - sw $2, 16($sp) #arg + addiu $12, $12, 4 + sw $12, 16($sp) #arg # goto __L21 j __L21 __L20: # push ch_2 - lb $2, 12($sp) #ch - sw $2, 0($sp) # push + sw $9, 0($sp) # push # t20 = call __print_char jal _func___print_char - sw $2, 20($sp) #t20 __L21: # fmt_3 = fmt_2 + 1 - lw $2, 88($sp) #fmt - addiu $2, $2, 1 - sw $2, 88($sp) #fmt + addiu $8, $8, 1 + sw $8, 64($sp) #fmt __L2: # ch_2 = fmt_1[0] - lw $2, 88($sp) #fmt - lb $3, 0($2) - sb $3, 12($sp) #ch + lb $9, 0($8) + sb $9, 12($sp) #ch # if (ch_2) goto __L1 - lb $2, 12($sp) #ch - bnez $2, __L1 + bnez $9, __L1 _ret_printf: - lw $31, 84($sp) - addiu $sp, $sp, 88 + lw $31, 60($sp) + addiu $sp, $sp, 64 jr $31 _func___print_int: lw $a0, 0($sp) |