C ++: lista clobber asm
-
28-09-2019 - |
Domanda
In g ++, liste di massacrare per ASM possono essere specificati, ad esempio:
asm ("somecode" : : "r1", "r2", "r3");
che significa che il codice asm cambia registri r1, r2, r3.
Ora, i miei registri modificati dipendono da un parametro di template n
(il blocco asm
si trova all'interno di una funzione template), e registra r1, ..., rn sarà cambiato. Come posso esprimere questo?
Soluzione
Come molti differenti costellazioni registro stai confronta con? Se non troppi, si potrebbe fornire un'implementazione specifica per ciascuno. ( modello di specializzazione )
Perché, io credo che non ci sia possibilità di creare "dichiarazioni su modelli".
Altri suggerimenti
È possibile impostare tutte le registro che si potrebbe usare nella lista clobber, in modo che il compilatore non li usa per memorizzare il valore di una variabile; So che questo è un po 'più lento, ma se non hai bisogno di un molto molto elevata ottimizzazione, funzionerà.