火星Mips大会

时间:2018-10-21 02:46:46

标签: assembly mips mars-simulator

大家好,我是mips汇编的新手,我的老师给了我们以下解决方案。该程序基本上使用堆栈在数组中找到最小和最大val。我完全迷失了,尤其是使用堆栈,因为我无法直观地看到任何一个。请也许用人类语言解释不同的语言,我将不胜感激!

.data
array:   .word  4, 10, -1, 8, 0, 22, 100, 100, -5, 45
.text
main:
la   $a0, array
li   $a1, 10
jal  minmax
j    exit
minmax:
addi $sp, $sp, -8
sw   $a0, 0($sp)
sw   $a1, 4($sp)
lw   $v0, 0($a0)
lw   $v1, 0($a0)
addi $a1, $a1, -1
next:
    ble  $a1, $zero, return
addi $a0, $a0, 4
addi $a1, $a1, -1
lw   $t0, 0($a0)
blt  $v0, $t0, max
move $v0, $t0
max:   
  bgt  $v1, $t0, next
move $v1, $t0
j    next
return:  
lw   $a0, 0($sp)
lw   $a1, 4($sp)
addi $sp, $sp, 8
jr   $ra
exit:

0 个答案:

没有答案