Una direttiva è un comando per l’assemblatore (non un’istruzione che la CPU esegue). Serve per: organizzare il codice, riservare memoria, dichiarare dati, indicare l’ingresso del programma, importare simboli globali. Ecco le più importanti:
.data
Serve per dichiarare la sezione dati, dove definisci variabili, costanti, stringhe ecc.
.data
x: .word 42 # x è un intero a 32 bit
s: .asciiz "Ciao!" # s è una stringa null-terminated.text
Indica l’inizio della sezione di codice eseguibile (le istruzioni del programma).
.text
main:
li a0, 1.globl
Serve per dichiarare un’etichetta come globale, cioè visibile da fuori (necessaria per main, quando si lavora con più file).
.globl main
.text
main:
li a0, 42Se non si mette .globl main, molti ambienti non trovano il punto d’ingresso del programma.
.word
Riserva 4 byte (32 bit) in memoria e li inizializza.
.data
x: .word 5 # intero a 32 bitSi può anche usare per più valori:
valori: .word 1, 2, 3, 4.asciiz
Crea una stringa terminata da \0 (null character), compatibile con le syscall tipo stampa stringa.
msg: .asciiz "Ciao mondo!".byte, .half, .double
Riservano e inizializzano dati di altri formati rispetto a .word:
x: .byte 10 # 1 byte
y: .half 1000 # 2 byte (16 bit)
z: .double 12345678 # 8 byte (64 bit)