リトルエンディアン

提供: MonoBook
ナビゲーションに移動 検索に移動

リトルエンディアン英語:little endian)とは、コンピューターメモリ上におけるデータの並び(バイトオーダー)の規約のひとつである。

概要[編集 | ソースを編集]

リトルエンディアンではデータを下位から上位に向けて格納する。 例えば0x12345678という数値は、8ビット区切りであれば「0x78,0x56,0x34,0x12」と格納され、16ビット区切りであれば「0x5678,0x1234」と格納される。

利点と欠点[編集 | ソースを編集]

リトルエンディアンの利点は、下位バイトのアドレスが固定されるためバイト単位でもワード単位でもアクセスが非常にシンプルにできる点である。 これは実際のデータはバイト単位でしか保持しないが、無駄にワード単位で確保されているメモリに対して、バイト単位でアクセスしても正常な値が取得できることを意味する。

また、データへのアクセスは「アドレス」と「データ長」だけでよく、複雑なアドレス計算を伴わないため、回路やアルゴリズムを非常にシンプルにできるため、無駄の節約による高速化や省電力化が見込める。1970年代に大流行したDEC VAXなど、半導体の性能が現在ほど高くなかった時代に少しでも回路を小さくしようと努力した結晶といえる。 なお、現在の巨大回路かつ超高速なCPUでは差がでるほどではない。

一方でリトルエンディアンの欠点は人間が視覚的に把握しづらいが挙げられる。 人間アセンブラには評判が悪く、一般的なプログラマからしてもデバッガメモリダンプを眺めても把握に時間を要する。 また、インターネットイントラネットの世界を征したTCP/IPビッグエンディアンに統一されているため無駄な変換が発生し、それが原因で低速化することもある。 なお、最近のLANカードなどでは専用ハードウェアでバイトオーダーの変換を行うので速度的にはそんなに差が出ることはない。

総合すると現在ではリトルエンディアンビッグエンディアンも差はない。 その違いは宗教上の理由であるといえる。 不毛な争いをやめさせるため、ARMではリトルエンディアンビッグエンディアンを切り替えられるバイエンディアンを採用した。

採用事例[編集 | ソースを編集]

関連項目[編集 | ソースを編集]