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:

  1. Compilazione (tramite un assembler)
  2. Linking (tramite un linker)
  3. 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

Registronome ABIUtilizzo
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 ABIUtilizzo
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.