差分

ナビゲーションに移動 検索に移動

リトルエンディアン

3,012 バイト追加, 2018年2月21日 (水) 01:39
ページの作成:「'''リトルエンディアン'''(英語:little endian)とは、コンピューターメモリ上におけるデータの並び(バイトオ...」
'''リトルエンディアン'''([[英語]]:little endian)とは、[[コンピューター]]の[[メモリ]]上における[[データ]]の並び([[バイトオーダー]])の規約のひとつである。

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

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

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

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

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

== 採用事例 ==
* [[DEC VAX]]
* [[DEC Alpha]] - 後の[[AMD Athlon]]である。
* [[Intel x86]]
* [[NEC V810]] - [[バーチャルボーイ]]や[[PC-FX]]が積んでた[[CPU]]。最近でも[[BDドライブ]]などの制御用に搭載されていることが多い。

== 関連項目 ==
* [[リトルエンディアン]]
* [[ビッグエンディアン]]
* [[バイエンディアン]]
匿名利用者

案内メニュー