OSASK共通ドライバ仕様

  • (まだOSASK-MLやOSASK-Wikiには書けない段階)
  • ()

IA-32ネイティブ

  • FS:EBX
    • コマンドライン構造体
      • 0x00000000で終了。
      • 0x00000001:基本的なinfo。最低ワークエリアサイズ、状態セーブ対応など。マイナーリビジョン。(メジャーバージョンやエンディアン情報は、あらかじめ分かっているべきものだから、ここにはかいてない。)
      • 0x00000002:コンストラクタ(パラメータがあるかもしれない)。
      • 0x00000003:デストラクタ。パラメータはない。だからデストラクトに必要な情報は覚えておくように。
      • 終了コマンドで終わる場合、EBXは次のアドレスを指す。
      • 終了コマンド以外は、次の4バイトがオプションになるが、オプションの24-31bitは、コマンド長になる(dw単位で、cmdとoptを含まない)。
  • 0x00000004-0x00000007:リザーブ。
  • 0x00000008-:自由。
  • DS:ESI
    • ワーク。呼び出し元に設定してもらえる。コールゲートをくぐる場合はこの限りではない。

以下、没っぽい

  • GS:EDX
    • (A)
      • 使わない。
    • (B)
      • 外部入出力ポインタ。
      • こいつの導入に伴い、書き込み即値は撤廃。
    • (C)
      • 不定型および、マルチセグメント型の場合、GS:EDXからfarポインタが並ぶ(8バイトずつ)。
      • これはkabaの場合、インタプリタによってセットさせる。

汎用バイトコード

  • オブジェクトセレクタを使って、セグメントをエミュレーション。オブジェクトセレクタ値なら、ただの定数なので機種依存問題はない。OSASKアプリにおけるスロット番号のような役目を果たす。
  • LDTへの設定に相当するものは、外部関数で適当に作る。リミットは上限と下限。コピーと、アクセス可能域の制限はできるが、ベースは変更不能。
  • タスク制御、ページ制御、オブジェクトセレクタ設定部分は、各OS依存として、汎用バイトコードでの記述は検討しない。

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: 2006-02-16 (木) 18:00:47 (5974d)