2 part forth (907レス)
上下前次1-新
抽出解除 レス栞
521(1): 464 2008/10/11(土)15:30 AAS
>520
どのみちリターンスタック(実行する命令列を保存する専用スタック)が必要なのはその通り。
WORDの動作:普通のForthでの実行と同じ動作でワード系列をコピー
VMの動作: 順番にInterpretして実行する
というところがポイントですな。VMは辞書のこととか考える必要がないのでシンプルになります。
その代わり「辞書からWORD列を拾ってリターンスタックに展開する」というWORDが必要になるけど。
確かにコピーする手間はムダな気もするんだけどね……
辞書のWORD列を直接トレースするのと比べてどんぐらい余計な手間がかかってるんだろう?
ポインタ操作数回&アクセス数回レベルだと思うけど。
524(1): 517 2008/10/11(土)21:01 AAS
>>521
いや、そうではなくて、
「WORDの動作」の中の、「普通のForthと同じ動作で」ってところに、
リターンアドレスを保存するスタックという意味でのリターンスタックが、もう必要なのではないかということ。
あと、言葉の問題として、
大きい意味でのワードを展開する動作のところからもうInterpreter(=VM)の動作というのが普通だと思う。
つまり、VMの動作の前半をWORDの動作と呼んで違う名前にしたから、
残ったVMの動作が簡単に見えるというだけなんじゃないかな。
辞書中のワードから始めると、ForthのVMよりも(多分プリミティブ)WORDの系列を作る部分が余分で、
より複雑になってると思う。
でも、自分の言語を作るのをやめろといってるんじゃないよ。
むしろ応援してる。
ちょっと話題はそれるけど、Forthというか、スタック指向言語は、
コンパイラライターフレンドリーなんだよね。
だから、Forthコード書くよりForth(風オレ言語)VMを書く人が多かったりするわけだが、
ホントはForthでアプリケーションを書くときも「オレ言語」を作るつもりで書くと良いと思ってる。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.036s