印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
misc Intel といえばリトルエンディアン

Intel の CPU といえばリトルエンディアン。エンディアンといえばインディアン。インディアンといえばインド人。それなのにアメリカにいたりする。

■ ■ ■

来年から Macintosh は Intel の CPU になるという(nlog(n): Intel を選択した Apple の今後の戦略を予想する)。私は今では喜んで Intel を使っているが,Intel CPU に関しては嬉しくない思い出もある。Intel が採用していたメモリのバイトオーダーがリトルエンディアンだったからである。もう1つは,メモリが 64 KB で分割されていたことがあると思ったのだが,これは勘違いだったらしい(Intel 8086はメモリが64Kバイト単位で分割され扱いにくかった というのはデマである)。しかしそう言われても,68000 はプレーンで広大なメモリ空間を持っていて,8086 よりも扱いやすかったと感じたのは何故だろうか。

200506/indian.gif
200506/indian.gif


さて,リトルエンディアンと言われると,思わず「インディアンが通る~アッホイアッホイアッホイホイ~」と歌ってしまう。「インディアン嘘つかない」のインディアンである(インディアンの画像は free native american indian clipart images より)。もちろん,インディアンとエンディアンは違うものである。それもこれもそもそもはコロンブスが悪い。インドに上陸したと思って,住んでいる人たちを「インディアン(インド人)」と呼んでみたら,実はアメリカ大陸だったという勘違い。そんなことがあったからインディアンはアメリカにもインドにもいることになってしまったのだ。勘違いと言えば Macintosh もそうである。Apple はリンゴだから,製品にリンゴの品種名をつけようと思って,「じゃあマッキントッシュにしよう」ということで Macintosh と名づけてしまった。しかし,リンゴの品種名は McIntosh だった。発音をたよりにつけてしまったのだ。Macintosh はリンゴの品種名ではない(マッキントッシュ - Wikipedia)。この世は勘違いで成り立っているのだ。

200506/endian.gif
200506/endian.gif


話は少し真面目なところへ戻って,コンピュータでのエンディアンの話。エンディアンにはビッグエンディアンとリトルエンディアンがある。多バイト長のデータをメモリ上でどう表現するかの違いである。例えば,16進で 0x1234 という2バイトのデータをメモリに格納するとしよう。ビッグエンディアンの CPU では,そのまま 0x1234 と格納されるのに対し,リトルエンディアンは 0x3412 と格納するのである。天邪鬼(アマノジャク)である。メモリ上の表現だけならいいのだが,ファイルに保存するときもこの順序は保たれたままになる。したがって,ビッグエンディアンとリトルエンディアンの2種類のコンピュータでデータを交換しようとすると,いちいち変更しなければならないのだ。面倒臭い。それだけならまだしも,同じソースコードでありながら,環境によって実行結果のファイルがまるで違うということが起こりうる(C 言語の場合)。

リトルエンディアンは Intel だけかと思ったら DEC 社の VAX もそうだったのね。とすると Unix とリトルエンディアンの関わりは案外深いのかも。ちなみに,ビッグエンディアンとリトルエンディアンのどちらでもOKなものは「バイエンディアン」と呼ばれる。バイセクシャルなんかと同じですな。

エンディアンについて調べていたら,ASCII24 - アスキー デジタル用語辞典 - エンディアン にエンディアンの由来が解説されているのを見つけた。

Endianという呼び方は、もともとはガリバー旅行記に出てくる、ゆで卵をどちらの端の方から最初に割るかという議論に由来している。物語中では、大きな方の端から割る人々はBig Endian、尖った方の端から割る人々はLittle Endianと呼ばれていた(-ianは「~な人々」を表す接尾辞)。これから転じて、MSB (most significant bit; 最上位ビット) が上位アドレスにあるのがBig Endian、LSB (least significant bit; 最下位ビット) が上位アドレスにあるのがLittle Endianと呼ばれるようになった。

200506/egg-end.gif
200506/egg-end.gif


こういうことか。この場合の卵はコロンブスの卵ではないのね(卵の画像は free Egg clipart pictures より)。

そうかそうか,ゴジラ松井とリトル松井みたいなものか(違うな)。

Posted by n at 2005-06-09 23:48 | Edit | Comments (2) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments

こういうネタ、好きです。これからもお願いします。
>ゴジラ松井とリトル松井みたいなものか(違うな)。
このつぶやきは、けっこう考えた(悩んだ?)のでは?

Posted by: calc at June 10, 2005 11:11

壊れぎみの記事に反応していただきありがとうございます。どうやってオチをつけようかと考えあぐねた挙句,リトル松井となりました。
そういえば,calc さんがコメントをつけてくれたのは,ちょうど一年前の6月10日の記事でしたね(リーマン予想)。
http://nlogn.ath.cx/archives/000192.html
今なら「サラリーマンの予想?」なんかで書き出すかも,と思いました。

Posted by: n at June 10, 2005 23:53
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?

Loading...