[OSASK 6614] Re: p0cref.html

 こんにちは、I.Tak.です。

From: Hidemi KAWAI <kawai !Atmark! imasy.org>
Subject: [OSASK 6608] Re: chelo 0.32, p0cref.html
Date: Mon, 27 Oct 2003 18:14:21 +0900

>   ・予備知識 / アプリ起動時のレジスタ
>     → GSの初期値は保証されていません。これについては僕が間違っ
>        た発言をしたことはないと思うのですが・・・。

 すみません。曖昧な記憶で書いてしまいました。確かに GS = 未定
とMLに書いてありますね。

>   ・特別モード終了 / バグ
>     僕の記憶が正しければ、NOPを入れてcmd004を呼ぶのは誤動作する
>     はずです。というか、cmd004については、以下のルールに必ず従う
>     ものとしましょう。
>       1.利用するなら、かならずコマンドの先頭。
>       2.特別モード終了(-1)以外では終了しない。

 私がそこに書いた回避策は「初期化後」の話ですので, 誤動作はしません。
初期化前にNOPを入れるのは違反ですね。

 ところで, 特別コマンド関係で考えられる組合わせは
    初期化前:
   1. 特別コマンド + 特別終了
   2. 特別コマンド + 初期化コマンド + 一般コマンド
    初期化後:
   3. 特別コマンド + 特別終了
   4. 特別コマンド + 一般コマンド
   5. 一般コマンド + 特別コマンド + 特別終了
   6. 一般コマンド + 特別コマンド + 一般コマンド
このように6通りありますが, 今回のルールでは1と3しか許さないという
ことでいいのでしょうか。

  ところで, APIの実装を見ると別なコマンドが繋げられるように*わざわざ*
判定する処理があり, 当初の計画では特別コマンドをほかのコマンドと混ぜ
て使うことを意図していたようです。今回のように制限を厳しくするのは,
バグのために仕様を変えているようで腑に落ちません。デバッグして混ぜら
れるようにするという選択肢はないのでしょうか?

  ……デバッグしたくなりました。デバッグしないと不便ですし。

  デバッグは, 「最初のコマンドがなんであろうとスロット0x01f0を使って
ワークエリアのポインタを取得する」ようにすれば終わりだと思います。
今は初期化コマンド (と特別コマンド) が先頭の場合は取得しないようになっ
ていますが, 初期化前にスロットを読んだところで意味のないデータが読ま
れるて時間の無駄であるという以外の害はありませんよね。その後の呼び出し
では判定がなくなる分速くなるわけですし, タスクの生涯で一回だけなら無駄
も許されるかな, と。初期化していないスロットを読んではいけないという
規定だとどうしようもありませんが……

I.Tak. <g240845 !Atmark! mail.ecc.u-tokyo.ac.jp>
http://user.ecc.u-tokyo.ac.jp/~g240845/

ML番号でジャンプ
ML単語検索