ROMのメモリマップを見る方法はありますか?
.symファイルは全ての関数がROMに配置されていることを示しています。
#orgステートメントを使用して、関数、又は、特定の用途のためにROMメモリを検索、又は、予約できます。
.staファイルにはサイズや関数が配置されているページなど、関数に関する詳細情報が記載されています。
ROMへのメモリの配置方法を教えてください。
※#org使用例:
#orgなどを使うと、任意の関数を任意のアドレスに配置することは可能です。
例えば、簡単なプログラムをコンパイルしてその結果次のような.symファイルの内容が出力されました。
ROM Allocation:
000036 IntrTimer0
000040 InitCpu
00005A GetVR
000063 GetAd
000090 MAIN
000090 @cinit1
00009C @cinit2
ここで、GetADという関数の前に#orgを次のように書きました。
#org 0x100, 0x1FF
int16 GetAd( int ch )
{
:
}
これをコンパイルすると
ROM Allocation:
000036 IntrTimer0
000040 InitCpu
00005A GetVR
000079 MAIN
000079 @cinit1
000085 @cinit2
000100 GetAd
といったようになり、GetrAD()関数は0x100番地に割り当てられます。
また、定数を
#org 0x200, 0x220
const int8 buff[20] = { "abcdefg ABCD" };
のように指定してコンパイルすると
ROM Allocation:
000036 IntrTimer0
000040 InitCpu
00005A GetVR
000079 MAIN
000079 @cinit1
000085 @cinit2
000100 GetAd
000200 buff.call
000204 buff.data
のようにROMに割り当てられます。