Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .data
- memory: .asciiz " - Total list capacity (bytes): "
- capacity: .word 16
- counter: .word 24
- .globl main
- .text
- macros:
- .macro print_int(%reg)
- li $v0 1
- move $a0 %reg
- syscall
- .end_macro
- .macro print_string(%label)
- li $v0 4
- la $a0 %label
- syscall
- .end_macro
- .macro print_character(%character)
- li $v0 11
- li $a0 %character
- syscall
- .end_macro
- .macro terminate
- li $v0 10
- syscall
- .end_macro
- .macro push_and_print(%reg)
- move $a0 $s0
- move $a1 %reg
- jal push
- move $a0 $s0
- jal print
- .end_macro
- main:
- la $a0 capacity
- lw $a0 0($a0)
- move $a1 $zero
- jal allocate
- move $s0 $v0
- la $s2 counter
- lw $s2 0($s2)
- li $s1 0
- count:
- addi $s1 $s1 1
- push_and_print($s1)
- blt $s1 $s2 count
- terminate
- #region allocate
- allocate:
- move $t0 $a0
- li $v0 9
- addi $a0 $a0 12
- syscall
- sw $t0 0($v0)
- sw $a1 4($v0)
- jr $ra
- #endregion
- #region push
- push:
- move $t0 $a0
- initial:
- lw $t1 0($t0)
- lw $t2 4($t0)
- addi $t5 $t0 12
- bne $t1 $t2 skip
- lw $t3 8($t0)
- bnez $t3 next
- move $t8 $fp
- addi $fp $sp -4
- sw $t8 0($fp)
- sw $sp -4($fp)
- sw $t0 -8($fp)
- sw $a1 -12($fp)
- sw $ra -16($fp)
- addi $sp $fp -16
- move $a0 $t1
- move $a1 $zero
- jal allocate
- lw $t8 0($fp)
- lw $sp -4($fp)
- lw $t0 -8($fp)
- lw $a1 -12($fp)
- lw $ra -16($fp)
- move $fp $t8
- sw $v0 8($t0)
- move $t0 $v0
- j initial
- next:
- move $t0 $t3
- j initial
- skip:
- add $t5 $t5 $t2
- sw $a1 0($t5)
- addi $t2 $t2 4
- sw $t2 4($t0)
- jr $ra
- #endregion
- #region print
- print:
- move $t0 $a0
- li $t7 0
- start:
- addi $t5 $t0 12
- lw $t1 0($t0)
- add $t7 $t7 $t1
- li $t3 0
- loop:
- beq $t3 $t1 full
- add $t4 $t5 $t3
- lw $t2 0($t4)
- print_character('[')
- print_int($t2)
- print_character(']')
- addi $t3 $t3 4
- j loop
- full:
- lw $t6 8($t0)
- beqz $t6 stop
- print_character(' ')
- move $t0 $t6
- j start
- stop:
- print_string(memory)
- print_int($t7)
- print_character('\n')
- jr $ra
- #endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement