11. アセンブラディレクティブ¶
11.1. ラベル¶
label(INNER1)
これは分岐命令で使用するラベルを定義します。したがって、コード内の別の箇所にある b(INNER1) は、label ディレクティブの後ろの命令から実行を継続させます。
11.2. インラインデータの定義¶
次のアセンブラディレクティブは、アセンブラコードブロックへのデータの埋め込みを容易にします。
data(size, d0, d1 .. dn)
data ディレクティブはメモリ内にデータ値の配列を作成します。最初の引数は、後続の引数のサイズをバイト単位で指定します。したがって、下の最初の文ではアセンブラが 3 バイト(値 2、3、4)を連続するメモリ位置に配置し、2 番目の文では 2 つの 4 バイトワードを出力します。
data(1, 2, 3, 4)
data(4, 2, 100000)
1 バイトより長いデータ値は、リトルエンディアン形式でメモリに格納されます。
align(nBytes)
続く命令を nBytes 値にアライメントします。ARM Thumb-2 命令は 2 バイトアライメントされていなければならないため、data ディレクティブの後ろ、かつ後続のコードの前に align(2) を発行することが推奨されます。これにより、データ配列のサイズにかかわらずコードが実行されることが保証されます。