7.12 スキャッタファイル内の式の評価を使用したパディングの回避の例

この例では、スキャッタファイル内の式の評価を使用して、パディングを回避する方法を示します。

スキャッタロード属性によってはスキャッタファイルで使用すると、イメージに大量のパディングが挿入される場合があります。
ALIGNALIGNALL、および FIXED の各属性が原因で挿入されたパディングを削除するには、式の評価を使ってロード領域と実行領域の開始アドレスを指定します。アドレス式の指定には、組み込み関数 AlignExpr を使用できます。

以下のスキャッタファイルでは、生成されたイメージにパディングが挿入されます。
LR1 0x4000
{
    ER1 +0 ALIGN 0x8000
    {
        …
    }
}
この例では、ALIGN キーワードを使用すると、ER1 はロードビューと実行ビューの両方で 0x8000 の境界で整列します。ロードビューで整列させるためには、リンカは 0x4000 バイトのパディングを挿入する必要があります。
以下のスキャッタファイルでは、生成されたイメージにパディングが挿入されません。
LR1 0x4000
{
    ER1 AlignExpr(+0, 0x8000)
    {
        …
    }
}
AlignExpr を使用すると、+0 の結果は 0x8000 の境界で整列されます。そのため、作成される実行領域のロードアドレスは 0x4000 になりますが、実行アドレスは 0x8000 になります。
関連する概念
8.6.2 式の評価に使用可能な演算子
8.6.11 ロード領域に厳密に配置した状態で、実行領域でベースアドレスに合わせる例
関連する参考文書
8.6.8 AlignExpr(expr, align) 関数
8.4.3 実行領域の属性
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.