bytegroesse, was endianess/Re: audio-cd

From: Michael Haertl <michael.haertl(at)gmx.net>
Date: Thu, 21 Mar 2002 20:23:58 +0100

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 ? Ich kenne eher
den Weg der "Verschwendung", d.h. z.B. sizeof(char) ==
sizeof(long). Fuer den Standardfall (z.B. logische Variablen,
"kleine" Schleifenzaehler) ist dann eigentlich kein Workaround
notwendig.

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).

Ferner wundert es mich schon, dass ein Alpha ein 64bit-
Register nicht in 8 atomaren Einheiten ansprechen kann. 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.

-- 
/* Michael Haertl */
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 - 20:26:55 CET

search this site