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) を発行することが推奨されます。これにより、データ配列のサイズにかかわらずコードが実行されることが保証されます。