Home > CPU実験 > CPU実験(3)

CPU実験(3)



ushさんの尽力により、処理だけは最後までは走ったらしい(base.sld on simulator)。でも真っ黒。

しかしC言語でfloatと書いても実はdoubleで扱われることがあるのはどうしたものか。printfをはさむとfloatとして扱われるようになるという謎現象も確認。まぁ普通は単精度なんて使わんからねぇ。ビットを変えずに uint -> float に変換する部分がこんな感じになっている。


float gf;
float *gfp;
float uint2float(unsigned int i)
{
cerr << "uint2float: " << i << endl;
unsigned int *ip = &i;
gfp = (float*)ip;
gf = (*gfp);
return gf;
}

cerrを抜くと結果が変わってくる。ちょっとgccの挙動を調べた方がいいな。
ちなみにppm形式はWindowsだとIrfanViewで見れるみたい > IS2006er
HWの方はnaokiさんによりUSBが完動(負荷テストクリア)、yamaさんによりSRAMが動作(本格的な負荷テストはまだ)するようになったらしい。すばらしー。いい感じ。

Similar Posts:

Comments:1

け (is2005) 06-10-20 (Fri) 12:13

浮動小数点数の計算について、レジスタ上では 80 ビットで計算して、メモリに突っ込むときに 32/64 ビットに切り詰めるという Intel 系プロセッサの罠ではないかと思います。前後のプログラムやコンパイラの最適化の具合で、レジスタ上でどれだけ計算をやりくりするかか変わるので、結果が変わってしまうのです
試してませんが、 volatile とか付けるとどうでしょうね

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://kzk9.net/blog/2006/10/cpu3.html/trackback
Listed below are links to weblogs that reference
CPU実験(3) from moratorium

Home > CPU実験 > CPU実験(3)

お薦め本
広告
Archives
Categories

Return to page top