8.6.4 スキャッタファイル内の式の規則

式は C 言語での優先順位に従います。

式は以下の要素から構成されます。
  • 10 進数または 16 進数値
  • 算術演算子:+, -, /, *~OR、および AND
    OR 演算子と AND 演算子はそれぞれ、C 言語の演算子「|」と「&」にマップされます。
  • 論理演算子:LORLAND、および !
    LOR 演算子と LAND 演算子は、 それぞれ C 言語の演算子 ||&& にマップされます。
  • 関係演算子:<<=>>=、および ==
    式が FALSE と評価されるとゼロが返され、TRUE と評価されるとゼロ以外の値が返されます。
  • 条件演算子: Expression ? Expression1 :Expression2
    この演算子は、C 言語の条件演算子と一致します。 Expression がゼロ以外の値に評価されると Expression1 が評価され、ゼロに評価されると Expression2 が評価されます。

    実行領域またはロード領域の記述において、+offset のコンテキストで条件演算子を使用した場合、 Expression1 Expression2 の両方が相対的と見なされる場合にのみ、最後の式は相対的と見なされます。以下に例を示します。
    er1 0x8000
    {
        …
    }
    er2 ((ImageLimit(er1) < 0x9000) ?+0 : +0x1000)    ; er2 は相対アドレスを持つ
    {
        …
    }
    er3 ((ImageLimit(er2) < 0x10000) ?0x0 : +0)       ; er3 は絶対アドレスを持つ
    {
        …
    }
  • 数値を返す関数
すべての演算子の意味と優先順位が C の対応する演算子と一致します。
式には大文字と小文字の区別がなく、明瞭にするために丸括弧を使用できます。
関連する概念
8.6.1 式の評価の数値定数を指定するメソッド
8.6.3 スキャッタファイルでの式の使用
8.6.5 スキャッタファイルで使用する実行アドレスの組み込み関数
8.6.6 ScatterAssert 関数とロードアドレスに関連する関数
8.6.7 スキャッタファイル内のシンボルに関連する関数
8.3.6 ロード領域に相対アドレス +offset を使用する際の注意事項
8.4.5 実行領域に相対アドレス +offset を使用する際の注意事項
8.6.11 ロード領域に厳密に配置した状態で、実行領域でベースアドレスに合わせる例
関連する参考文書
8.2 スキャッタファイルの構文
8.3.2 ロード領域記述の構文
8.4.2 実行領域の記述に含まれている構文
非機密扱いPDF file icon PDF 版ARM DUI0474LJ
Copyright © 2010-2015 ARM.All rights reserved.