linux-l: OT: Ungenauigkeiten
Thomas Knop
t.knop at isv-gmbh.de
Mo Aug 7 14:05:45 CEST 2000
On, Mon, 07 Aug 2000, Siegfried Pohl wrote:
....
> da
> der Hauptspeicher eines Computers immer in Byte gerechnet und auch auch
> in 1-Byte Schritten adressiert wird, gibt es jetzt zwei Moeglichkeiten.
Vorsicht, böser Irrtum!!!
So ein - ich möchte es in heutiger Zeit mal Quatsch nennen - erlaubt sich
nur Intel. Vernünftige System, wie z.B. Sun Sparc addressieren nur in
boundaries, dh. ein integer (4 bytes) kann niemals an einer nicht durch
4 teilbaren addresse liegen, ein float (8 bytes) auch nicht. Das kann jeder
ausprobieren:
#include <stdio.h>
int main(){
int i = 0x41414141; /* = 'AAAA' */
int *ip;
char *cp;
cp=(char *)&i; cp+=1; /* +=2, +=3 das gleiche */
ip=(int *)cp;
printf("%c\n",*ip);
}
Liefert auf Intel immer:
A
Auf Sun Sparc:
Bus Error (core dumped)
Dies ist einer der Gründe warum RISC Systeme so wesentlich effizienter
arbeiten. Intel Systeme müssen in so einem Fall immer 8 Bytes lesen, dann
irrsinnig komplizierte umrechnungen machen um dann erst endlose
taktzyklen später zum zuge kommen.
Beim Entwurf des Pentium 1 (!) hat Intel einen riesen Aufwand betrieben
um dieses Manko zu "tarnen". Tatsache ist aber, daß selbst in Zeiten des
Pentiom III immer noch so ein Quark existiert - und das nur damit auch DOS
3.0 noch läuft ;-)
Entschuldigung an alle, die mein Hardwaregelaber "ertragen" mussten
Gruß Thomas
--
Thomas Knop Tel: +49-30-53433408
ISV GmbH Berlin Fax: +49-30-53433435
Am Treptower Park 75 t.knop at isv-gmbh.de
12435 Berlin http://www.isv-gmbh.de
Mehr Informationen über die Mailingliste linux-l