x86_64総合at LINUXx86_64総合 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト300:login:Penguin 07/10/15 06:16:34 D5mY5mMR >>299 -m32か-m64の指定がないからとか? 301:login:Penguin 07/12/08 01:46:07 BpRfKoKi GCC のインラインアセンブリで RDTSC 命令を使いたい #define RDTSC(X) __asm__ __volatile__ ("rdtsc" : "=A" (X)) と書いたんだけど =A という Constraints は x86 だと edx:eax だけど amd64 では rax と扱われてしまうらしい でも RDTSC 命令の仕様自体は x86 でも amd64 でも edx:eax に返るみたいなので rax を使うと下位 32 bit しか返らない amd64 環境でうまくやるにはどうすればいいんだろう? 302:login:Penguin 07/12/08 02:41:13 h7XHftA2 >>301 こんなんでどう? #define RDTSC(X) ({ \ unsigned int edx, eax; \ __asm__ __volatile__ ("rdtsc" : "=a"(eax), "=d"(edx)); \ X = (unsigned long) edx << 32 | eax; \ }) 303:login:Penguin 07/12/08 03:15:17 BpRfKoKi >>302 やはりそれが正攻法か 一時変数の unsigned int edx, eax; をなくそうとしたらどうなるかな? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch