こんにちは、I.Tak.です。 From: Hidemi KAWAI <kawai !Atmark! imasy.org> Subject: [OSASK 6615] Re: p0cref.html Date: Tue, 28 Oct 2003 17:48:38 +0900 > > ……デバッグしたくなりました。デバッグしないと不便ですし。 > > 引用順序を変えてまでして最初に言いますが、僕としてはバグじゃな > いと思っているので、デバッグとは言えない気がします。 むしろ初期化以外の一般コマンドに繋がってしまうのが不備だという ことですか。 > > ところで, 特別コマンド関係で考えられる組合わせは > > 初期化前: > > 1. 特別コマンド + 特別終了 > > 2. 特別コマンド + 初期化コマンド + 一般コマンド > > 初期化後: > > 3. 特別コマンド + 特別終了 > > 4. 特別コマンド + 一般コマンド > > 5. 一般コマンド + 特別コマンド + 特別終了 > > 6. 一般コマンド + 特別コマンド + 一般コマンド > >このように6通りありますが, 今回のルールでは1と3しか許さないという > >ことでいいのでしょうか。 > > いや、これは失礼しました。僕の表現では確かにそう読めます。 > > 1と3の他に、2も認めます。 これは助かります。実際かなり便利ですので。 > 今だと、5のパターンは正常動作しないと思います。 softintの説明を読んで納得しました。 > special2の部分は、nextcmdに分岐するのではなく、ワークエリア初 > 期化として認識するように改訂しようと思います(これは急にやるとよ > くないともう少し先のバージョンでやります)。 初期化コマンドにしか繋がらないようにすれば, 互換性を保ったまま 改訂できるませんか? で, 初期化コマンドへの分岐はプロローグルーチン とspecial2:からしかできないようにして, nextcmd:から初期化コマンド へいこうとするとエラーになるようにすれば 初期化/特別コマンドで開始 → かならず特別終了か初期化 一般コマンドで開始 → 初期化/特別コマンド不可 となります。 > これも賛成ではありません。今のアルゴリズムだと、プロローグとエ > ピローグのaddnestコマンドは、ワークエリア内にあることになってい > ます。これのおかげで、スタックへのPUSHを減らしているわけです。 > I.Tak.さんの方法にするとなると、プロローグルーチンではワークエリ > アの中に何が書いてあるか分からないときがあるので、PUSHして呼び出 > す方法に変えなければいけません。これだとcmd0004かどうかの判定を > なくす以上に、速度が落ちそうな気がします。 API呼び出しのコストで数クロックを議論するのは意味があるのかと思い ますが, 一応。PUSHはペアリング可能ですが, レジスタに代入したポインタ を使って値を書き込むのは, 存関係のためペアリング不可です。スタックは callとretでキャッシュ済みです。たぶん全体の速さは変わりません。 むしろPUSHだとでかくなるのが問題でした (←昨日やってみた^_^;)。 I.Tak. <g240845 !Atmark! mail.ecc.u-tokyo.ac.jp> http://user.ecc.u-tokyo.ac.jp/~g240845/