cherry syn で使える演算子

お久しぶりです!これまで説明してこなかったけど、ここで cherry syn で使える演算子を説明しておこう。

2項演算子

cherry C 記述演算説明結果のビット幅
+加算左右の項の和左右の項の大きい方のビット幅
-減算左項 - 右項左右の項の大きい方のビット幅
*乗算左右の項の積左右の項のビット幅の合計
>>右シフト左項を右項ビット分右にシフト左項のビット幅
<<左シフト左項を右項ビット分左にシフト左項のビット幅
==イコール左右の項が等価1
<小なり左項が右項より小さい1
<=小なりイコール左項が右項と同じか、より小さい1
&&論理積左項がゼロなら0、そうでなければ、右項がゼロならば0、そうでなければ11
||論理和左項がゼロでなければ1、そうでなければ、右項がゼロならば0、そうでなければ11
&ビットand左右の項のビット論理積左右の項の大きい方のビット幅
|ビットor左右の項のビット論理和左右の項の大きい方のビット幅
^ビットxor左右の項のビット排他的論理和左右の項の大きい方のビット幅
@ビット連結左右の項のビットを連結左右の項のビット幅の合計

単項演算子

cherry C 記述演算説明結果のビット幅
!論理否定0と等しい1
~ビットnotビット論理否定変わらない

3項演算子

cherry C 記述演算説明結果のビット幅
A?B:C条件演算子Aが0でなければB、そうでなければCBとCのビット幅の大きい方

ビットスライス

ある変数の一部のビット列を切り出して使いたい場合は、


b = a#(4..2);

のように書く。この例では、変数aのビット2から4までを切り出して、bに代入している。結果は3ビット幅になる。1ビットだけを切り出す場合は、


b = a#(0);

のように書く。この例では、変数aのビット0を切り出して、bに代入している。

トップレベルの記述では、左辺式の一部のビットのみに右辺式を接続することができる。


b#(4..2) = a;

この例では、bのビット2から4に、aを接続している。

なお、この説明は、cherry synの高位合成機能のみに適用され、マイコン・ファームウェア・コンパイラ機能には適用されない。

それでは皆さん、またお会いしましょう!