在HAM的安裝目錄/docs/korth_gbatek.html
這份文件中,有一節是關於GBA架構的memory map
其中一段
General Internal Memory
0000:0000-0000:3FFF BIOS - System ROM (16 KBytes)
0000:4000-01FF:FFFF Not used
0200:0000-0203:FFFF WRAM - On-board Work RAM (256 KBytes) 2 Wait
0204:0000-02FF:FFFF Not used
0300:0000-0300:7FFF WRAM - In-chip Work RAM (32 KBytes)
0300:8000-03FF:FFFF Not used
0400:0000-0400:03FE I/O Registers
0400:0400-04FF:FFFF Not used
在作業三中,真正能自由使用的記憶體
只有0x2012C08 ~ 0x203FFFF
0x300000 ~ 0x3007FFF
這兩塊而已
剛剛發現有同學因為改動了0x0000000~0x00003FFFF這塊保留給BIOS使用的記憶體
造成debug mode會跑出正確結果,而模擬器卻會錯誤的情形
這是由於該debugger(GDB+Insight)並不會去檢查你的記憶體運用是否符合GBA的規則
但是模擬器是照著真實的硬體去模擬的
因為GBA並沒有一個作業系統來作memory management
使用到不該用的記憶體位址可能造成不可預期的結果
如上例中.改動到BIOS memory會造成最後圖片無法顯示之類
因此請到目前仍沒有Accept的同學,注意看看是不是用到了非法記憶體的關係
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.91.5
推
12/12 01:15, , 1F
12/12 01:15, 1F
→
12/12 01:17, , 2F
12/12 01:17, 2F
→
12/12 01:18, , 3F
12/12 01:18, 3F
→
12/12 01:19, , 4F
12/12 01:19, 4F
→
12/12 01:19, , 5F
12/12 01:19, 5F
→
12/13 00:29, , 6F
12/13 00:29, 6F
→
12/13 00:30, , 7F
12/13 00:30, 7F