Oppure

Loading
25/02/11 14:00
Sparvier0
Ciao,

sto provando a fare qualche esperimento con assembly MIPS.

.data
arr: .word 1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768
prompt: .asciiz "\n >> "
riga: .asciiz "\n"
.text
.globl main
main:
	la $a0,arr		# Carico indirizzo di memoria array
	li $t0,15
loop:	
	li $t2,4		# Carica il valore 4 in $t2
	mult $t0,$t2	# Moltiplica indice *4
	mflo $t3		# Prendi il risultato della moltiplicazione e ponilo in $t3
	lw $t1,$t3($a0)	# Carica in $t1 il valore corrispondene a i*4
	
	li $v0,4
	la $a0,prompt
	syscall			# Stampa a video >> 
	
	move $a0,$t1	# Poni in $a0 il valore presente nella cella dell'array all'indice i*4
	
	li $v0,1		
	syscall		# Stampa a video valore
	
	li $v0,4
	la $a0,riga		
	syscall
	
	la $a0,arr		# Carico indirizzo memoria array
	addi $t0,$t0,-1	# Incremento contatore
	bgez $t0,loop	# Salto se $t0 >= 0
	
	li $v0,10
	syscall


Ovviamente l'istruzione lw $t1,$t3($a0)     restituisce un errore in quanto, da quel che ho capito, si aspetta un intero e non un registro.

Esiste un modo per passargli un intero che sia frutto della computazione mult $t0,$t2    # Moltiplica indice *4 ?

In caso negativo, come posso risolvere?

Grazie!
Ultima modifica effettuata da Sparvier0 25/02/11 14:01
aaa