!浮動小数の扱い(Binary Hacks #98より) 研究室の後輩の浮動小数を扱うプログラムの挙動が gccの最適化オプション(-O)の有無で違うというので考えてみたら ぴたりBinary Hacks #98の通りで、 x86の浮動小数点レジスタの指数部が15bit固定であるのが 原因だった。 最適化オプションの有無によって 一度メモリに値を書くか書かないかの挙動が異なっていて、 これで結果の値も異なっていたよう。 ちなみに、BinaryHacksのpp.369のプログラム、 FreeBSD上で最適化オプションをつけずにコンパイルして実行するとx86でもinfになった。