2009-12-14 1 views
6

This article Ansprüche, die jedes Register einen beabsichtigten Zweck hat und was noch wichtiger ist,Erhöht die Verwendung eines Intel-Registers für seinen "Verwendungszweck" die Effizienz?

Wenn die Ingenieure bei Intel das Original 8086 entworfen Prozessor, hatten sie einen besonderen Zweck im Auge für jedes Register. Als sie den Befehlssatz entwarfen, erstellten sie viele Optimierungen und spezielle Anweisungen basierend auf der Funktion, die sie erwarteten jedes Register zu erfüllen. Mit Register nach Intels ursprünglichen Plan ermöglicht der Code vollen Vorteil dieser Optimierungen. Leider scheint dies eine verlorene Kunst zu sein. Nur wenige Programmierer wissen von Intels Gesamtdesign, und die meisten Compiler sind auch die einfache oder konzentrierte sich auf Ausführungsgeschwindigkeit, um die Register richtig zu verwenden. Verstehen, wie die Register und Befehlssatz passen zusammen ist jedoch ein wichtiger Schritt auf der Straße zu mühelosen Größencodierung.

Gibt es weitere Quellen, die diesen Artikel bestätigen? Wenn ja, würde ich es gerne überprüfen.

Bitte beachten Sie, ich bin nicht über Situationen, in denen schnelle Operationen wie STOSedi verwendet - ich frage mich nur, ob es eine Leistungsverschlechterung ist, wenn ich eax und esi als Zähler anstelle von ecx oder ist es nur etwa Lesbarkeit?

Antwort

4

Nein, nicht mehr wirklich - oder zumindest nicht sehr oft. Wenn Sie ECX als Zähler verwenden, können Sie die LOOP-Anweisung verwenden. Zu einer Zeit war das ein signifikanter Vorteil, aber bei den neuesten CPUs dauert ein LOOP länger als die Kombination von DEC ECX/JNZ, wo auch immer. Der mögliche Vorteil besteht darin, dass die Speicherbandbreitennutzung verringert wird, was immer öfter zu einem Flaschenhals wird. Es kann auch ein Vorteil sein, wenn Sie andere Formen wie LOOPNZ verwenden können, die mit separaten Anweisungen relativ komplex zu simulieren sind.

5

Es gibt Anweisungen im Befehlssatz, die spezielle Register verwenden, die kleiner (und oft schneller) sind als die entsprechenden Funktionen, die auf ein beliebiges Register abzielen.

+2

Vor allem Referenzen zu AX vs. anderen. –

Verwandte Themen