... | ... | @@ -15,11 +15,11 @@ CPU が一通り完成したら、その上でプログラムを動かすこと |
|
|
|
|
|
ここで、正しくプログラムを実行するためには、命令やデータのメモリ内における配置を正しく決める必要があります。今回は、下記のようなメモリマップになるよう CPU を作っていきましょう。
|
|
|
|
|
|
| アドレス | サイズ | 内容 |
|
|
|
| アドレス | サイズ | 内容 |
|
|
|
|:-----------|:-----------|:-----------|
|
|
|
| 0x08000-0x10000 | 32KiB | .text(ROM) |
|
|
|
| 0x10000-0x18000 | 32KiB | .rodata + .data + .bss + .comment(RAM) |
|
|
|
| 0x18000-0x20000 | 32KiB | stack(RAM) |
|
|
|
| 0x08000-0x10000 | 32KiB | .text(ROM) (命令メモリ)|
|
|
|
| 0x10000-0x18000 | 32KiB | .rodata + .data + .bss + .comment(RAM) (データメモリ)|
|
|
|
| 0x18000-0x20000 | 32KiB | stack(RAM) (データメモリ)|
|
|
|
|
|
|
* 0xF6FF_F070にSTBするとその値がシリアルポートに書き込まれる
|
|
|
* 0xFFFF_FF00からLWするとハードウェアカウンタの値が読み出される
|
... | ... | |