Re: bytegroesse, was endianess/Re: audio-cd

From: Oliver Fromme <olli(at)secnetix.de>
Date: Thu, 21 Mar 2002 23:22:02 +0100 (CET)

Michael Haertl <michael.haertl(at)gmx.net> wrote:
> Oliver Fromme wrote:
> > [...]
> > Hinzu kommt auch, daß es Plattformen gibt, wo es gar nicht
> > möglich ist, einzelne Bytes zu lesen, z.B. auf Alpha. Da
> > _kann_ der Prozessor nur ein ganzes Wort aus dem Speicher
> > lesen. Wenn ein Programm nur ein Byte braucht, muß es
> > durch Maskierungs- und/oder Verschiebeoperationen heraus-
> > gefiltert werden.
>
> Wird das bei z.B. FreeBSD-Alpha so gemacht ?

Muß ja, es geht nicht anders.

> Ich kenne eher
> den Weg der "Verschwendung", d.h. z.B. sizeof(char) ==
> sizeof(long).

Öhm, ich kenne keine Plattform, auf der das gelten würde.
Das hat auch mit o.g. Prozessorverhalten überhaupt nichts
zu tun. Auch auf FreeBSD-Alpha ist sizeof(char) == 1.
Byteweise Zugriffe werden vom Compiler transparent in ge-
eigneten Code umgesetzt, der einen Wortzugriff macht und
das das gewünschte Byte herausfieselt.

> Fuer den Standardfall (z.B. logische Variablen,
> "kleine" Schleifenzaehler) ist dann eigentlich kein Workaround
> notwendig.

Verstehe ich nicht, wozu ein Workaround?

> Um Speicher zu sparen, kann man sich natuerlich z.B. Octett-
> Felder (Byte-Arrays) halt selber in ein "Array of unsigned
> long" kopieren (und muss dann eben Maskieren und shiften).

Das kannst Du sowohl auf i386 als auch auf Alpha machen,
wenn es Dir Spaß macht ...

> Ferner wundert es mich schon, dass ein Alpha ein 64bit-
> Register nicht in 8 atomaren Einheiten ansprechen kann.

Hmm, ich weiß nicht, ob er das kann, so gut kenne ich mich
mit Alpha-Assembler nun auch wieder nicht aus.

Der Punkt ist aber, daß Speicherzugriffe (auf's RAM) nur
Wortweise erfolgen können (32 und 64 Bit), nicht Byteweise.
Ferner muß jeder Zugriff auch »aligned« sein, sonst gibt's
einen Prozessor-Trap.

> Dass
> auf dem externen Buss nur noch Woerter (und meist nur noch in
> Bursts) transportiert werden ist ja aufgrund der Cache-
> Hierarchien und Zugriffszeiten kaum anders sinnvoll.

Stimmt. Da sieht man mal wieder, wie unsinnig die i386-
Architektur von intel ist ...

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"All that we see or seem is just a dream within a dream" (E. A. Poe)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Thu 21 Mar 2002 - 23:22:04 CET

search this site