[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[OSASK 00038] Re: シグナルハンド ラへの分岐でバグ ?
- From: Hidemi KAWAI <kawai !Atmark! osask.jp>
- Date: Mon, 04 Sep 2006 13:56:30 +0900
- Cc:
- References: <20060903200141.11635.qmail !Atmark! s10.xrea.com>
こんにちは、川合です。
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/