令和5年度 秋期 エンベデッドシステムスペシャリスト試験 午前II 問4

ビッグエンディアン方式を採用しているCPUが,表のようにデータが格納された主記憶の1000番地から2バイトのデータを,16ビット長のレジスタにロードしたとき,レジスタの値はどれになるか。ここで,番地及びデータは全て16進表示である。

表:番地とデータの対応
図の説明テキスト
番地 データ
0FFE FE
0FFF FF
1000 00
1001 01
解答・解説

正解: ア. 0001

ビッグエンディアンとは

ビッグエンディアンとは、複数バイトのデータを主記憶(メモリ)に格納する際に、データの上位バイトから順に若い(小さい)番地へ配置していく方式です。例えば、2バイトのデータを格納する場合、最初の番地に上位1バイトを、次の番地に下位1バイトを格納します。

正解の根拠

主記憶の1000番地から2バイトのデータを読み込みます。表に示された番地とデータは以下の通りです。

  • 1000番地:0000
  • 1001番地:0101

ビッグエンディアン方式を採用しているため、若い番地である1000番地のデータが上位バイトに、続く1001番地のデータが下位バイトになります。

  • 上位バイト:0000
  • 下位バイト:0101

これらを組み合わせると「00010001」となります。したがって、16ビット長のレジスタにロードされる値は 00010001 です。

各選択肢の解説

  • ア: 正解。1000番地からビッグエンディアン方式で2バイトを読み込んだ正しい値です。

  • イ: 1000番地のデータを上位バイトに、0FFF番地のデータを下位バイトにして組み合わせた値であり、読み込む対象の番地が誤っています。

  • ウ: 1001番地のデータを上位バイトに、1000番地のデータを下位バイトにして組み合わせた値です。これはリトルエンディアン方式で読み込んだ場合の値であり、誤っています。

  • エ: 0FFF番地のデータを上位バイトに、1000番地のデータを下位バイトにして組み合わせた値であり、読み込む対象の番地が誤っています。

Spineチーム