[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[WitchTech 00244] Re: LSI-CforWitch の関数ポインタ
- Subject: [WitchTech 00244] Re: LSI-CforWitch の関数ポインタ
- From: narunaru@123mail.net
- Date: Tue, 8 Aug 2000 01:54:05 +0900 (JST)
なるなると申します。
> <20000807144001mnagaku@smtp.bekkoame.ne.jp>
> From: mnagaku@cap.bekkoame.ne.jp
> Date: Mon, 7 August 2000 14:40:01 +0900
> 関数自身はCSに置かれるとの解釈から
> 関数ポインタをfar宣言すると、暴走します。
> far宣言をしないと、短いコード(CS == DS == SS ?)は動作しますが、
> 長いコード(CS != DS != SS ?)になると暴走します。
どういう状況で関数ポインタを far ポインタ (or far 変数) にしたいのかわかり
ませんが、動かないほうのコードがないと follow がつけられないのではないでしょ
うか ?
# コードがないと far ポインタで near 関数を呼び出しているのではないかとか
いう話に ...
--
char (* far tmp_func)(int no); /* near ポインタ (far 変数) */
char (far * tmp_func2)(int no); /* far ポインタ (near 変数) */
char t1(int no);
char far t2(int no);
void foo(void)
{
tmp_func = t1;
tmp_func2 = t2;
tmp_func(1);
tmp_func2(1);
#if 0
tmp_func2 = t1; /* known problem (*) */
tmp_func2(2); /* near 関数を far call */
#endif
}
--
(*) for WonderWitch はわかりませんが、試食版の「4.3 バグ」
+ 関数へのnearポインタをfarポインタにキャストすると、CSレジスタのかわ
りにDSレジスタを使ってしまう場合があります。
# 製品版にも残っていたような ...
ML Archives