Frage

In g ++, clobber Listen für asm angegeben werden können, zum Beispiel:

asm ("somecode" : : "r1", "r2", "r3");

Das bedeutet, dass der asm-Code ändert Register r1, r2, r3.

Nun, meine geänderten Register sind abhängig von einem Template-Parametern n (der asm Block innerhalb einer Template-Funktion) und Register r1, ..., rn geändert werden. Wie kann ich das ausdrücken?

War es hilfreich?

Lösung

Wie viele verschiedene Register Konstellationen mit denen Sie konfrontiert? Wenn nicht zu viele, könnten Sie eine spezielle Implementierung für jeden bieten. ( Vorlage Spezialisierung )

Weil ich begreifen, dass es keine Möglichkeit gibt „Templat Aussagen“ zu erstellen.

Andere Tipps

Sie können einstellen, alle Register, dass Sie in der clobber Liste verwenden könnte, so dass der Compiler sie nicht verwenden, um den Wert einer Variablen zu speichern; Ich weiß, das ein wenig langsamer ist, aber wenn Sie nicht über eine sehr sehr hohe Optimierung benötigen, wird es funktionieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top