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?

È stato utile?

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à.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top