11. Директивы ассемблера

11.1. Метки

  • label(INNER1)

Это определяет метку для использования в инструкции перехода. Так, в другом месте кода b(INNER1) вызовет продолжение выполнения с инструкции, следующей за директивой метки.

11.2. Определение встроенных данных

Следующие директивы ассемблера облегчают встраивание данных в блок ассемблерного кода.

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

Директива data создаёт массив значений данных в памяти. Первый аргумент задаёт размер в байтах последующих аргументов. Следовательно, первый оператор ниже заставит ассемблер поместить три байта (со значениями 2, 3 и 4) в последовательные ячейки памяти, тогда как второй заставит его выдать два четырёхбайтовых слова.

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

Значения данных длиннее одного байта хранятся в памяти в формате little-endian.

  • align(nBytes)

Выравнивает следующую инструкцию по значению nBytes. Инструкции ARM Thumb-2 должны быть выровнены по двум байтам, поэтому рекомендуется выдавать align(2) после директив data и перед любым последующим кодом. Это гарантирует, что код будет работать независимо от размера массива данных.