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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top