2009-12-14 4 views
6

This article sostiene che ogni registro ha una destinazione d'uso e, soprattutto,L'utilizzo di un registro Intel per il suo "scopo previsto" aumenta l'efficienza?

Quando gli ingegneri Intel progettati il processore originale 8086, avevano uno scopo speciale in mente per ogni registro . Poiché hanno progettato il set di istruzioni , hanno creato molte ottimizzazioni e istruzioni speciali in base alla funzione che si aspettavano da ciascun registro da eseguire. L'utilizzo dei registri in base al piano originale di Intel consente al codice di sfruttare appieno le ottimizzazioni . Purtroppo, questo sembra essere un arte persa . Pochi programmatori sono a conoscenza del design complessivo di Intel e la maggior parte dei compilatori sono troppo semplicistici o focalizzati sulla velocità di esecuzione per utilizzare correttamente i registri . Comprendere come i registri e il set di istruzioni siano compatibili con insieme, tuttavia, è un importante passo sulla strada per la codifica delle dimensioni senza sforzo .

Esistono altre fonti per corroborare questo articolo? Se è così, mi piacerebbe davvero provarlo.

Si prega di notare che non sto parlando di situazioni in cui le operazioni veloci come STOS utilizza edi - Mi chiedo solo se non v'è alcun degrado delle prestazioni se uso eax e esi come contatori invece di ecx o è solo di leggibilità?

risposta

4

No, non più realmente - o almeno non molto spesso comunque. L'uso di ECX come contatore consente di utilizzare l'istruzione LOOP. Un tempo, questo era un vantaggio significativo, ma sulle CPU più recenti, un LOOP richiede più tempo rispetto alla combinazione di DEC ECX/JNZ ovunque. Il vantaggio possibile è che riduce l'utilizzo della larghezza di banda della memoria, che è un collo di bottiglia sempre più spesso. Può anche essere un vantaggio quando/se è possibile utilizzare altri moduli come LOOPNZ, che possono essere relativamente complessi da simulare con istruzioni separate.

5

Ci sono istruzioni nel set di istruzioni che utilizzano registri specifici, che sono più piccoli (e spesso più veloci) rispetto alle funzioni equivalenti che mirano a qualsiasi registro.

+2

In particolare i riferimenti a AX vs. others. –

Problemi correlati