2008年07月06日 (日)
カタン、Kanasan.JS サイ本読書会#5 に申し込んだ
懇親会共々に参加申し込み。7/19 は OSC Kansai、7/20 は Kanasan.JS ですね。ハードだ。
予備調査(SSE2) が進まないので、他の private なタスクが進まない。
カタンはうちの研究室の方々も乗り気だったので、21日あたりにどうでしょうか?(13日も可能です)平日夜が濃厚かも>Hiroshi。他にも参加できる人いるのかな?iwaiwa とかは忙しそうだしなぁ。
GCC はインラインアセンブラまで最適化して、それがバグの原因に!
なんか、ループをアセンブラで書いたら変な挙動で困っていたのですが、原因は GCC の最適化でした。ループ変数(レジスタ)の初期化がループ外に移動しているとは逆アセンブルしないと気づかないわ。そういう記述も呼んでいたけど予想外。
asm(""::"c"(0)); を asm("xorq %rcx, %rcx"); にしておくと大丈夫そう。
xorq というのは、quad word (4*16bit=64bit) の xor 演算で、%rcx というのは 64bit レジスタ。GCC のインラインアセンブラはなんか、
opcode src, dst
という書式なので、気持ちが悪い。
opcode dst, src
の方が自然だと思うんだけどなぁ。
Binary Hacks++
[]




つ asm volatile
情報ありがとうございます。volatile の存在は参考ページで知っていたのですが、そもそも asm 一つで、複数行の書き方がよく分からないんですよね。 <br>\n\t があればいいと言うことなのですが…。ちょっとあれこれ試してみます。