Мне просто нужна помощь, чтобы разобраться, что с чем переводится.
public static void insert(int val,int[] arr){
int i;
for(i=0;i<arr.length-1;i++){
if(arr[i]>val)
break;
}
for(int k=arr.length-2; k>=i; k--){
arr[k+1]=arr[k];
}
arr[i] = val;
}
РЕДАКТИРОВАТЬ: Здесь приведен код, который запрашивает количество целых чисел для ввода, и я сохраняю каждый вход в массив.
.data
array: .space 20 #5 integers for example
size: .asciiz "Enter the number of integers you want to enter: "
prompt: .asciiz "Please enter an integer: "
.text
.globl main
main: # program entry
la $t0, array
lw $t0, 0($t0)
la $a0, size #print out the prompt
li $v0, 4
syscall
li $v0, 5 #get the input
syscall
la $t0, array #load array into t0; t0 is lowerbound of array = iterator
move $t1, $v0 #move n into t1
sll $t1, $t1, 2 #create offset
addu $t1, $t0, $t1 #st1 = upperbound of array
loop:
slt $t2, $t0, $t1 #if $t0 < $t1(size) then = 1, else = 0 ; 0 < size
beq $t2, $0, endloop #if 0, end the loop
la $a0, prompt #print out the prompt
li $v0, 4
syscall
li $v0, 5 #get the input
syscall
move $s0, $v0
sw $s0, 0($t0)
jal SORT #call function sort
add $t0, $t0, 4 #increment by 1
j loop
Эта функция предназначена дляпорядковые целые числа один за другим каждый раз, когда ввод получен (не после того, как все входные данные известны).У меня есть мое собственное преобразование в мипы ниже.Я проверил это, и это не работает.
предположим, что переменная $ s0
SORT:
loop1:
li $t2, 0 # t= 0
add $t3, $t1, $0 #send my upperbound array to t3
slt $t8, $t2, $t3, # i < array.length(upperbound),
beq $t8, $0, loop2 #if fails, go to loop 2
add $t2, $t2, 1 #increment
j loop1
loop2:
sub $t5, $t3, 4
sw $t4, 0($t5) # k = array.length-1
sge $t7, $t4, $t2 # k <= i
beq $t7, $0, end #if fails, exit loop
sw $t6, 0($t4) #array[k+1] = array[k]
sub $t4, $t4, 4 #decrement
j loop2
end:
sw $s0, 0($t1) #arr[i] = val
jr $ra #return