Qual è l'istruzione assembler corrispondente alla seguente istruzione in linguaggio macchina?0x00578833
Il primo passo è quello di decodificare l'istruzione esadecimale in binario:0000 0000 0101 0111 1000 1000 0011 0011
Per capire come interpretare i diversi bit, occorre determinare il formato dell'istruzione, e per fare ciò esaminiamo per prima cosa il codice operativo. Questo è definito dai 7 bit meno significativi (più a destra) ed è 0110011
.
Cercando nella tabella delle istruzioni:
viene fuori che questa istruzione è del formato R. Possiamo quindi suddividere l'istruzione in binario come segue:
|func7|rs2|rs1|func3|rd|codop|
|--|--|--|--|--|--|
|0000000|00101|01111|000|10000|0110011|
I campi func7 e func3 contengono entrambi 0, indicando il fatto che l'istruzione è una add
. Il valore decimale del registro degli operandi è 5 per il campo rs2 e 15 per il campo rs1 e 16 per rd. Questi numeri rappresentano i registri x5
, x15
, x16
. Siamo ora in grado di scrivere l'istruzione RISC-V.
add x16, x15, x5