_ [comp] asm とか c++ とか

__asm__("test %%eax, %%eax" : "=eax"(r));

しょうがないんで直してみる。constraint がおかしいって言われたんで、まず constraint って何だ?ってところを調べるところから。constraint とは制限子ってやつらしい。で、いろいろ調べてみると、GCCでインラインアセンブリを使用する方法と留意点等 for x86 というページを発見。 ここを見て、カンで次のようにしてみる。

__asm__("test %%eax, %%eax" : "=a"(r));

通ったじゃん。きちんと動作するじゃん。なんというか、狂喜乱舞。