06/03/20 01:10:48
>>565
>>566
>>567
私、まだわかってないみたいですね・・・
皆さんのアドバイスを元に私なりに整理してみました。
添削していただけると幸いです。
前提条件(簡単化のため)
プロセッサがサポートするバイトオーダー: ビッグエンディアン
プロセッサが使用可能なデータバス幅 : 16bit
プロセッサに接続しているメモリのデータバス幅 : 16bit
メモリのスペック:2Mワードx16bit (容量4Mbit)
このシステムで使用したいメモリの総容量: 4Mbit
この前提条件の場合、プロセッサには1個のメモリが接続される構成となる。(メモリとプロセッサのデータバス幅が同じなので)
また、
このメモリの0番地からプロセッサが16bitリードすると、メモリの最初のワードが読み込まれる。
2番地からプロセッサが16bitリードすると、2番目のワードが読み込まれる。
1番地からプロセッサが16bitリードすると、最初の下位ハーフワードと2番目の上位ハーフワードが読み込まれる。
(プロセッサが奇数番地からのワード読み込みをサポートしていたならばの話)
さらに
unsigned char tmp;
*(unsigned long*)0x0000 = 0xaabbccdd;
tmp = *(unsigned char*)0x0001;
をするとtmpの中身は0xbbということになる。(メモリの最初のワードから読み出される)
そして、
この場合、プロセッサが使用可能な物理メモリ空間の大きさは512k(4M / 8)
どんなもんでしょうか?