11. Dyrektywy asemblera

11.1. Etykiety

  • label(INNER1)

Definiuje etykietę do użycia w instrukcji skoku. Tak więc gdzie indziej w kodzie b(INNER1) spowoduje kontynuację wykonania od instrukcji następującej po dyrektywie etykiety.

11.2. Definiowanie danych wbudowanych

Poniższe dyrektywy asemblera ułatwiają osadzanie danych w bloku kodu asemblera.

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

Dyrektywa data tworzy w pamięci tablicę wartości danych. Pierwszy argument określa rozmiar w bajtach kolejnych argumentów. Stąd pierwsza instrukcja poniżej spowoduje, że asembler umieści trzy bajty (o wartościach 2, 3 i 4) w kolejnych miejscach pamięci, podczas gdy druga spowoduje wyemitowanie dwóch czterobajtowych słów.

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

Wartości danych dłuższe niż pojedynczy bajt są przechowywane w pamięci w formacie little-endian.

  • align(nBytes)

Wyrównuje następną instrukcję do wartości nBytes. Instrukcje ARM Thumb-2 muszą być wyrównane do dwóch bajtów, dlatego zaleca się wydanie align(2) po dyrektywach data i przed jakimkolwiek kolejnym kodem. Zapewnia to, że kod będzie działał niezależnie od rozmiaru tablicy danych.