Skip to main content

IAR Embedded Workbench for Arm 9.70.x

location

このセクションの内容:
構文
#pragma location={address|register|NAME}
パラメータ

address

絶対位置で指定するグローバル変数や静的変数、または関数の絶対アドレス。

register

ArmコアレジスタR4–R11のいずれかに対応する識別子。このパラメーターは64ビットモードでは使用できません。

NAME

ユーザ定義のセクション名。コンパイラやリンカで使用される定義済のセクション名は指定できません。

説明

このプラグマディレクティブを使用して、以下を指定します。

  • グローバル変数または静的変数の場所(絶対アドレス)。プラグマディレクティブの後に宣言が続きます。

  • レジスタを指定する識別子。プラグマディレクティブの後に定義される変数が、レジスタに配置されます。変数は__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 */
関連項目

データと関数のメモリ配置制御 および 独自のセクションの宣言および配置