«前の日記(2008年07月05日) 最新 次の日記(2008年07月07日)» 編集

ema log


2008年07月06日 [長年日記]

_ [最近]カタン、Kanasan.JS サイ本読書会#5 に申し込んだ

懇親会共々に参加申し込み。7/19 は OSC Kansai、7/20 は Kanasan.JS ですね。ハードだ。

予備調査(SSE2) が進まないので、他の private なタスクが進まない。

カタンはうちの研究室の方々も乗り気だったので、>Hiroshi。他にも参加できる人いるのかな?iwaiwa とかは忙しそうだしなぁ。

_ [Programming] 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++

本日のツッコミ(全2件) [ツッコミを入れる]
_ 通りすがり (2008年07月07日 11:03)

つ asm volatile

_ ema (2008年07月07日 14:32)

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