Desidero scrivere alcuni assembly ARM in linea nel mio codice C. Per questo codice, ho bisogno di usare un registro o due più di quelli dichiarati come input e output per la funzione. So come usare la lista dei clobber per dire a GCC che userò alcuni registri extra per eseguire il mio calcolo.Ottimizzazione dei registri utilizzati quando si utilizza l'assemblaggio ARM in linea in GCC
Tuttavia, sono sicuro che GCC gode della libertà di mescolare i registri utilizzati per l'ottimizzazione. Cioè, ho la sensazione che sia una cattiva idea usare un registro fisso per i miei calcoli.
Qual è il modo migliore per utilizzare un registro aggiuntivo che non è né input né output del mio assembly inline, senza utilizzare un registro fisso?
P.S. Stavo pensando che l'uso di una variabile di output fittizia potrebbe fare il trucco, ma non sono sicuro di quale tipo di strani effetti avranno ...
Scommetto che questo * è * possibile abbastanza direttamente, ma lascerò che un guru di C risponda a questo. :-) – Noldorin
So che puoi usare gli alias di registro e lasciare che il compilatore scelga i registri che vuole usare, ma non può ricordare la sintassi per quello. Oppure si potrebbe mordere il proiettile e basta scrivere un file .s e assemblarlo separatamente per una maggiore flessibilità. –
@ Michaelicorgan Grazie per l'input. So che i registri di input e output funzionano in questo modo, ma non l'ho visto utilizzato per i registri temporanei. La seconda soluzione fa il contrario di ciò di cui ho bisogno, rimuove ancora più opzioni di ottimizzazione (il designazione dei registri di input e output) ... – Madcowswe