辞書へ戻る概念の一覧

エンディアン

えんでぃあん概念

バイトのデータをメモリにどの順で並べるかの流儀。リトル/ビッグの違いはバイナリ解析で必ず意識する点。

概要

複数バイトにまたがるデータを、メモリ上にどの順序で並べるかという流儀。バイト単位でしか読めないメモリに、2バイト以上の数値(アドレスなど)を保存する際に生じる問題で、リトルエンディアンとビッグエンディアンの2つの流儀がある。

種類・系譜

リトルエンディアンは下位バイトから先に並べる方式、ビッグエンディアンは上位バイトから先に並べる方式。65C816やx86など多くのCPUはリトルエンディアンを採用している。

実例

スーパーファミコン65C816で、アドレス$2100(画面表示レジスタ)を機械語にすると `00 21` という並びになる。人間が読む表記では上位バイトを先に書いて「2100」だが、メモリ上のバイト列は下位バイトの`00`が先に来る。バイナリを直接読む際に混乱しやすい点の一つ。

関連項目

  • アセンブリ言語機械語の命令を人が読める記号に置き換えた、最も低水準に近い言語。CPUの動きをそのまま書くため習得は難しいが、限界まで速度や容量を絞れる。レトロゲーム解析やROMハックでは、逆アセンブルした先で必ず出会う言語。
  • 65C816MOS 6502を16ビットに拡張したCPU。1984年に設計が完了し1985年に市場へ出た。8ビットの6502コードとの互換性を保ちながら16ビット処理を可能にし、スーパーファミコンやApple IIGSに採用された。6502の系譜を16ビット時代へ橋渡しした一台。

関連技術

出典