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

式は 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.20 スキャッタファイル内の式の評価
8.21 スキャッタファイルでの式の使用
8.23 スキャッタファイルで使用する実行アドレスの組み込み関数
8.25 ScatterAssert 関数とロードアドレスに関連する関数
8.26 スキャッタファイル内のシンボルに関連する関数
8.10 ロード領域に相対アドレス +offset を使用する際の注意事項
8.11 実行領域に相対アドレス +offset を使用する際の注意事項
8.27 ロード領域に厳密に配置した状態で、実行領域でベースアドレスに合わせる例
関連する参考文書
8.2 スキャッタファイルの構文
8.4 ロード領域記述の構文
8.7 実行領域の記述に含まれている構文
非機密扱いPDF file icon PDF 版ARM DUI0474JJ
Copyright © 2010-2013 ARM.All rights reserved.