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

[WitchTech 00249] Re: LSI-CforWitch の関数ポインタ



ども、長久です。
セグメント問題って、新たな都市伝説の匂いがするのは私だけですか(^^;

>sprintfをコールしている第一引数の変数strをグローバルもしくは
>static宣言にして試してみて下さい。

関数の引数にポインタ渡す時にも注意が必要って事ですね。

># コードがないと far ポインタで near 関数を
>呼び出しているのではないかとかいう話に ...

なるなる氏添付のサンプル(イメージ)ではコンパイルできますが
動作しないと思います。farポインタ宣言

>char (far * tmp_func2)(int no); /* far ポインタ (near 変数) */

が入ると暴走しませんか?
これは、

>北Cです。
>ためしに、far宣言したら確かに暴走しました。

でも確認されているようなのですが……

因みに、北C氏ご指摘の通り、実際に作成中のプログラムを見直したら
論理上のバグが含まれていました(T_T)
こいつが見つけられなくて、先に添付したサンプル作って
ドツボったんですね、私……

>まあ、far宣言しなければとりあえず動くのでそれで良しとしましょう(爆

そんな気分です(^^;
でも気持ち悪いです(T_T)
そもそも、LSI-C86forWitchって、
試食版同様smallモデルのコード吐くんですよね。
って事は、本当なら CS != DS == SS なところを、
実際のメモリモデルは CS != DS != SS なのでズレが生じていて、
その部分のカスタマイズがあまり上手くいっていないって事なんでしょうか?
この私の7年ぐらい前に脳内に構築された勝手な解釈に基づくと
tinyモデル時(CS == DS == SS)以外の関数ポインタはfarであるべきなんですが……
どうなんでしょう?識者の方々。

>#やっぱりアセンブラの知識って必要そうですね…

改めてx86のセグメントってC言語と相性悪いなあって感じます。
farとかnearってどう考えても苦肉の策だし……
ここのMLでは、経験者の方がゴリゴリやる話題が中心ですが、
私なりに本来Witchがあるべき姿を考えると、
普通にC言語知ってたら、それなりになんとかなる方向性も考えたいですね。
せっかく買ったのに、既に放り出しそうになってる人も多そうですし……
G○DKの方が閾値が低いに1票(^^;

神楽坂酔っ払い研究所所長
長久 勝(ながく まさる)
mailto:mnagaku@cap.bekkoame.ne.jp
http://www.bekkoame.ne.jp/~mnagaku/


ML Archives