1: 2009-07-17 (金) 15:05:33 |
2: 2009-07-17 (金) 15:11:45 |
| --何らかの方法で例外を起こさせる: | | --何らかの方法で例外を起こさせる: |
| --コールゲート: | | --コールゲート: |
- | --sysenter?(これはよく知らないのでコメントできない) | + | --sysenter: |
| + | ---でも386で利用できない命令は、いたずらに対応機種を減らすだけなのでOSASKでは使わない |
| -第一世代OSASKを作るに当たっては、これらの方法を検討した。まずnear-CALL案はかなりはやく消えた。なぜなら、結局アプリからシステムコールした以上は、どこかのタイミングでCPL=0に入る必要があり、だからアプリからAPIを叩いたときにすぐにCPL=0に移行するのが一石二鳥でいいと思えたのだ。 | | -第一世代OSASKを作るに当たっては、これらの方法を検討した。まずnear-CALL案はかなりはやく消えた。なぜなら、結局アプリからシステムコールした以上は、どこかのタイミングでCPL=0に入る必要があり、だからアプリからAPIを叩いたときにすぐにCPL=0に移行するのが一石二鳥でいいと思えたのだ。 |
| -例外方式は遅そうなのでボツ。 | | -例外方式は遅そうなのでボツ。 |
| *** (2) | | *** (2) |
| -第二世代OSASKでは、全く別の観点からどうするかを考えた。第二世代OSASKのアプリケーションは、efg01等によって、ほぼ全てのx86のOS上で実行可能になることを最優先で設計した。さらにefg01はアプリケーションとして記述可能で、ドライバなどの支援は極力あてにしないことにした(そうでないとefg01の移植が困難になる恐れがある)。 | | -第二世代OSASKでは、全く別の観点からどうするかを考えた。第二世代OSASKのアプリケーションは、efg01等によって、ほぼ全てのx86のOS上で実行可能になることを最優先で設計した。さらにefg01はアプリケーションとして記述可能で、ドライバなどの支援は極力あてにしないことにした(そうでないとefg01の移植が困難になる恐れがある)。 |
- | -そうすると、win32やLinux上ではセグメンテーションを活用したプログラミングはほとんど期待できないし、ましてLDTなどをアプリケーションが設定できる期待も持てないので、第一世代OSASKのやり方は使えない。IDTの設定も期待できないので、ソフトウェア割り込みもボツ、例外もボツ。・・・こうしてnear-CALLだけが残った。 | + | -そうすると、win32やLinux上ではセグメンテーションを活用したプログラミングはほとんど期待できないし、ましてLDTなどをアプリケーションが設定できる期待も持てないので、第一世代OSASKのやり方は使えない。IDTの設定もアプリからできるなんて期待できないので、ソフトウェア割り込みもボツ、例外もボツ。・・・こうしてnear-CALLだけが残った。 |
| -そんなわけで、第二世代OSASKでは、起動時に教えられたアドレスへnear-CALLすることがシステムコールとなっている。 | | -そんなわけで、第二世代OSASKでは、起動時に教えられたアドレスへnear-CALLすることがシステムコールとなっている。 |
| * こめんと欄 | | * こめんと欄 |
| #comment | | #comment |