Note
Il linguaggio assembly è un linguaggio specifico del particolare processore più primitivo rispetto ai linguaggi ad alto livello. È molto restrittivo con il suo set di operazioni.
Stored Program
I programmi sono sequenze di istruzioni macchina rappresentate in binario, vengono caricati in memoria esattamente come i dati.
Un programma è una sequenza di codici numerici binari, di cui alcuni vengono interpretati dalla CPU come istruzioni, mentre altri sono dati.
In RISC-V la memoria è indirizzata a byte.
Processo di compilazione
Note
Il passaggio dal codice sorgente all’esecuzione del programma si articola in tre fasi:
- Compilazione (tramite un assembler)
- Linking (tramite un linker)
- Caricamento ed esecuzione
Caratteristiche di un’architettura di un set di istruzioni
Note
Un architettura di un set di istruzioni è composto da:
- Registri
- Istruzioni macchina e tipi di formati (codifica, operazioni, indirizzamento)
- Modello di memoria
Registri
Note
In RISC-V esistono 32 registri di uso generale, sono numerati da a (bastano quindi per codificarli). e sono indicati come
x0-x31. Inoltre hanno anche dei nomi simbolici convenzionali. Hanno una lunghezza di e possono solo contenere valori interi (I valori decimali hanno dei registri specifici).
Registri referenziabili
Registro nome ABI Utilizzo x0zeroContiene solo una costante non modificabile x1raIndirizzo di rientro da funzione x2spPuntatore alla cima della pila x3gpPuntatore all’area dati globale x4tpPuntatore a thread x5-x7t0-t2Valori temporanei x8s0/fpVariabile locale di funzione o frame pointer (se in uso) x9s1Variabile locale di funzione x10-x11a0-a1Valore restituito da funzione x12-x17a2-a7Argomenti di ingresso a funzione (max argomenti, gli eccedenti in pila) x18-x27s2-s11Variabili locali di funzione (max o variabili, le eccedenti in pila) x28-x31t3-t6Valori temporanei
Registri non referenziabili
Nome ABI Utilizzo pcProgram Counter hi,loRegistri per moltiplicazioni e divisioni
Istruzioni
Note
Le istruzioni comprese nel linguaggio macchina di qualunque computer cono classificabili in quattro categorie:
- Aritmetico/Logiche
- Load/Store
- Branch/Jump
- I/O
Linguaggio macchina
Note
Le istruzioni in linguaggio assembly vanno tradotte in linguaggio macchina (cioè sequenze di e ) per essere eseguite.