5.1.2 式と演算子

式とは,シンボル,定数,および,前述の2つに演算子を付加したもの,または演算子で結合したものです。

式を構成する演算子以外の要素を項といい,記述された左側から順に第1項,第2項,…と呼びます。

演算子には「表 5.3 演算子の種類」に示すものがあり,演算実行上の優先順位が「表 5.4 演算子の優先順位」のように決められています。

演算の順序を変更するには,かっこ“ ( ) ”を使用します。

例を示します。

mov32   5 * (SYM + 1), r12

 

上記の例では,“5 * (SYM+1)”が式です。“5”が第1項,“SYM”が第2項,“1”が第3項です。“*”,“+”,“( )”が演算子です。

表 5.3

演算子の種類

上記の演算子は,単項演算子,2項演算子に分けられます。

単項演算子

+符号,-符号,!,HIGH,LOW,HIGHW,LOWW,HIGHW1

2項演算子

+,-,*,/,MOD(%),&,|,^,==,!=,>,>=,<,<=,>>,<<,&&,||

表 5.4

演算子の優先順位

優先度

優先順位

演算子

高い

 

 

 

 

 

 

 

低い

1

+符号,-符号,!,HIGH,LOW,HIGHW,HIGHW1,LOWW,STARTOF,SIZEOF

2

*,/,%,>>,<<

3

&,|,^

4

+,-

5

==,!=,>,>=,<,<=

6

&&,||

式の演算は,次の規則に従います。

-

演算の順序は,演算子の優先順位に従います。
同一順位の場合は,左から右に演算されます。単項演算子の場合は,右から左に演算されます。

-

かっこ“ ( ) ”の中の演算は,かっこの外の演算に先立って行われます。

-

式の演算は,符号なし32ビットで行います。ただし,乗算,除算,剰余算,および,論理シフトの第2項は符号付き32ビットとして扱います。
演算中に32ビットを越えてオーバーフローした場合,オーバーフローした値は無視されます。

-

定数が32ビットを越える場合には,下位32ビットを有効として計算されます。

-

除算では,小数部分を切り捨てます。
除算がゼロの場合は,エラーとなります。

-

負の値は,2の補数形式となります。

-

相対値式のアセンブル時の評価値はゼロです(評価値はリンク時に決定されます)。

表 5.5

式評価の例

評価値

2 + 4 * 5

22

(2 + 3) * 4

20

10/4

2

0 - 1

0xFFFFFFFF

EXT + 1

0

EXT:外部参照記号