【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

pushf/popf

VC++でビルドしたバイナリをMINIXで動かしていて、strchr()で落ちることに気付きました。strchr()は組み込み関数として特別扱いされているため、C言語で記述してもVC++が受け付けてくれません。オプションで組み込み関数を無効にしてもダメです(VC++2005まではできていたらしいです)。ACK(MINIXコンパイラ)用のアセンブリを手動でMASMに変換して使用していました。

よく見ると32bitコードなのにpushf/popfを使用しています。ACKではサフィックスのルールがMASMとは異なっているようです。これらをpushfd/popfdにしたところ、問題なく動くようになりました。