location
このセクションの内容:
構文
#pragma location={address|register|NAME}
パラメータ
| 絶対位置で指定するグローバル変数や静的変数、または関数の絶対アドレス。 |
| Armコアレジスタ |
| ユーザ定義のセクション名。コンパイラやリンカで使用される定義済のセクション名は指定できません。 |
説明
このプラグマディレクティブを使用して、以下を指定します。
グローバル変数または静的変数の場所(絶対アドレス)。プラグマディレクティブの後に宣言が続きます。
レジスタを指定する識別子。プラグマディレクティブの後に定義される変数が、レジスタに配置されます。変数は
__no_initとして宣言し、ファイルスコープを持つ必要があります。
変数や関数を配置するためのセクションを指定する文字列で、プラグマディレクティブの後に宣言が続きます。通常は異なるセクションにある変数(たとえば、__no_initとして宣言される変数と、constとして宣言される変数)を、同じ名前のセクションに配置しないでください。
例
#pragma location=0xFFFF0400
__no_init volatile char PORT1; /* PORT1 is located at address
0xFFFF0400 */
#pragma location=R8
__no_init int TASK; /* TASK is placed in R8 */
#pragma location="FLASH"
char PORT2; /* PORT2 is located in section FLASH */
/* A better way is to use a corresponding mechanism */
#define FLASH _Pragma("location=\"FLASH\"")
/* ... */
FLASH int i; /* i is placed in the FLASH section */