通常我会用
终止我的程序li $v0, 10
syscall
现在,我已经看到很多代码示例,他们通过跳回$ ra寄存器来终止程序。
jr $ra
为什么可以像这样终止程序?它取决于编译程序吗?
我最近看到的主要内容是:
主:
addi $sp, $sp, -4 # save return adress
sw $ra, 0($sp)
lw $a0, x #get some arguments for a function called exp
lw $a1, n #get more args
jal exp #call the function
move $s1, $v0
move $a0, $s1
li $v0, 1 #print return value
syscall
lw $ra, 0($sp) #here we load the ra for the jr
addi $sp, $sp, 4
jr $ra