ページ「ジム・ケラー」と「リトルエンディアン」の間の差分
imported>Administrator |
|||
1行目: | 1行目: | ||
− | ''' | + | '''リトルエンディアン'''([[英語]]: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ドライブ]]などの制御用に搭載されていることが多い。 | ||
+ | |||
+ | == 関連項目 == | ||
+ | * [[リトルエンディアン]] | ||
+ | * [[ビッグエンディアン]] | ||
+ | * [[バイエンディアン]] |
2018年2月21日 (水) 01:39時点における最新版
リトルエンディアン(英語: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ドライブなどの制御用に搭載されていることが多い。