https://github.com/techno/mist32-simulator
そこで気づいたことをひとつ書こうかなと。あたりまえのことなのですが。
ビッグエンディアンとリトルエンディアン
ご存知の通り、この世のコンピューターは内部的にエンディアンやバイトオーダーと言われるような、1ワードのバイト列をどのようにメモリ上に配置するか、という手法が大きく分けると2つあります。Data: 0x1234ABCD 0 1 2 3 Big Endian: 12 34 AB CD Little Endian: CD AB 34 12
上記が、ビッグエンディアンとリトルエンディアンの概要です。ビッグエンディアンの方が人間には自然に見えますが、コンピューター的にはそうでない面もあり、一長一短です。一般的に使われている x86 はリトルエンディアンを使っています。
ファイルシステムや、ネットワークプロトコルなどによって、エンディアンは普通は規定されています。(FAT はリトルエンディアン、ネットワークはビッグエンディアン) しかしながら、ELF のようなメモリイメージのようなフォーマットは、そう簡単に行きません。