お久しぶりです!これまで説明してこなかったけど、ここで cherry syn で使える演算子を説明しておこう。
cherry C 記述 | 演算 | 説明 | 結果のビット幅 |
+ | 加算 | 左右の項の和 | 左右の項の大きい方のビット幅 |
- | 減算 | 左項 - 右項 | 左右の項の大きい方のビット幅 |
* | 乗算 | 左右の項の積 | 左右の項のビット幅の合計 |
>> | 右シフト | 左項を右項ビット分右にシフト | 左項のビット幅 |
<< | 左シフト | 左項を右項ビット分左にシフト | 左項のビット幅 |
== | イコール | 左右の項が等価 | 1 |
< | 小なり | 左項が右項より小さい | 1 |
<= | 小なりイコール | 左項が右項と同じか、より小さい | 1 |
&& | 論理積 | 左項がゼロなら0、そうでなければ、右項がゼロならば0、そうでなければ1 | 1 |
|| | 論理和 | 左項がゼロでなければ1、そうでなければ、右項がゼロならば0、そうでなければ1 | 1 |
& | ビットand | 左右の項のビット論理積 | 左右の項の大きい方のビット幅 |
| | ビットor | 左右の項のビット論理和 | 左右の項の大きい方のビット幅 |
^ | ビットxor | 左右の項のビット排他的論理和 | 左右の項の大きい方のビット幅 |
@ | ビット連結 | 左右の項のビットを連結 | 左右の項のビット幅の合計 |
cherry C 記述 | 演算 | 説明 | 結果のビット幅 |
! | 論理否定 | 0と等しい | 1 |
~ | ビットnot | ビット論理否定 | 変わらない |
cherry C 記述 | 演算 | 説明 | 結果のビット幅 |
A?B:C | 条件演算子 | Aが0でなければB、そうでなければC | Bと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の高位合成機能のみに適用され、マイコン・ファームウェア・コンパイラ機能には適用されない。
それでは皆さん、またお会いしましょう!