[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[OSASK 00038] Re: シグナルハンド ラへの分岐でバグ ?


  こんにちは、川合です。


FORM-Akkie さんは 2006/09/04 05:01:41 の「[OSASK 00037] Re: シグ
ナルハンドラへの分岐でバグ ?」で書きました:

>お名前: nika
>
>おはようございます、nikaです。
>
>素早いお返事、ありがとうございます。
>[OSASK 00036]へのレスです。
>
>一応[OSASK 3649]も読んでみました。
>>・ラージモデル
>>
>>  OSASKはミディアムだけではなく、ラージモデルもサポートしていま
>>す。つまりデータセグメントは何も一つでなければいけないということ
>>     (中略)
>>  DLLがアプリにメモリをもらったりmmareaをもらうということを嫌う
>>なら、この方法でmmareaの外で勝手にやることもできます。
>と
>>      つまり[OSASK 3649]の用語で言うのなら、フラットモデ
>>ルとミディアムモデルはできるけど、ラージモデルはできない、という
>>ことです。
>
>矛盾しているように見えますが、つまりこれは今はまだ未実装というこ
>となのでしょうか?

  未実装といえばそのとおりなのですが、データセグメントが1つしか
ないというのは、「ぐいぐい00」の仕様でもあるのです(だからテキス
トボックスやグラフィックボックスの指定などに際して、セグメントを
指定しない)。「ぐいぐい01」以降ではこの限りではありません。

>>  ええと、DLLで使っていいのはCSの書き換えだけで、「ぐいぐい00」
>>仕様ではDS、ES、FS、SSの値の変更を許容しないとどこかに書いてあっ
>>たと思います。
>
>DLL の実行にデータセグメントを作らないで、呼び出し元アプリで確保
>したデータバッファのアドレスを毎回渡さなければならないというのが
>強要されるということでしょうか。

  メモリでデータを持たなければいけないのなら、そのとおり、強要さ
れることになります。

>その場合、マッピング元の場所を書き換えてデータバッファ等の情報を
>渡すことは良いのでしょうか。

  質問の意味がはっきりとはしないのですが、それはDLLを書き換えてい
いのかということですか?書き換えてはいけないとまでは言いませんが、
OSASKのファイルシステム上、DLLを書き換えればDLLのファイルそのもの
も同時に更新されるため、他のアプリがそのDLLを使用していればそれら
は暴走するかもしれません。したがっておすすめしがたいです。

  ちなみに僕は先のメールで書き忘れましたが、GSも値の変更をしては
いけません。

>テストプログラムではDSじゃなくESを使うようにしたらとりあえず落ち
>なかったのですが、こういう風にするのも仕様上良くないということで
>しょうか(これを実用してもいいのでしょうか)。

  仕様上は非常によくないです。しかし絶対にやってはいけないという
わけではありません。おそらく将来のバージョンでは、LDTにデータ属
性のセグメントをセットしようとしただけでエラー終了になるでしょう
。しかしそれを承知で特定のバージョンでのみ動作するアプリとして開
発するのなら、それはそれでかまいません(その場合、そのせいで起き
る問題については僕からのサポートはありません)。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! osask.jp
Homepage http://osask.jp/

一覧(今月):     投稿順     スレッド順