式とは,シンボル注1,定数(数値定数注2,文字定数),前述の2つに演算子を付加したもの,または演算子で結合したものです。
注 1. | 式の要素として指定可能なシンボルは,ネーム,ラベル,外部参照名のみです。ただし,SIZEOF演算子,およびSTARTOF演算子に対してはセクション名を指定可能です。 |
注 2. | デバイス・ファイル読み込み時には,式の中でSFR略号,および拡張SFR略号を定数と同様に扱うことができます。 |
式を構成する演算子以外の要素を項といい,記述された左側から順に第1項,第2項,…と呼びます。項のリロケーション属性により,使用可能な演算子が限られます。
演算子には「表 5.4 演算子の種類」に示すものがあり,演算実行上の優先順位が「表 5.5 演算子の優先順位」のように決められています。
演算の順序を変更するには,かっこ“ ( ) ”を使用します。
上記の演算子は,単項演算子,特殊単項演算子,2項演算子に分けられます。
単項演算子
|
+符号,-符号,~,HIGH,LOW,HIGHW,LOWW,MIRHW,MIRLW,SMRLW,DATAPOS,BITPOS,STARTOF,SIZEOF
|
2項演算子
|
+,-,*,/,%,&,|,^,==,!=,>,>=,<,<=,&&,||,>>,<<
|
|
|
|
|
|
+符号,-符号,~,HIGH,LOW,HIGHW,LOWW,MIRHW,MIRLW,SMRLW,DATAPOS,BITPOS,STARTOF,SIZEOF
|
|
*,/,%,>>,<<
|
|
+,-
|
|
&,|,^
|
|
==,!=,>,>=,<,<=
|
|
&&,||
|
式の演算は,次の規則に従います。
- | 演算の順序は,演算子の優先順位に従います。
同一順位の場合は,左から右に演算されます。単項演算子の場合は,右から左に演算されます。 |
- | かっこ“ ( ) ”の中の演算は,かっこの外の演算に先立って行われます。 |
- | 式の演算は,32ビットで行います。
式中に記述した定数,式の評価途中,および評価結果が32ビットを越えた場合は,下位32ビットを有効とします。その場合エラーは出力されません。
ただし,.DB8疑似命令のオペランドに記述された式では,各々の項を64ビットとして扱います。 |
- | 演算の各項は符号なし整数として扱われますが,以下の場合は符号付き整数として扱われます。 |
乗算,除算,剰余算,論理シフトの第2項
- | リロケータブル項のアセンブル時の評価値はゼロです(評価値はリンク時に決定されます)。 |
|
|
5 + 8 - 6 * 2 / 4
|
10
|
5 + (8 - 6) * 2 / 4
|
6
|
(5 + 8 - 6)* 2 / 4
|
3
|
2 * (0x0F - (0x0B & (0x0A | 0x0F)))
|
8
|
2 * 0x0F - 0x0B & 0x0A | 0x0F
|
0x0F
|
HIGH(-1)
|
0xFF
|
HIGH(0x0FFFF)
|
0xFF
|
2 + 4 * 5
|
22
|
(2 + 3) * 4
|
20
|
10/4
|
2
|
0 - 1
|
0xFFFFFFFF
|
-1 > 1
|
1(真)
|
EXT注 + 1
|
0
|