[Assembly] Pseudo istruzioni li e la
Quando ho studiato le pseudoistruzioni li e la venivano espanse tramite una lui ed una ori, ma poi in alcuni esercizi ho visto che al posto di ori a volte viene usata una addi. è equivalente quindi l'utilizzo di una addi o di una ori oppure la addi si usa solo in casi particolari?
Risposte
Non ci ho capito molto.. Le due istruzioni non fanno la stessa cosa, sarebbe quindi utile avere qualche contesto in più.
a me era stato spiegato che la e li sono due istruzioni diverse (una per gli indirizzi e l'altra per le costanti) ma sono implementate allo stesso modo con una lui e una ori
L'assemblatore ha la libertà di implementare le tue pseudo-istruzioni come ritiene più opportuno. La traduzione canonica è quella che hai visto, ma non è l'unica. Dopo l'istruzione LUI hai un registro in cui i 16bit meno significativi sono tutti uguali a zero e i restanti bit sono uguali ai 16bit più significativi della costante/indirizzo. Sommare a tale valore un numero con meno di 16 bit (ADDI) o fare un ORI porta allo stesso risultato. Le due istruzioni sono quindi intercambiabili in questo caso. Non è l'unica possibilità comunque, in alcuni casi puoi ad esempio convertire una LI in una singola ADDI.. Non conosco abbastanza bene l'architettura MIPS per sapere le ragioni per cui è preferibile una traduzione al posto di un altra. Puoi chiedere al tuo professore o limitarti alla traduzione canonica se in dubbio.