Esempio di decodifica di istruzioni in linguaggio macchina

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:
Pasted image 20230318182306.png
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