07/12/08 17:36:06 BpRfKoKi
>>304
・"=a"(eax), "=d"(edx) の代わりに
"=a"(((unsigned long *)&X)[0]), "=d"(((unsigned long *)&X)[1])
とする
も試してみたけれど出力結果がおかしくなった
(Xeon だと連続して実行したときに RDTSC の値が戻ったことがあった
Athlon X2 だと常に 0 と表示された)
見た感じコンパイル結果のアセンブリは正しそうに見えるのに
何か値が未定義になる要素があるのだろうか?
#APP
cpuid
rdtsc
#NO_APP
movl %eax, -4(%rsp)
movl %edx, -8(%rsp)
movl $.LC0, %edi
movq -8(%rsp), %rsi
xorl %eax, %eax
popq %rbx
jmp printf