Powered By Blogger

2013年2月16日土曜日

ビッグエンディアン、リトルエンディアン

http://www.uquest.co.jp/embedded/learning/lecture08.html

当社のミドルウェアの場合は、コンパイル時にオプション指定することにより、ソースコードを変更することなくビッグエンディアン、リトルエンディアンどちらにでも対応できるようになっているんだ。

、、、でも、、、、

コンパイル時のオプションというのはソースコードをオプション指定で切り替えているのだから、ソースコードの変更と同等ではないのか。オプション指定を間違うと動かないということだろう。実行時に自動判定してくれるのなら変更することなくという宣伝も納得できるのだが。

=========================

ところで、このビッグエンディアン、リトルエンディアンだが、私はいつまでたってもどっちがどっちか覚えられないので、ちょっと調べてみた。86がリトルエンディアンというように覚えているので、86がビッグエンディアンと言われると、、、そうだっけとなってしまう。

ビッグエンディアンが大きい桁から格納すると言う意味、リトルエンディアンが小さい桁から格納するという意味らしい。なんのこっちゃ。格納がエンディアンの意味を持っていないそうで、どうやって覚えるんだよ、この言葉。一体誰がこんなことを言い出したんだろう。こんなに覚えにくいことを考えた人はアホだな。

ガリバー旅行記の「こびと(仮名漢字変換しない:小人)」の国のエピソードで、卵の大きい側(BigEnd)、小さい側(LittleEnd)のどちらから食べる(格納するに転意)かという意味らしい。どっちだっていいじゃんと思うだが、作り話の中なので、我慢しよう。数値の大きい側って、桁の高い方ってこと。小さい側って桁の低い方なんだろうけど、低い方っていってもバイトオーダーだから、ビットが逆順になるわけじゃないんだ。ここが想像しにくいところだよね。んー、仕方ないから勝手な想像をしよう。
1バイトが一口だと考えれば、一口で食べる(1バイトの)場合はBigもLittleも関係ない。2バイトが0x1234ならBigの場合は0x12、0x34の順で食べる。littleの場合は0x34、0x12の順で食べるということなのか。4バイトが0x12345678なら、Bigの場合は、0x12,0x34,0x56,0x78で、littleの場合は0x78,0x56,0x34,0x12ということか。

ここまで考えたら少しは納得できたけど。んー、もう少しセンスのある分かりやすい名前に出来なかったのか。この名前を流行らせた奴も悪い。それを使っている日本もおかしい。日本語に直せ。例えば、Bigはモトローラ型とLittleはインテル型でいいじゃん。メーカー名そのもので十分だと思う。分かりやすい。

0 件のコメント:

コメントを投稿