assembler ARM con e senza l'ottimizzazione

M

Mahenrev

Guest
Ho bisogno di aiuto con alcune domande.

1] Se l'uscita del gruppo è ottimizzato con-O3 [ottimizzazione pesanti], perché tutte le variabili tenute nel registro?

2] Che dire, abbiamo programmato con una quantità maggiore di variabili, diciamo 30 variabili,
- Quando non ottimizzato, il suo archiviati nella memoria
- Quando ottimizzata, la sua memorizzate nel registro

Quando si conosce il registro è pieno?Perché è anche 1 variabile in memoria?

Grazie è anticipato

 
Mantenere le variabili nei registri assicura che l'esecuzione del programma è il più velocemente possibile, perché nessuna ulteriore legge da (più lenta) di cache / memoria devono essere fatte.

Ma io non vedo proprio come si può avere 30 variabili nei registri di tutti i tempi?
Per quanto ne so la progettazione ARM9 standard ha ottenuto 16 registri, e pochi di questi sono di solito usati e non realmente disponibili.

Se si dispone di più variabili poi registri gratuitamente, vi ritroverete con cache legge / scrive (o nel peggiore dei casi, la memoria si legge / scrive), che sarà notevole rallentare l'esecuzione del programma.È per questo che tutti cercano di utilizzare il minor numero di variabili possibile in cicli interni che vengono eseguite più volte al sec.

Un altro approccio è quello di pack variabili 2/more in un unico registro.
Come se si dispone di 2 16bit variabili, si può mettere in un unico registro a 32 bit (16 bit inferiore = prima variabile, superiore a 16 bit = seconda variabile) - ora è possibile ottenere una di quelle variabili con solo 1 o 2 turni.Con core ARM operazioni di spostamento sono liberi ...

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Sorriso" border="0" />
 
Sarà l'assembler cercare di ottimizzare il codice per "imballaggi" variabili nei registri?

 

Welcome to EDABoard.com

Sponsor

Back
Top