そのために、devkitProで公開されているdevkitARM(GBA等のARMプロセッサ用の開発ツールキット)のcrtがどのような処理を行っているか、ソースコードを追いかけてみる。
- GBAヘッダを定義 → GBAでは、ROMの先頭に所定のヘッダデータが必要
- IMEレジスタに、"割り込み可”を設定
- CPUモードの"IRQモード”および”SYSモード”のスタックポインタを設定
- .text領域の開始アドレスをチェック(CARTかMBかをチェックするため)
- CARTの場合は、EWRAMをゼロクリア
- .bbs領域をゼロクリア
- .data領域を、ROMからRAM(IWRAM)にコピー
- libcの初期化コードを実行
- ユーザプログラム(main関数)へジャンプ
3.で設定されるスタックポインタの値は、
- IRQモード → 0x03007FA0
- SYSモード → 0x03007F00
参考ページ
0 件のコメント:
コメントを投稿