c ++: asm liste clobber
-
28-09-2019 - |
Question
En g ++, listes clobber pour asm peuvent être spécifiées, par exemple:
asm ("somecode" : : "r1", "r2", "r3");
ce qui signifie que le code assembleur modifie des registres R1, R2, r3.
Maintenant, mes registres modifiés dépendent d'un paramètre de modèle n
(le bloc asm
est à l'intérieur d'une fonction de modèle), et enregistre r1, ..., rn sera changé. Comment puis-je exprimer cela?
La solution
Combien de différentes constellations registre vous confronté à? Sinon trop, vous pouvez fournir une implémentation spécifique pour chacun. ( Domaine Template )
Parce que, je crains qu'il n'y a pas possibilité de créer des « énoncés templated ».
Autres conseils
Vous pouvez définir tout le registre que vous pouvez utiliser dans la liste des nippes, de sorte que le compilateur ne les utilise pas pour stocker la valeur d'une variable; Je sais que cela est un peu plus lent, mais si vous n'avez pas besoin d'une optimisation très très élevé, il fonctionnera.