Salve a tutti!
Sto facendo un esercizio di traduzione da c++ a linguaggio assembly.
codice:
.data
mes1: .asciiz "Numero elementi: "
mes2: .asciiz "Elemento "
mes3: .asciiz ": "
mes4: .asciiz "Posizione primo elemento negativo: "
vet: .space 512
riemp: .space 4

.text
.globl main
main:

la $s0,vet #Metto indirizzo di vet in $s0
move $a0,$s0
jal leggi_vet



leggi_vet:
move $t0,$a0 # ora $t0 contiene indirizzo passato


la $a0,mes1
li $v0,4
syscall
li $v0,5
syscall
move $t1,$v0   #Carico in $t1 num_elementi
addi $t2,$zero,0  #inizializzo i=0


for:
bge $t2,$t1,endfor     #stampa messaggi a video
la $a0,mes2
li $v0,4
syscall
move $a0,$t2
li $v0,1
syscall
la $a0,mes3
li $v0,4
syscall
li $v0,5     # input valore
syscall
sw $v0,($t0)   # vet[i]=x
addi $t2,$t2,1  #i++
addi $t0,$t0,4  #scorro array
j for
endfor:
move $v0,$t1
jr $ra
Questo è il codice che ho scritto.

Quando eseguo compaiono i messaggi correttamente, ovvero inserisco il numero di elementi, mi chiede di inserire il "0 elemento" e poi mi da errore! L'errore che mi segnala è:
"Runtime exception at 0x00400088: store address not aligned on word boundary 0x10010043"
Sono sicuro che l'errore sia riferito a: sw $v0,($t0) ma perchè??
c'è qualcuno che mi dia una mano per favore!!
grazie