11. Direttive dell’assembler

11.1. Etichette

  • label(INNER1)

Questo definisce un’etichetta da usare in un’istruzione di salto. Quindi, altrove nel codice, un b(INNER1) farà sì che l’esecuzione prosegua con l’istruzione successiva alla direttiva label.

11.2. Definizione di dati inline

Le seguenti direttive dell’assembler facilitano l’incorporamento di dati in un blocco di codice assembler.

  • data(size, d0, d1 .. dn)

La direttiva data crea un array di valori di dati in memoria. Il primo argomento specifica la dimensione in byte degli argomenti successivi. Quindi la prima istruzione qui sotto farà sì che l’assembler ponga tre byte (con valori 2, 3 e 4) in posizioni di memoria consecutive, mentre la seconda gli farà emettere due parole da quattro byte.

data(1, 2, 3, 4)
data(4, 2, 100000)

I valori di dati più lunghi di un singolo byte vengono memorizzati in memoria in formato little-endian.

  • align(nBytes)

Allinea l’istruzione successiva a un valore di nBytes. Le istruzioni ARM Thumb-2 devono essere allineate a due byte, quindi è consigliabile emettere align(2) dopo le direttive data e prima di qualsiasi codice successivo. Questo garantisce che il codice verrà eseguito indipendentemente dalla dimensione dell’array di dati.