Guest User

Untitled

a guest
Jul 7th, 2019
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. .text
  2. isIdent:
  3.  
  4. # set up stack frame
  5. addi $sp, $sp, -4
  6. sw $fp, ($sp) # push $fp
  7. la $fp, ($sp)
  8. addi $sp, $sp, -4
  9. sw $ra, ($sp) # push $ra
  10. addi $sp, $sp, -4
  11. sw $s0, ($sp) # push $s0 #row
  12. addi $sp, $sp, -4
  13. sw $s1, ($sp) # push $s1 #col
  14. addi $sp, $sp, -4
  15. sw $s2, ($sp) # push $s2
  16. addi $sp, $sp, -4
  17. sw $s3, ($sp) # push $s3
  18.  
  19. move $s0, $a0
  20. move $s1, $a1
  21.  
  22. is_row_init:
  23. li $s2, 0 # row = 0
  24. is_row_cond:
  25. bge $s2, $s1, is_row_f # row < n || row >= n
  26. nop #[branch delay]
  27.  
  28. is_col_init:
  29. li $s3, 0 # col = 0
  30. is_col_cond:
  31. bge $s3, $s1, is_col_f # col < n || col >= n
  32. nop #[branch delay]
  33.  
  34. # m[row][col] = *(&m[0][0] + (row * N) + col)
  35. mul $t0, $s2, $s1 # % <- row * N
  36. add $t0, $t0, $s3 # + col
  37. li $t1, 4
  38. mul $t0, $t0, $t1 # * sizeof(word)
  39. addu $t0, $s0, $t0 # + &m[0][0]
  40.  
  41. ## if m[r][c] != 1
  42. m_if_1:
  43. bne $t0, 1, row_if_1
  44.  
  45. ## if m[r][c] != 0
  46. m_if_2:
  47. bnez $t0, row_if_2
  48. j is_col_step
  49.  
  50. ## if row = col
  51. row_if_1:
  52. beq $s2, $s3, return_0
  53. j is_col_step
  54.  
  55. ## if row != col
  56. row_if_2:
  57. bne $s2, $s3, return_0
  58.  
  59. is_col_step:
  60. addi $s3, $s3, 1 # col++
  61. j is_col_cond
  62. nop #[branch delay]
  63. is_col_f:
  64.  
  65. is_row_step:
  66. addi $s2, $s2, 1 # row++
  67. j is_row_cond
  68. nop #[branch delay]
  69. is_row_f:
  70.  
  71. base:
  72. li $v0, 1
  73. j go_back
  74.  
  75. return_0:
  76. li $v0, 0
  77. j go_back
  78.  
  79. go_back:
  80. lw $s3, ($sp) # pop $s3
  81. addi $sp, $sp, 4
  82. lw $s2, ($sp) # pop $s2
  83. addi $sp, $sp, 4
  84. lw $s1, ($sp) # pop $s1
  85. addi $sp, $sp, 4
  86. lw $s0, ($sp) # pop $s0
  87. addi $sp, $sp, 4
  88. lw $ra, ($sp) # pop $ra
  89. addi $sp, $sp, 4
  90. lw $fp, ($sp) # pop $fp
  91. addi $sp, $sp, 4
  92. jr $ra
Add Comment
Please, Sign In to add comment