Как мне преобразовать этот код Java для сортировки целых чисел в MIPS? - PullRequest
0 голосов
/ 02 апреля 2019

Мне просто нужна помощь, чтобы разобраться, что с чем переводится.

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
...