C ++:ASM Clobberリスト
-
28-09-2019 - |
質問
G ++では、ASMのClobberリストを指定できます。たとえば、:
asm ("somecode" : : "r1", "r2", "r3");
つまり、ASMコードの変更はR1、R2、R3をレジスタします。
これで、変更されたレジスタはテンプレートパラメーターによって異なります n
( asm
ブロックはテンプレート関数内にあります)、R1、...、RNをレジスタします。どうすればそれを表現できますか?
解決
あなたはいくつの異なる登録星座に直面していますか?多すぎない場合は、それぞれに特定の実装を提供できます。 (テンプレートの専門化)
なぜなら、私は「テンプレートされたステートメント」を作成する可能性がないことを理解しているからです。
他のヒント
Clobberリストで使用できるすべてのレジスタを設定できます。これにより、コンパイラは変数の値を保存するためにそれらを使用しません。これは少し遅いことを知っていますが、非常に高い最適化を必要としない場合、それは機能します。
所属していません StackOverflow