.data .text jal Main li $v0 10 syscall foo: sw $fp -8($sp) move $fp $sp subu $sp $sp 28 sw $ra -4($fp) sw $s0 -12($fp) sw $s1 -16($fp) sw $s2 -20($fp) li $a0 1 li $t9 3 add $s0 $a0 $t9 li $a0 2 li $t9 4 add $s1 $a0 $t9 sw $s0 -28($fp) sw $s1 -24($fp) jalr $bar move $a0 $v0 move $t9 $v0 add $s2 $a0 $t9 move $v0 $s2 lw $s0 -12($fp) lw $s1 -16($fp) lw $s2 -20($fp) lw $ra -4($fp) lw $fp -8($fp) addu $sp $sp 28 jr $ra bar: sw $fp -8($sp) move $fp $sp subu $sp $sp 16 sw $ra -4($fp) sw $s0 -12($fp) sw $s1 -16($fp) lw $s0 0($fp) lw $s1 4($fp) move $a0 $s1 move $t9 $s2 add $v0 $a0 $t9 lw $s0 -12($fp) lw $s1 -16($fp) lw $ra -4($fp) lw $fp -8($fp) addu $sp $sp 16 jr $ra _print: li $v0 1 # syscall: print integer syscall la $a0 _newline li $v0 4 # syscall: print string syscall jr $ra _error: li $v0 4 # syscall: print string syscall li $v0 10 # syscall: exit syscall _heapAlloc: li $v0 9 # syscall: sbrk syscall jr $ra .data .align 0 _newline: .asciiz "\n" _str0: .asciiz "null pointer\n"