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

[WitchTech 00035] BIOS_INLINE の罠



 川俣です。
 今日のはまりです。

#define BIOS_INLINE
#include <sys/bios.h>
(中略)

void centeredText( int y, char * msg )
{
	text_put_string((DISP_AREA_X-strlen(msg))/2, y, msg);
}
(中略)

 というソースは動かないようだぞ^^;
 処理系のバグかと疑ってしまいました。
 Turbo-Cで吐き出したアセンブラソースとマクロを見比べて、やっと原因が分
かりました。
 マクロの引数に複雑な式を書くと、手前で設定したレジスタを書き潰しちゃう
んですね。だから、引数は定数かシンプルな変数だけにしておかないと。

 それから、Turbo-Cユーザーは、-wを付けよう。
 昔は必ず-wを付けていたんで、Warningが出なければ、単純なミスはチェック
済みと見なしてたんですが、それをすっかり忘れてました。やっと気付いて-w付
けたら出るわ出るわ^^;

 でもWonderWitchは面白すぎ。
 ついつい遊びすぎて夜更かししすぎたようで。
 はやく寝よう^^;

(株)ピーデー 川俣 晶 (http://www.autumn.org/ mailto:autumn@piedey.co.jp)



ML Archives