[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[WitchFan 00227] LSI-CforWitch の関数ポインタ
はじめまして長久@神楽坂酔っ払い研究所です。
x86(16bit)コードについては初心者同然です(^^;
今のトコ、LSI-Cを使ってるのですが、
関数ポインタが正しく動作せず困ってます。
関数自身はCSに置かれるとの解釈から
関数ポインタをfar宣言すると、暴走します。
far宣言をしないと、短いコード(CS == DS == SS ?)は動作しますが、
長いコード(CS != DS != SS ?)になると暴走します。
----------far宣言せず取り敢えず動くコード
#include <sys/bios.h>
#include <stdio.h>
char (*tmp_func)(int no);
char t1(int no);
char t2(int no);
void main() {
char str[32];
text_screen_init();
text_put_string(0, 0, "start");
tmp_func = t1;
sprintf(str, "%d", (*tmp_func)(1));
text_put_string(0, 1, str);
tmp_func = t2;
sprintf(str, "%d", (*tmp_func)(1));
text_put_string(0, 2, str);
while(1)
if(key_press_check() == KEY_START)
break;
}
char t1(int no) {
return no + 1;
}
char t2(int no) {
return no + 2;
}
----------
心得違いや注意点などありましたらご教授頂けると幸いです。
それとも、LSI-Cで関数ポインタ使うなと言う事なんでしょうか?
神楽坂酔っ払い研究所所長
長久 勝(ながく まさる)
mailto:mnagaku@cap.bekkoame.ne.jp
http://www.bekkoame.ne.jp/~mnagaku/
ML Archives