2008年3月4日火曜日

エンディアン

別名、「バイトオーダー」というらしい。



何者か?




端的に言うと、ビットの並び順が前からなのか。後ろからなのか。




というのを意味する用語。




ビッグエンディアンとリトルエンディアンがあるらしい。




そのどっちであるかが分からないと、データをどちらから読めばいいのかが判断できない。




故に、コンピュータシステム上かなり重要なファクターらしい。ふーん。




なんで、こういうことに興味持ったかと言うと、



今、MIPS版(CPUのアーキテクチャがMIPS)のLinux上で




JVMを動かして、その上でF-Orcを動作させようとしており、




で、MIPSっていうのが、ビッグエンディアンもリトルエンディアンも




サポートしてて、どっちのエンディアンでOSより上の層を組むかが




重要になってくる。




で、もちろんそれは、JVMの実装にも影響がある。




でまぁ、今回使用しているハード&Linux Debian OSはリトルエンディアンで



動いてることが分かり、それ用のJVMを使用して



無事F-Orcが動作した訳だが。




今回、色々調べていて、分かったことが、



へぇー、Windowsというかx86は、リトル。



PowerPCは、ビッグ。ネットワーク(TCP/IP)は、ビッグ。



って、決まってたんだね。



エンジニアとして、この辺りを知らなかったのは、失格か!?



と、自問自答しながら。。。



そういや、F-Orcの通信部分作るときも、ビッグエンディアンで




作ったなぁ。




その時は、これが当たり前だと思ってコーディングしてたが、なるほどぉ。




そういや、ちょっと前にMacがPowerPCからIntel x86系に乗り換えたと




大騒ぎしてたが、「ビッグエンディアンからリトルエンディアンへ」



という大きな変革が起こっていたのか。。。



なるほどぉ。




ずーっと、比較的上位層のソフトウェアばっかりいじってた者としては、勉強になります。




そういえば、何とかlittle indianっていう英語の童謡があったなぁ^_^;


one little, two little, three little indian
four little, five little, six little indian
seven little, eight little, nine little indian
ten little indian boys♪

3 件のコメント:

Solarisマニア さんのコメント...

Solarisのこの思想が優れているかどうかは
別として、ポリシーを感じる。

優れた設計− Solaris オペレーティング環境
Solarisはエンディアンニュートラルということで。

j-yamaguchi さんのコメント...

なるほど。
このドキュメントを見て、Sorarisを愛する人が多い理由の一端を見た感じです。
はまってしまいそうです。

kawa さんのコメント...

(多くの)PowerPCは、バイ・エンディアンですよ。Macは、その前に使っていた680x0がビック・エンディアンだったので、PowerPCでもビック・エンディアンで動かしていたわけです。

「エンディアン」の語源については、Wikipediaを参照してください。

ちなみに私は大昔、リトル・エンディアンとビック・エンディアンのMPUが混在した交換機のソフトを作っていたことがあります。MPU間の通信ではエンディアン変換が必須で、結構面倒でした。