Mips, как прочитать массив и распечатать его? - PullRequest
3 голосов
/ 23 мая 2010

хорошо, C ++ и Java, у меня нет проблем с обучением или что-то еще, когда дело доходит до mips, это похоже на ад

хорошо, я хочу научиться читать в массиве и выводить все элементы

вот простой массив, который я написал

int[] a = new int[20];

for(int i=0; i<a.length; i++){
  a[i]=1;
}

for(int j=0; j<a.length; j++){
  System.out.Println(a[i])
}

как вы делаете это в мипс

1 Ответ

2 голосов
/ 06 июня 2010

Предполагая, что у вас есть адрес массива в регистре $ a1, вы можете сделать следующее:

    li $t0, 1
    move $t1, $a1
    addi $t2, $a1, 80
loop1:
    sw $t0, ($t1)
    addi $t1, $t1, 4
    bne $t1, $t2, loop1

move $t1, $a1

loop2:
    lw $t0, ($t1)
    li $v0, 1
    move $a0, $t0
    syscall
    addi $t1, $t1, 4
    bne $t1, $t2, loop2

Этот код должен давать тот же результат, что и ваш код Java, за исключением того, что вы использовали println (который будет печатать каждый элемент в новой строке), и этот код будет печатать все элементы массива в одной строке.

Я не знаю, заметили ли вы, но ваш Java-код и этот код будут печатать все 1, если вы хотите печатать числа от 1 до 19, вам придется увеличивать $ t0 внутри loop1

...