スキャッタファイルで使用する実行アドレスの組み込み関数

実行アドレスに関連する関数は、base_address+offset 値、または max_size を指定する場合にのみ使用できます。これらの関数は、Table 4 に示すリンカ定義のシンボルの組み合わせにマップされます。

Table 4. 実行アドレスに関連する関数 

関数リンカ定義のシンボル値
ImageBase(region_name)
Image$$region_name$$Base
ImageLength(region_name)
Image$$region_name$$Length + Image$$region_name$$ZI$$Length
ImageLimit(region_name)
Image$$region_name$$Base + Image$$region_name$$Length + Image$$region_name$$ZI$$Length

パラメータ region_name  には、ロード領域名または実行領域名のいずれかを指定できます。前方参照は使用できません。region_name は、既に定義されているロード領域または実行領域のみを参照できます。

Note

.ANY セレクタパターンの使用時は、これらの関数は使用できません。これは、セクションの割り当て時、.ANY 領域に最大サイズが使用されるためです。すべての領域のサイズが判明するのは .ANY の割り当て後であるため、その時点では最大サイズは利用できない可能性があります。

次の例は、ImageLimit(region_name) を使用して、1 つの実行領域を別の実行領域の直後に配置する方法を示しています。

Example 10. 実行領域の後に別の実行領域を配置する例

LR1 0x8000
{
    ER1 0x100000
    {
        *(+RO)
    }
}
LR2 0x100000
{
    ER2 (ImageLimit(ER1))               ; ER1 の後に ER2 を配置する
    {
        *(+RW +ZI)
    }
}

Show/hide式での +offset の使用

実行領域の +offset 値は、前の領域を基に定義されます。この値は、他の式(AlignExpr など)への入力として使用できます。以下に例を示します。

LR1 0x4000
{
    ER1 AlignExpr(+0, 0x8000)
    {
        ...
    }
}

AlignExpr を使用すると、+0 の結果は 0x8000 の境界で整列されます。そのため、作成される実行領域のロードアドレスは 0x4000 になりますが、実行アドレスは 0x8000 になります。

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0493EJ
Non-ConfidentialID081711