2012-02-02 8 views
7

Attualmente sto seguendo un corso di Computer Organization e Assembly Language che utilizza principalmente il set di istruzioni MIPS per insegnare il linguaggio assembly.Set di istruzioni MIPS sposta vs aggiungi/aggiungi 0 per la memorizzazione dei valori?

ho notato che molti degli esempi che il professore ha postato l'uso online aggiungere o addi per spostare un valore nel registro l'argomento $ a0 per chiamare i servizi di stampa come la seguente ...

# store the first integer in $a0 and print 
add $a0, $zero, $t0 
li $v0, 1 
syscall 

o. ..

# store the first integer in $a0 and print 
addi $a0, $t0, 0 
li $v0, 1 
syscall 

ho anche notato alcuni esempi on-line dove gli altri basta usare l'istruzione di movimento per ottenere la stessa cosa come la seguente ...

# store the first integer in $a0 and print 
move $a0, $t0 
li $v0, 1 
syscall 

Si sta utilizzando l'istruzione add o addi preferita semplicemente muovendo in questo scenario? Se è così allora perché? C'è una differenza di prestazioni o è solo questione di gusti?

risposta

9

L'istruzione move non è un vero istruzione - è un'istruzione pseudo che si traduce in un add istruzioni dall'assembler.

Ci sono un sacco di queste pseudo istruzioni, si veda ad es. https://en.wikipedia.org/wiki/MIPS_architecture#Pseudo_instructions

Questo tipo di cosa è molto comune sui processori RISC, in cui si desidera un set di istruzioni minimo e una particolare istruzione può essere utilizzata per più di uno scopo.

+0

Grazie per il chiarimento Paul. Non mi rendevo conto che la mossa era solo un'istruzione pseudo. –

Problemi correlati