タグ

endianに関するnirvashのブックマーク (4)

  • 『ミドルエンディアン (PDPエンディアン,NUXI問題)』

    エンディアンというと,ほとんどの場合ビッグエンディアンとリトルエンディアンのどちらかだが,これら以外のエンディアンも存在する.(していた,というべきか?) バイト列 0x01,0x02,0x03,0x04 を4バイト整数として解釈する時に, 0x01020304 となるのがビッグエンディアン, 0x04030201 となるのがリトルエンディアンだが,これら以外に 0x03040102 や 0x02010403 となるものも存在する.以前から,これらを何エンディアンと呼ぶのか疑問に思っていた. Wikipedia の「エンディアン」の項目 によると,このようなエンディアンは DEC の PDP-11 や VAX シリーズで使われていたことから「PDP エンディアン」というらしい.エンディアンの異なるマシン間でバイナリデータを交換すると, "UNIX" という文字列が "NUXI" に化けたと

    nirvash
    nirvash 2008/02/12
    自分も Wikipedia の説明をみて疑問に思っていた口
  • http://ml.tietew.jp/cppll/cppll/article/12788

    nirvash
    nirvash 2008/02/12
    こんなのもあるのね
  • エンディアン変換/判別関数・マクロ集 (C/C++,(ほぼ?) 処理系・OS 非依存)

    気が向いたら書く. 特定のメモリアドレス範囲にマップされたデバイスのエンディアン判定. デバイス (アドレス) が異なればエンディアンも異なる可能性がある. (実際にそういうデバイスを使ったことがあるわけではなく, 可能性として考えてみているだけ.) レジスタ演算だけでエンディアン変換ができ,メモリアクセス不要. (バイト単位の) シフトが高速に行える CPU,あるいは (シフトに比べて) メモリアクセスが遅い CPU 向き. (バイト単位の) シフトが高速に行えない CPU では, 任意エンディアン変換はエンディアン反転以上に効率が悪い. データ長が長いと,それだけレジスタを多く使用する. ⇒ 同時進行中の,レジスタを使う別の処理の速度を低下させる場合がある. レジスタ長より長いデータは効率良く扱えない. 符号付整数型にトラップ表現が存在する処理系では, エンディアン変換の途中結果がトラ

    nirvash
    nirvash 2008/02/12
    便利だ。
  • LKML: Chris Wright: [patch 06/16] Fix matroxfb on big-endian hardware

    nirvash
    nirvash 2007/01/25
    here was too much/too few byteswapping done by driver and hardware in matroxfb on big endian hardware.
  • 1