平成23年特別試験問題 午前問11
問11解説へ
主記憶の1000番地から,表のように4バイトの整数データが格納されている。これを32ビットのレジスタにロードするとき,プロセッサのエンディアンとレジスタにロードされる数値の組合せとして,正しいものはどれか。
広告
解説
エンディアン(endianness)とは、データをメモリ上にロードするときの配置の仕方です。
方式としては、ビッグエンディアン,リトルエンディアン,ミドルエンディアンの3種類があります。配置例では8ビットで1アドレスが増加すると仮定しています。
ちなみにエンディアンは、CPUア―キテクチャによって異なり、インテルのx86のCPUは「リトルエンディアン」、IBM系のメインフレーム/汎用機、Java仮想マシンでは「ビッグエンディアン」が採用されています。
方式としては、ビッグエンディアン,リトルエンディアン,ミドルエンディアンの3種類があります。配置例では8ビットで1アドレスが増加すると仮定しています。
- ビッグエンディアン
- データの上位バイトから下位バイトへ向かって、メモリの下位アドレスから順に配置していく方式。16進数のデータ「00 01 02 03」を、ビッグエンディアン方式で配置していくと「00 01 02 03」となる。
- リトルエンディアン
- データの上位バイトから下位バイトへ向かって、メモリの上位アドレスから順に配置していく方式。16進数のデータ「00 01 02 03」を、リトルエンディアン方式で配置していくと「03 02 01 00」となる。
- ミドルエンディアン
- 上の二つの配置方式よりも更に複雑な配置をする方式。
16進数のデータ「00 01 02 03」を、ミドルエンディアンの一種であるPDP-エンディアンで配置すると「01 00 03 02」となる。
ミドルエンディアンは試験は出題されなそうなので参考程度。
ちなみにエンディアンは、CPUア―キテクチャによって異なり、インテルのx86のCPUは「リトルエンディアン」、IBM系のメインフレーム/汎用機、Java仮想マシンでは「ビッグエンディアン」が採用されています。
広告