• 締切済み

gccのインラインアセンブラ

コンパイラはgccで、コンパイルオプションでintel形式でコンパイルしています。 shl命令で左シフトしたいのですが、初期値0xfffffffなのに実行結果は0xffdf0000になってしまいます。 コード: asm(" shl %0, 4 " : "=r" (val)) #defineでマクロにしています(valは引数です)。 どうすれば結果が0xfffffff0になりますか。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

%0は出力でもあり入力でもあるので。 サイトの方はすいませんがわかりません。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

asm("shl %0,4": "=r"(val): "0"(val)) じゃないかなぁ。

cyo_k08
質問者

補足

ありがとうございます。うまくいきました。 しかしなぜマッチング制約を利用するのかわかりません。 できれば説明をお願いします。もしくはサイトだけでもお願いします。

関連するQ&A

専門家に質問してみよう