Salve a tutti!
Sto facendo un esercizio di traduzione da c++ a linguaggio assembly.
Questo è il codice che ho scritto.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
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

 
			
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando