В рамках упражнения по программированию мне необходимо вернуть целое число из функции, а затем ввести его в виде короткого замыкания. На данный момент у меня есть:
.text
j main
getRandom: # Produce a random integer between max and min
sub $t0, $a1, $a0 # max - min
addi $t0, $t0, 1 # max - min + 1
addi $sp, $sp, -16 # Allocate 16 bytes of stack memory
sw $a0, 0($sp)
sw $a1, 4($sp)
sw $t0, 8($sp)
li $v0, 41 # get a random int
syscall # $a0 = rand()
lw $t0, 0($sp) # $t0 = min
lw $t1, 4($sp) # $t1 = max
lw $t2, 8($sp) # $t2 = max - min + 1
addi $sp, $sp, 16 # Reset stack pointer
remu $a0, $a0, $t2 # rand() % (max - min + 1)
add $v0, $a0, $t0 # min + rand() % (max - min + 1)
jr $ra
main:
li $a0, 10 # Low bound
li $a1, 100 # Upper bound
jal getRandom
move $a0, $v0
# Perform typecast
la $t0, 0($a0) # Get $a0's address
lh $a0, 0($t0) # Load 2 bytes from $a0's address
li $v0, 1
syscall
Компилятор выдает ошибку в строке "lh $ a0, 0 ($ t0)", но я не уверен, как еще можно было бы ее типизировать. Я был бы признателен за альтернативный способ сделать это. Спасибо.