efg01の整備計画
(1)
- OSC2008北海道のセミナーでの質問で、「efg01 on efg01」の提案があった。これは面白いので手間がかからないならやりたい。さてこれをやるためにはefg01にはどんなAPIが足りないかを考えてみる。
- そうすると、とりあえず、コードセグメント内に対するmallocさえあればよさそうに思える。これがあれば、efg01 on efg01なんていうネタアプリだけではなく、「ぐいぐい01」仕様でefg02やそれに類するものを作る場合にも使えそうだ(efg02の計画は今のところないが)。
- フラットなメモリモデルは、CSがDSのエイリアスでしかないので、単にmallocすればそれで終わる(問題があるとすればNXビットの設定くらいなもの)。しかし旧OSASKやOSASK-HBでは話はそう簡単じゃない。まあこれらではOS側にefg01に相当するものを組み込んでしまっているので、実はどうにでもできるわけだけど(つまり特権命令すら使いたい放題なわけで)、しかしそれで満足しては発展がない。
- ではフラットではないメモリモデルではどうしようか。まずこのようなメモリモデルでは、CS内にメモリを確保できたところで、それだけではほとんど意味がない。なぜなら、CSへ書き込みアクセスすることはできないからである。ということで、DSからアクセスできるところにアクセスウィンドウがなければダメだ。そしてその際は、DSの中でのアドレスとCSの中でのアドレスは違うということを前提にしなければいけない。
- 単にCSの中のmallocということであれば、