8.2.4 スタック・ポインタの設定,スタック領域の初期化

スタック領域の先頭(__STACK_ADDR_END)および終端(__STACK_ADDR_START)はリンカが決定します。CC-RLのスタック領域はアドレスの0x0番地方向に成長するので,スタック・ポインタにはシステムで使用するスタック領域の終端(__STACK_ADDR_START)を設定します。__STACK_ADDR_STARTおよび__STACK_ADDR_ENDについては「6.2.2 オプション指定により生成するシンボル」を参照してください。

 

スタートアップ・ルーチン内でSPをセットするには,次のように記述します。

MOVW    SP,#LOWW(__STACK_ADDR_START)

 

続けて,スタック領域を初期化します。引数として,スタック領域の先頭(__STACK_ADDR_END)を渡します。未初期化RAM読み出しによるパリティ・エラー検出機能を使用しない場合,または同機能がないデバイスでは,スタック領域の初期化は必要ありません。スタック領域の初期化をコメントアウトしてください。未初期化RAM 読み出しによるパリティ・エラー検出機能を使用する場合は,スタック領域の初期化処理を有効にしてください。

MOVW    AX,#LOWW(__STACK_ADDR_END)
CALL    !!_stkinit