Pregunta

En g ++, listas clobber para asm se pueden especificar, por ejemplo:

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

lo que significa que el código asm cambia registros R1, R2, R3.

Ahora, mis registros modificados dependen de un parámetro de plantilla n (el bloque asm está dentro de una función de plantilla), y registros R1, ..., RN será cambiado. ¿Cómo puedo expresar eso?

¿Fue útil?

Solución

¿Cuántas diferentes constelaciones registro se le enfrenta con? Si no demasiados, podría proporcionar una implementación específica para cada uno. ( Plantilla de especialización )

Debido a que, me temo que no hay posibilidad de crear "declaraciones de plantilla".

Otros consejos

Se puede configurar todo el registro que se puede utilizar en la lista clobber, por lo que el compilador no los utilizan para almacenar el valor de una variable; Sé que esto es un poco más lento, pero si usted no necesita una muy alta optimización, que va a funcionar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top