Der Teil des Gehirns, der für Byte Order zuständig ist



  • 1.) Der union-Trick funktioniert auf allen mir bekannten Compilern/Architekturen (zugegeben, sind nicht viel). Vielleicht sollte der Standard diesbezueglich nachgeruestet werden.
    2.) Zeile 100-108 sieht auch gut aus. Man kann gern noch etwas make unsigned rumspielen.



  • knivil schrieb:

    1.) Der union-Trick funktioniert auf allen mir bekannten Compilern/Architekturen (zugegeben, sind nicht viel). Vielleicht sollte der Standard diesbezueglich nachgeruestet werden.

    Ohh, you think darkness is your ally. ~

    knivil schrieb:

    Man kann gern noch etwas make unsigned rumspielen.

    Das ist nicht "rumspielen", sondern es gibt dem Shift definiertes Verhalten.



  • TyRoXx schrieb:

    Das ist nicht "rumspielen", sondern es gibt dem Shift definiertes Verhalten.

    Genau das meine ich. Du gehst nicht auf das eigentliche Problem ein. Ich weiss das shift nur fuer unsigned definiert ist. Aber: Was ist an Zeile 100-108 jetzt schlecht, bis auf das unsigned oder Macros?



  • knivil schrieb:

    Was ist an Zeile 100-108 jetzt schlecht, bis auf das unsigned oder Macros?

    Zeile 100-108 von http://repo-genesis3.cbi.utsa.edu/crossref/ns-sli/usr/include/bits/byteswap.h.html:

    # define __bswap_constant_64(x) \
          ((((x) & 0xff00000000000000ull) >> 56)                                   \
           | (((x) & 0x00ff000000000000ull) >> 40)                                 \
           | (((x) & 0x0000ff0000000000ull) >> 24)                                 \
           | (((x) & 0x000000ff00000000ull) >> 8)                                  \
           | (((x) & 0x00000000ff000000ull) << 8)                                  \
           | (((x) & 0x0000000000ff0000ull) << 24)                                 \
           | (((x) & 0x000000000000ff00ull) << 40)                                 \
           | (((x) & 0x00000000000000ffull) << 56))
    

    Meinst du das ernst?



  • Oh, wir spielen uns also mit Pseudofragen zu, damit wir uns dann nachher gegenseitig auslachen koennen?


  • Mod

    Ich verstehe nicht, welches Problem in diesem Thread gelöst werden soll.



  • Portable performante Loesung fuer byteswap.



  • TyRoXx schrieb:

    Nein, dann würde das Template swap oder so im Namen haben. Es soll nur Zahlen kodieren (High Level) und die konkrete Implementation auf der Plattform interessiert nicht (Low Level). Auf einer Big-Endian-Plattform würde nicht einmal etwas vertauscht werden.

    Das heißt das einzige was du jetzt anders gemacht hast ist das swappen und das write in eine gemeinsame Funktion zu stecken? Oder wie? Scheint mir nicht besonders neu zu sein.. aber auch nicht besonders nützlich ohne dass man swap auch so in einer Funktion hat, denn man braucht so etwas eben nicht immer zusammen mit write.


Anmelden zum Antworten