eax register 32 frage dazu?
-
Hallo,
eax ist ja ein 32 bit register. kann ich aber dort auch 8 bit bzw 16 it werte reinscheiben oder sind nur 32 bit werte erlaubt.?gruß peer
-
eax = 32 Bit
ax = 16 Bit
ah = 8 Bit
al = 8 Bit
-
hallo, ja das war mit klar aber wie ist das bei einem short 16 bit schieb ich das dann in ax .
ich kann ja ein 16 bit wert auf einen 32 bit wert erweitern .meine frage war nur kann ich in eax nur 32 bit werte speichern oder auch 16 oder 8 bit werte?
danke peer
-
cwdeErweitert das AX-Register vorzeichengerecht von AX nach EAX
cbwErweitert das AL-Register vorzeichengerecht von AL nach AH (AX)
mfg
-
FAQ... schauen: EAX ... AX
Zum Aufblaehen von Zahlen gibt es noch
movzx (unsigned)
movsx (signed)
-
Laut Agner Fog auf http://www.agner.org/optimize/, (weiß jetzt nicht, in welchem Doku), sind Zugriffe auf Teile von 32-Bit Registern hinsichtlich der Geschwindigkeitsoptimierung zu vermeiden, warum auch immer... Beim Flag-Register sei es angeblich auch so.
So soll z.B.:addl $1, %eaxbesser sein, als
incl %eaxweil der Befehl inc im Gegensatz zu add nur ein Teil des Flag-Registers verändert. Ob das wohl stimmt...
-
dafür ist addl aber auch in 6byte kodiert und incl nur in 2 iirc. Insofern denke ich dass incl schneller ist.