目次

論理演算

 論理演算は、Forthインタプリタでは、以下のものがあります。

 論理否定のワード「not」だけは、スタックに
 入れるパラメータはひとつだけ。

 各論理演算の動作テストをすると、以下。



 論理演算を利用するのは、自分の場合は
 次のリストに示す場面が多いです。

 排他的論理和と論理否定を利用すると、一致か不一致を
 フラグで確認できます。
 以下のように論理演算ワードを使います。



 新しいワードで定義してみると、以下。

: ?same xor not 1 and ;

 実際に使ってみます。



 変数、定数を使った判定では、次のようになります。



 定数の場合、ラベルをタイプするだけでスタックに
 数値を入れることができます。

 変数の値をスタックに入れるため、ワード「@」を利用。

 マスク処理では、最下位ビット(LSB)とその上のビット
 の値を取り出したい場合に使います。



 この例では、変数の値そのものを操作していません。

 変数の値をスタックに入れ、その値と他の値の
 論理積を求めるので、call by valueの操作と
 言ってもよいでしょう。

 マイコンのレジスタの値を操作するときにも
 論理演算を使えます。

 LPC1114のピンは、複数の機能が割り当てられているので
 現在の状態を確認するのと、状態変更に論理演算を活用
 できます。

 GPIOのPIO0_2の状態を確認し、変更するときは
 次のようにタイプ。



 レジスタ$4004401Cの各ビットは、次の機能設定用
 ビットとパターンになっています。



 最初の設定は、GPIOとなっていたのが、LSBに'1'を
 セットしたことで、SSEL0(SPIモードの信号SEL)を
 扱うように状態を変えられました。

 論理演算は、シフト処理と組み合わせると、スタックを
 数値を出し入れする無限個のレジスタとして扱えます。


目次

inserted by FC2 system