MIPS的新手,可以准确理解代码的内容,但我不明白提供的答案/解决方案。任何帮助将不胜感激。
请阅读以下代码,并在功能返回后记下数组A中的内容。
.data
A: .word 21,3,2,9,100,22,6,15,33,90
.text
.globl main
main:
la $a0, A
li $a1, 17
li $a2, 10
jal funct
li $v0, 10 # exit
syscall
funct:
li $t0, 0
li $v1, 1000000
funct_L0:
sll $t1, $t0, 2
add $t1, $t1, $a0
lw $t1, 0($t1)
sub $t2, $t1, $a1
bgt $t2, $0, funct_L1
sub $t2, $0, $t2
funct_L1:
bgt $t2, $v1, funct_L2
ori $v0, $t0, 0
ori $v1, $t2, 0
funct_L2:
addi $t0, $t0, 1
blt $t0, $a2, funct_L0
jr $ra
解决方案:找出最小的差异
答案 0 :(得分:0)
它从数组中找到最接近$a1
中传入的数字的元素。换句话说,它找到差异x
最小的元素abs(x - $a1)
。它返回$v0
中的索引和$v1
中的差异。