Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- isIdent:
- # set up stack frame
- addi $sp, $sp, -4
- sw $fp, ($sp) # push $fp
- la $fp, ($sp)
- addi $sp, $sp, -4
- sw $ra, ($sp) # push $ra
- addi $sp, $sp, -4
- sw $s0, ($sp) # push $s0 #row
- addi $sp, $sp, -4
- sw $s1, ($sp) # push $s1 #col
- addi $sp, $sp, -4
- sw $s2, ($sp) # push $s2
- addi $sp, $sp, -4
- sw $s3, ($sp) # push $s3
- move $s0, $a0
- move $s1, $a1
- is_row_init:
- li $s2, 0 # row = 0
- is_row_cond:
- bge $s2, $s1, is_row_f # row < n || row >= n
- nop #[branch delay]
- is_col_init:
- li $s3, 0 # col = 0
- is_col_cond:
- bge $s3, $s1, is_col_f # col < n || col >= n
- nop #[branch delay]
- # m[row][col] = *(&m[0][0] + (row * N) + col)
- mul $t0, $s2, $s1 # % <- row * N
- add $t0, $t0, $s3 # + col
- li $t1, 4
- mul $t0, $t0, $t1 # * sizeof(word)
- addu $t0, $s0, $t0 # + &m[0][0]
- ## if m[r][c] != 1
- m_if_1:
- bne $t0, 1, row_if_1
- ## if m[r][c] != 0
- m_if_2:
- bnez $t0, row_if_2
- j is_col_step
- ## if row = col
- row_if_1:
- beq $s2, $s3, return_0
- j is_col_step
- ## if row != col
- row_if_2:
- bne $s2, $s3, return_0
- is_col_step:
- addi $s3, $s3, 1 # col++
- j is_col_cond
- nop #[branch delay]
- is_col_f:
- is_row_step:
- addi $s2, $s2, 1 # row++
- j is_row_cond
- nop #[branch delay]
- is_row_f:
- base:
- li $v0, 1
- j go_back
- return_0:
- li $v0, 0
- j go_back
- go_back:
- lw $s3, ($sp) # pop $s3
- addi $sp, $sp, 4
- lw $s2, ($sp) # pop $s2
- addi $sp, $sp, 4
- lw $s1, ($sp) # pop $s1
- addi $sp, $sp, 4
- lw $s0, ($sp) # pop $s0
- addi $sp, $sp, 4
- lw $ra, ($sp) # pop $ra
- addi $sp, $sp, 4
- lw $fp, ($sp) # pop $fp
- addi $sp, $sp, 4
- jr $ra
Add Comment
Please, Sign In to add comment