>> On Mon, 29 May 1995 16:38:00 +0900, 磯山 卓志 <GGG03556@niftyserve.or.jp> said:
> 磯山です。
>>> えーと、以前カーネルグループ打ち合わせで出てきた話題に Boot 時に適当な
>>> ファイルを読み込んでそのファイルの内容のとおりに実行するというようなこ
>>> とがあったと思います。
>>>
>>> そろそろ、その Boot Language (仮称) の仕様を決めたいと思います。
> 一番良いのは、なにか既存の言語そのものであることで、
> その次は、既存の言語のサブセットであること、だと思います。
> むやみに新しい言語(というほどおおげさなものではないですが、
> 将来、大幅に拡張される可能性もあるし...)を作るのは避けたいと思います。
うーん、boot プログラムに使うから将来拡張することはない、と書きたいと
ころですが、それはやめておきましょう。
(実際、一旦作ったプログラムは、予期しないところまで使われることが多い
し。。。)
> TACLというか、そのへんの処理系がわかれば、それに合わせたいところですが、
> それは無理っぽいですね。
> 既存の言語で、そこそこ小さい処理系となると、
> scheme、forthあたりでしょうか。
scheme というと、Common Lisp の Guy Steel Jr. と G.J.Sussman の作った
言語ですね。Common Lisp に比べるとかなり仕様は小さいですが、やっぱり
Lisp ですので、Boot に使う言語としては無理があるような気がします。
(個人的には、Lisp は興味をもっているのですけどね。簡単なやつを 2、3個
作ったこともあるし)
# boot で garbage collection をするのが嫌だというのが一番の理由です ^^)
scheme で boot の記述をするとこういう風になるかな:
;;; ITRON が入っているパスを指定。
(define ITRON-PATH "/itron.img")
;;; 指定したデバイスからプログラムを読み込み、実行を開始する関数。
(define (load-and-fly device program)
(set! stream (open-file device program))
(assert (eq stream nil) "Cannot open file.")
(set! header (read-program-header stream))
(load-program-body stream (get-load-addr header))
(run (get-entry-addr header)
(assert t "Cannot run program.")
こういう風に定義しておいて、boot 時にプロンプトから次のように入力する
と、floppy から ITRON を読み込んで実行します('boot> ' はプロンプト)。
boot> (load-and-fly "fd0" ITRON-PATH)
:
:
ITRON がメモリに読み込まれ、実行される。
:
:
forth というと SUN の boot 時のモニタが forth (風な)言語というのを聞い
たことがあります。もっとも、どういうものかは SUN をほとんど触ったこと
がないので、分かりません。今もそうなんでしょうか?
forth だと構文解析をかなり省けるのでかなり楽そうですね。
(そういえば、最新の forth の仕様はいくつなんでしょう? 私は forth 79
までしか知らない。。。)
> あるいは、cshとかの『シェルスクリプト』。それから、MS-DOSのバッチ言語(?)。
この辺が無難でしょうか?
そういえば、TACL というのは通常の手続き型言語と同様のものと考えていい
んでしょうか?
-- 内藤隆一 (ggc00661@niftyserve.or.jp/night@bfree.rim.or.jp)