Sparvier0 (Normal User)
Newbie
Messaggi: 19
Iscritto: 25/02/2011
|
Ciao,
sto provando a fare qualche esperimento con assembly MIPS.
Codice sorgente - presumibilmente Delphi |
.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 il 25/02/2011 alle 15:01 |