4. März 2012 18:48

Re: Das wars dann wohl mit "Power". Back to CISC.

noVum schrieb am 4. März 2012 16:44

> Acht sind gar nicht so wenig, wenn man von Hand Assembler schreibt.
> Die ganzen virtuellen Abhängigkeiten zwischen Registern werden
> sowieso durch Register Renaming aufgefangen.

Wenn man von Hand schreibt, kommt das mentale Limit mit den 7 Dingen
ins Spiel. Deshalb reichen 7 Register und der unvermeidliche Stack
Pointer aus (macht zusammen 8).

> Die Compiler kommen aber mit 16 etwas besser zurecht, weil Register
> Coloring nicht gerade einfach ist und damit Speicherzugriffe
> vermieden werden.

Die Compiler haben auch Probleme damit, dass die meisten Register
noch Sonderaufgaben haben: ESI/EDI/ECX für String-Befehle, EAX:EDX
für die Multiplikation und Division, ECX auch noch für Shift, ESP und
EBP als Stack- und Frame-Pointer, und was bleibt da noch übrig? EBX.
Und würde der Compiler xlat verwenden, dann hätte auch das noch eine
Sonderfunktion.

Dank x64 haben die Compiler jetzt 8 Register, die überhaupt keine
Sonderaufgaben haben, und deshalb beliebig belegt werden können.

Anzeige

heise online Themen