バイトオーダーは任意の設計上の決定であるためです。レジスタに入ると、バイトオーダー1はありません。
バイトオーダーは、バイトなどの小さなユニットをアドレス指定するときに発生します。これは、CPU設計者が行う本質的に恣意的な決定です。ビッグエンディアンまたはリトルエンディアンです。
状況を単純化し、バイト順であるのは主に周辺機器への接続であることを理解すると便利です。はい、証明したようにバイトアドレス指定を介して検出できますが、一般にスカラー値はユニットとしてレジスタにロードおよび格納され、この場合、バイト順序は何も変更しません。最上位ビットは、少なくとも、私たちが通常数字を書く方法の「左側」にあります。そのため、言語標準に従って使用した場合、<<
および>>
演算子は、ビッグエンディアンとリトルエンディアンのマシンで常にまったく同じ結果を生成します。
ただし、周辺機器へのデータストリームの読み取りと書き込みを行うには、バイトオーダーを選択する必要があります。これは、周辺機器が基本的にバイトストリームデバイスであるためです。最下位アドレスには最上位ビットがありますか、それとも最下位ビットがありますか?それは両方の方法で行われ、キャンプはかなり均等に分割されていました。
メモリ自体はバイトアドレス指定されているため、周辺機器なしでさまざまな動作を引き出すことは確かに可能ですが、これは通常、あなたが行ったように内部を意図的に覗き見しないと起こりません。
バイトがなく、32ビットワードのみが0、1、2としてアドレス指定されているCPUを想像してみてください。Cコンパイラは、char、int、およびlongのすべての32ビットオブジェクトを作成します。(これはCx9で許可されています。)うわー、バイトオーダーの問題はありません!両方です!しかし..最初の周辺機器を接続するとどうなりますか?
1.ええと、x86には小さなレジスタをエイリアスするレジスタがありますが、それは別の話です。