目次
前
次
電卓としての利用(ダイレクトモード)
Forthインタプリタを利用すると、端末ソフト上で
電卓としての動作が可能です。
このモードは、UnixをOSとしている処理系ならシェルと呼び
BASICを使っているならダイレクトモードという方が、理解
しやすいかも知れません。
Forthはスタック操作が基本なので、数値を組込み
ワードを使って計算できます。
加減乗除算で用意されている、組込みワードは、以下。
これらを使って計算させると、次のようになります。
掌に持って使う電卓との違いは、ワード「.」を利用して
スタックにある数値を取り出して、表示させないと駄目
なことでしょう。
コンピュータでプログラムを書くとき、2のべき乗の
計算が必要なことがあります。シフトを利用して計算
すれば、よいでしょう。
論理シフト命令を利用して、計算する例は、以下。
16進数で表示するために、ワード「hex.」を使えばよいでしょう。
2の10乗は、1024になるので、16進数だと$400。
2進数では、%10000000000となります。
変数に数値を入れたときには、ワード「@」を利用して
スタックに積んでから、ワード「hex.」で表示します。
スタック操作がForth言語の基本なので、スタックに
入っている情報をジャングリングするためのワード
を確認しておくとよいでしょう。
- depth (-- +n) Gives number of single-cell stack items.
- nip (x1 x2 -- x2)
- drop (x --)
- rot (x1 x2 x3 -- x2 x3 x1)
- -rot (x1 x2 x3 -- x3 x1 x2)
- swap (x1 x2 -- x2 x1)
- tuck (x1 x2 -- x2 x1 x2)
- over (x1 x2 -- x1 x2 x1)
- ?dup (x -- 0 | x x)
- dup (x -- x x)
- pick (... xi+1 xi ... x1 x0 i -- ... x1 x0 xi) Picks one element from deep below
- >r (x --) (R: -- x)
- r> (-- x) (R: x --)
- r@ (-- x) (R: x -- x)
- rdrop ( -- ) (R: x --)
- rdepth (-- +n) Gives number of return stack items.
- rpick (i -- xi) R: ( ... xi ... x0 -- ... xi ... x0 )
これらのなかで、nip、drop、rot、-rot、swap、tuck、over、dupは
利用頻度が多いので、スタックの変化を図で描けるまでにしておいた
方がよいでしょう。
nip
スタックトップの直下を削除するワード。
drop
スタックトップを削除するワード。
rot
スタックトップに、スタックトップの2つ下から
持ってくるワード。
-rot
スタックトップに、スタックトップの2つ下に
持っていくワード。
swap
スタックトップと直下を交換するワード。
tuck
スタックトップのコピーを、直下の下に
滑り込ませるワード。
over
スタックトップ直下を、スタックトップにコピーするワード。
dup
スタックトップのコピーを、スタックトップにするワード。
これらのスタック操作は、大道芸のジャグリングに
似ているので、難しいと思えるなら、ジャグリング
の動画を見てみるとよいでしょう。
少し複雑なことをしたり、高度な処理をするには
プログラムモードでワード定義が必要になります。
目次
前
次