[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[b-free: 1323] Re: 中間コードの実行ファイル化 (Re: Memory Protection)
Hideaki Suzukiさん、こんにちは。リギーコーポレーションの片桐です。
|これを拡張すると、VM の Memory map 自体を Mcode file に書き出すことで、
|処理の持ち越しが出来そうですね。
|処理の途中でやめて、Zip Disk かなんかに保存して、別の機械の上でその途中
|から走らすというやつです。
|TADのお回しの議論にも繋がるかな。
Telescriptがまさにそれで、別のホストに移動してから続きを実行するように
なっています。
ディスパッチャ(MindではC記述)をどうするかという問題がありますが、
たぶん切り離してしまうのが良いのでしょう。一部の管理データ(仮想マシン
のスタックポインタなど)のみ保存するということで。
関連することですが、タスク管理をインタプリタのほうでもやると面白いこと
ができます。デバック用のワンステップ実行とか、先のような一旦停止時の処
理などです。本物のCPUレベルでやると、レジスタに始まって待避すべき資源が
とても多くなってしまいますが、この方法ですと簡単になります。
つまり、CPUレベルで切ってしまうと、「中間コードをフェッチしている
途中」とか「スタックにデータを積んでいる途中」「数値計算している
途中」といった変な場所で切ってしまいますが、インタプリタが切るんだ
と、たとえば「次のフェッチに入る直前」といった固定場所で止めること
ができます。
元祖FORTHはこの方法でラウンドロビンによるマルチタスクを実現してまし
たね。
片桐 明 (株)リギーコーポレーション
killy@rigy.co.jp
NIFTY: PAG01434