Uniquely, the size of the displacement is encoded in its most significant bits: 0, 10 and 11 preceded 7-, 14- and 30-bit signed displacements. (Although the processors are otherwise consistently little-endian, displacements in the instruction stream are stored in big-endian order).
ゲームボーイはZ80だったのか… (スコア:1)
6502だと勝手に思いこんでたよ。
ファミコンからの移植大変だったんじゃないのかなあ
Re: (スコア:0)
6502がリトルエンディアンだというのを今知った。
ビッグエンディアンだったら移植がもっと大変だっただろう。
ちなみに自分がマシン語を使ったのは6809が最初で次に68000だったけど
リトルエンディアンのことを知ったときは正気の沙汰ではないと感じた。
もうエンディアンの違いは意識することもない人生を送っているけれど、
なぜリトルエンディアンが主流になったのだろう?
ハード的にはそちらのほうが有利な点があったとか?
Re:ゲームボーイはZ80だったのか… (スコア:0)
たとえば2バイト長の加算は
リトルエンディアン:下位バイトフェッチ、下位加算、ポインタインクリメント、上位バイトフェッチ、上位加算、ポインタインクリメント
ビッグエンディアン:上位バイトフェッチ、バッファ、ポインタインクリメント、下位バイトフェッチ、下位加算、上位加算、ポインタインクリメント
となる。
ビッグエンディアンは見た目はわかりやすいが回路的にはオーバーヘッドにしかならない。たとえば IBM System 360はビッグエンディアン、DEC VAXはリトルエンディアン、PDP-11は非常に特殊なエンディアン。
https://ja.wikipedia.org/wiki/PDP-11 [wikipedia.org]
PDP-11のエンディアンは独特であった。16ビットワードはリトルエンディアンで格納される。すなわち下位バイトがアドレスの小さいほうに格納される。32ビットワードを構成する2個の16ビットワードは、ビッグエンディアンで格納される。すなわち上位16ビットワードがアドレスの小さいほうに格納される。ここで、各16ビットワード内は前述のようにリトルエンディアンである。PDP-11が非常に一般化したため、この形式を PDPエンディアン と呼ぶことがある。
このようなミドルエンディアンにまつわる問題を「NUXI問題」と言う。これは UNIX という文字列をPDPエンディアンの順序で並べ替えたものに由来する。UNIX を他機種に移植した際、最初の起動メッセージ(しばしば、本格的な初期化に入る前、最小限のブートが完了したことを示すため、短い文字列を出力することがある)として「UNIX」ではなく「NUXI」と出力されたことがあった、と言われている。
Re: (スコア:0)
32032は「命令はビッグエンディアン、データはリトルエンディアン」という変なやつ。
https://en.wikipedia.org/wiki/NS32000 [wikipedia.org]
Uniquely, the size of the displacement is encoded in its most significant bits: 0, 10 and 11 preceded 7-, 14- and 30-bit signed displacements. (Although the processors are otherwise consistently little-endian, displacements in the instruction stream are stored in big-endian order).
Re: (スコア:0)
ビッグエンディアンがオーバーヘッドになるのは加算機が8ビットだからって事だろうか