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

From: Christian Weisgerber <naddy(at)mips.inka.de>
Date: Fri, 22 Mar 2002 01:59:21 +0000 (UTC)

Oliver Fromme <de-bsd-questions(at)DE.FreeBSD.ORG> wrote:

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

Es gibt Signalprozessoren, die nur eine Verarbeitungsbreite kennen
und auch den Speicher in Wörtern adressieren. Ein C-Compiler für
sowas bildet alle Integer-Typen auf ein Wort ab. Du kannst insofern
beruhigt sein, dass solche Plattformen außerhalb des Unix-Horizonts
liegen.

> Ferner muß jeder Zugriff auch »aligned« sein, sonst gibt's
> einen Prozessor-Trap.

Das ist eigentlich normal. Auch bei i386 oder m68k (>= '020), die
sowas können, ist ein falsch ausgerichteter Zugriff *teuer*. Auf
»RISC«-Architekturen fliegt einem das gleich um die Ohren.

Genauer gesagt kann man bei Tru64 oder BSD auf Alpha angeben, was
bei einem falsch ausgerichteten Zugriff passieren soll:
- im Traphandler den Zugriff stückchenweise komplettieren oder dem
  Prozess ein SIGBUS schicken,
- eine entsprechende Meldung ausgeben oder nicht.

FreeBSD hat als Default die Software-Korrektur und die Ausgabe der
Fehlermeldung an. Da trifft man dann auch schon mal auf einen
Maintainer, der nicht einsieht, dass ein falsch ausgerichteter
Zugriff ein Fehler ist. »Es läuft doch.« Klar, der Zugriff dauert
auch nur zwei oder drei Größenordnungen länger als ein normales
Load/Store.

Linux handhabt das auch so, wobei die Fehlermeldungen auf der Konsole
statt dem Prozess-TTY landen, was dazu führt, dass sie erst recht
ignoriert werden.

OpenBSD schickt als Default ein SIGBUS. Mittlerweile finde ich das
gut so.

-- 
Christian "naddy" Weisgerber                          naddy(at)mips.inka.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 22 Mar 2002 - 03:31:45 CET

search this site