Re: Typen - Berechnung
- From: Johann Obermayr <Johann.Obermayr@xxxxxxxxxxx>
- Date: Thu, 06 Sep 2007 12:27:19 +0200
Martin Richter [MVP] schrieb:
Hallo Martin!Aber es ist ein unterschied, wenn ich
Doku wüßte ich jetzt nicht. Aber es macht keinen Sinn, einen x86 Prozessor im 32Bit Protected Mode alte 16 Bit Befehle ausführen zu lassen. Diese erhalten dann nämlich einen Prefix und sind meines Wissens auch langsamer als ihr 32 Bit Equivalent.
ACK! Eine Shift Operation, die nur die unteren 16bit benutzt (shl ax) ist um einiges langsamer als der shift auf eax!
Zudem wird ja auch nur ein Wort geladen.
Interessant ist, dass in diesem Fall sogar die oberen 16bits returniert werden, die beim Shift entstehen. Theoretisch ja ein Wert, der ignoriert wird.
Die aufrufende Funktion sorgt dafür, dass wirklich nur die unteren 16bit verwendet werden.
unsigned short x = 0x8000;
unsigned long y;
y = x << 1;
Was sollte hier herauskommen.
Es kommt natürlich 0x00010000 heraus, aber warum ?
Als erstes müsste er doch
x << 1 machen. Da x nur 16 Bit ist sollte das ergebnis auch 16 Bit sein.
= 0x0000;
Dann 16Bit nach 32 Bit. 0x0000 -> 0x00000000
Wieso wird x zuerst nach 32 Bit gewandelt. Da weicht meiner Meinung
vom Programmcode ab.
Danke
Jimmy
.
- References:
- Typen - Berechnung
- From: Johann Obermayr
- Re: Typen - Berechnung
- From: Martin Horst
- Re: Typen - Berechnung
- From: Martin Richter [MVP]
- Typen - Berechnung
- Prev by Date: Re: Typen - Berechnung
- Next by Date: Re: Deaktivieren von Netzwerkschnittstellen
- Previous by thread: Re: Typen - Berechnung
- Next by thread: Re: Typen - Berechnung
- Index(es):
Relevant Pages
|