& Quot; MIPS & Quot; Исключительная ситуация во время 0x0040003c: адрес выборки не выровнен по границе слова 0x10010005 ошибка

 the C++ version is

#include <iostream>
using namespace std;

int x[10] = {0};
int pos[6] = {1, 3, 6, 9, -1, -1};
int data[6] = {73, 47, 23, 26, -1, -1};
int main() {

for (int i=0; i<6; i++) {
if (pos[i] >= 0) {
int temp = pos[i];
x[temp] = data[i];
}
}

for (int i=0; i<10; i++) {
cout << x[i] << endl;
}

}

     .data
x: .word   0:10
pos:   .word   1
.word   3
.word   6
.word   9
.word   -1
.word   -1
data:   .word   73
.word   47
.word   23
.word   26
.word   -1
.word   -1

endl:   .asciiz "\n"
# i     $s0
# &x[0]     $s1
# &pos[0]   $s2
# &data[0]  $s3
# 6, 10     $s6

.text
main:   la  $s1, x
la  $s2, pos
la  $s3, data
li  $s6, 6
li      $s0, 0          #  for (int i=0; i<6; i++) {
for:    mul $t0,$s0,4       #    if (pos[i] >= 0) {
add     $t0,$s2,$s0
lw  $t1,($t0)
blt     $t1,0,loopadd  $t2, $s1,$t1    # int temp = pos[i]
lw   $t3,4($t2)             #      x[temp] = data[i];
add  $t4, $s3,$s0
lw   $t5, 4($t4)
sw   $t3, ($t5)

loop:  addi $s0, $s0,1          #    }
blt $s0, $s6, for           #  }

Я пытался выяснить это, я получаю «не выравнивание по ошибке границы слова», и я не могу понять, почему ошибка начинается с lw $ t3,4 ($ t2) после первой итерации, ожидаемый результат
0
73
0
47
0
0
23
0
0
26

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]