x86_64総合 ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
304:login:Penguin 07/12/08 03:23:17 BpRfKoKi ・"=a"(eax), "=d"(edx) の代わりに "=a"(((unsigned long *)&X)[0]), "=d"(((unsigned long *)&X)[1]) とする ・__asm__ __volatile__ ("rdtsc" : "=A" (X)) はそのまま残しつつ shll $32, %rdx orl %eax, %edx movl %rdx, %rax を後ろに付ける とかはどうだろ? 305:login:Penguin 07/12/08 03:25:01 BpRfKoKi 間違えた ・__asm__ __volatile__ ("rdtsc" : "=A" (X)) はそのまま残しつつ shll $32, %rdx movl %eax, %edx movq %rdx, %rax を後ろに付ける 306:302 07/12/08 16:41:50 h7XHftA2 #define RDTSC(X) __asm__ __volatile__ ("rdtsc;movq %%rdx,%0;salq $32,%0;orq %%rax,%0" \ : "=r"(X) \ : \ : "%rax", "%rdx"); edx:eax -> rax を一発でコピーできる命令が欲しいな。 307:login:Penguin 07/12/08 17:30:08 BpRfKoKi >>306 ああなるほど 最初に rdx を対象レジスタに mov する方がいいですね ↓のように rax, rdx に直接手を加えていました __asm__ __volatile__ ( \ "rdtsc\n\t" \ "shlq $32, %%rdx\n\t" \ "orq %%rdx, %%rax\n\t" \ "movq %%rax, %0" : "=g" (X) : : "rax", "rdx"); > edx:eax -> rax を一発でコピーできる命令が欲しいな。 確かに まあ単純なレジスタ演算で済む限り速度はそれほど気にならないはずなので オペランド制約 "=A" が従来通り edx:eax だったらよかったんですけどね
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5158日前に更新/171 KB
担当:undef