24. November 2012 03:41

Re: mögl. Szenario in Zukunft: Vollständiger Verzicht von 32bit

DerKaiser schrieb am 23. November 2012 17:18

> Inwiefern verringert sich die Komplexität, wenn ich für 64 Bit -
> Plattformen kompilieren?

Der x64-Befehlssatz ist um einige Altlasten von x86 befreit (z. B.
Befehle für BCD-Arithmetik).

Auch stehen 8 zusätzliche General Purpose Register (r8-r15) zur
Verfügung, was es für Compiler einfacher macht, guten Code zu
erzeugen. Analog gibt es auch 8 zusätzliche SSE- (xmm8-xmm15) und
AVX-Register (ymm8-ymm15)

Des Weiteren wurde, wenn man die REX-Präfixe benutzt (für Verwendung
der Register r8-r15 obligatorisch) die 8-Bit-Register vereinfacht: zu
jedem der Register r8-r15 gibt es für die 8-Bit-Version (r8b-r15b)
einfach die untersten 8 Bits - keine Unterscheidung nach (al/ah,
cl/ch, dl/dh, bl/bh), dafür im Gegenzug die Möglichkeit (die 3
Registerbits wurden mit REX-Präfix umdefiniert), auch die untersten 8
Bits der Register rsp, rbp, esi, edi (spl, bpl, sil, dil) zu nutzen.
Das ist einfach logischer als das inkonsistente Schema unter x86.

Außerdem haben viele 32-Bit-Befehle in x64 die Eigenschaft, die
zugehörigen "oberen" 32 Bit des entsprechenden 64-Bit-Registers auf 0
zu setzen. Das hatte mich anfangs auch verwirrt, aber die Erklärung
ist logisch: hierdurch wird ein Partial Register Stall, welcher unter
x86 bei 16-Bit-Registern ein Problem war (und auch unter x64 für
16-Bit-Register vorhanden ist), für die 32-Bit-Befehle vermieden (was
auch das Compiler-Design in dem Punkt leicht vereinfacht - auch wenn
ich eingestehen muss, dass man sich im Compiler-Design dennoch um das
Problem kümmern muss, weil es für 16-Bit-Befehle unter x64 weiterhin
da ist).

Weiterhin gibt es unter Windows auf x64 nur noch eine Call Convention
statt der zahlreichen Call Conventions unter 32-Bit-Windows - viel
einfacher.

Das ist so das, was mir zu dem Thema spontan einfällt.

Anzeige

heise online Themen