Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- .globl check_remaining_columns
- check_remaining_columns:
- ## $a0 = matrix
- ## $a1 = list
- ## $a2 = bitmask
- sub $sp, $sp, 28 ## getting memory space
- sw $ra, 0($sp) ## storing ra into stack frame
- sw $s0, 4($sp) ## getting space for s0
- sw $s1, 8($sp) ## getting space for s1
- sw $s2, 12($sp) ## getting space for s2
- sw $s3, 16($sp) ## getting space for s3
- sw $s4, 20($sp) ## getting space for s4
- sw $s5, 24($sp) ## getting space for s5
- move $s0, $a0 ## s0 = matrix
- move $s1, $a1 ## s1 = list
- move $s5, $a2 ## s5 = bitmask
- li $s2, 0 ## s2 = i = 0
- lw $s3, 0($s1) ## $s3 = list->size
- li $s4, 1 ## 1L: which means that it is a long that can be treated as an int.
- for: bge $s2, $s3, end1 ## branch if i >= list->size
- sllv $t1, $s4, $s2 ## 1L << i
- and $t2, $t1, $s5 ## (1L << i) & bitmask. This is 1 or 0.
- li $t3, 0 ## t3 = 0 to compare in if-statement
- beq $t3, $t2, next ## if (1L << i) & bitmask == 0 then continue to next iteration.
- add $s2, $s2, 1
- j for
- next: move $a0,$s0 ## a0 = s0 = matrix
- move $a1,$s1 ## a1 = s1 = list
- move $a2,$s2 ## a2 = s2 = i = row
- jal any_matrix_column_matches_list_row ## $v0 = 1 or 0
- ##move $s7, $v0
- li $t0, 0 ## $t0 = 0 to compare in if-loop
- beq $t0, $v0, end2 ## if ($v0 = 0) then branch to end2
- li $v0, 0 ## return 0
- j stack ## jump to stack to put memory back
- jr $ra ## return address
- add $s2, $s2, 1 ## ++i
- j for ## jumps to for loop
- end1: li $v0, 1 ## return 1
- j stack ## jump to stack to put memory back
- jr $ra ## return address
- end2: add $s2, $s2, 1 ## ++i
- j for ## jumps to for loop
- stack: lw $ra, 0($sp) ## ra into stack frame
- lw $s0, 4($sp) ## space for s0
- lw $s1, 8($sp) ## space for s1
- lw $s2, 12($sp) ## space for s2
- lw $s3, 16($sp) ## space for s3
- lw $s4, 20($sp) ## space for s4
- lw $s5, 24($sp)
- add $sp, $sp, 28 ## putting space back into stack frame
- jr $ra ## return address
Advertisement
Add Comment
Please, Sign In to add comment