組み込み変数および定数

Table 21 に、アセンブラによって定義されている組み込み変数を示します。

Table 21. 組み込み変数

{ARCHITECTURE}

選択された ARM アーキテクチャの名前を保持します。

{AREANAME}現在の AREA の名前を保持します。
{ARMASM_VERSION}

armasm のバージョンごとに増加する整数を保持します。バージョン番号の形式は PVVbbbb です。各項目には以下の意味があります。

P

メジャーバージョンを示します。

VV

マイナーバージョンを示します。

bbbb

ビルド番号を示します。

|ads$version|{ARMASM_VERSION} と同じ値を保持します。

{CODESIZE}

{CONFIG} と同じ意味です。

{COMMANDLINE}コマンドラインの内容を保持します。

{CONFIG}

アセンブラが ARM コードをアセンブルしている場合は、値 32 を保持し、Thumb コードをアセンブルしている場合は値 16 を保持します。

{CPU}

選択されている CPU の名前を保持します。デフォルトは "ARM7TDMI" です。アーキテクチャがコマンドラインの --cpu オプションで指定されている場合、{CPU} は、値 "Generic ARM" を保持します。

{ENDIAN}

アセンブラがビッグエンディアンモードの場合は値 "big" を保持し、リトルエンディアンモードの場合は "little" を保持します。

{FPIC}/fpic が設定されている場合はブール値 True を保持します。デフォルトは False です。
{FPU}選択されている FPU の名前を保持します。デフォルトは "SoftVFP" です。
{INPUTFILE}現在のソースファイルの名前を保持します。
{INTER}/inter が設定されている場合はブール値 True を保持します。デフォルトは False です。
{LINENUM}現在のソースファイル内の行番号を示す整数を保持します。
{LINENUMUP}マクロで使用した場合、現在のマクロの行番号を示す整数を保持します。マクロ以外のコンテキストで使用した場合、{LINENUM} と同じ値になります。
{LINENUMUPPER}マクロで使用した場合、上位のマクロの行番号を示す整数を保持します。マクロ以外のコンテキストで使用した場合、{LINENUM} と同じ値になります。

{OPT}

現在設定されているリストオプションの値。OPT ディレクティブを使用すると、現在のリストオプションを保存したり、リストオプションを変更したり、元の値を復元したりできます。

{PC} または

現在の命令のアドレス。

{PCSTOREOFFSET}

STR PC,[... ]命令または STM Rb,{・ PC} 命令のアドレスと、ストアされた PC 値の間のオフセットです。この変数に保持される値は、指定された CPU またはアーキテクチャによって変わります。

{ROPI}/ropi が設定されている場合はブール値 True を保持します。デフォルトは False です。
{RWPI}/rwpi が設定されている場合はブール値 True を保持します。デフォルトは False です。

{VAR} または @

ストレージ領域の位置カウンタの現在の値。


SETASETL、または SETS ディレクティブを使用して組み込み変数を設定することはできません。組み込み変数は、次のように数式や条件式で使用できます。

        IF {ARCHITECTURE} = "4T"

組み込み変数 |ads$version| は、すべて小文字で記述する必要があります。その他の組み込み変数の名前には大文字のみ、小文字のみ、または大文字と小文字を使用できます。以下に例を示します。

        IF {CpU} = "Generic ARM"

Note

組み込みの文字列変数にはすべて、大文字と小文字を区別した値が格納されます。これらの組み込み変数に関する関係演算は、大文字小文字の区が間違っている文字列には一致しません。{CPU}{ARCHITECTURE}、および {FPU} の有効な値を確認するには、コマンドラインオプション --cpu および --fpu を使用します。

Table 22 に、アセンブラで定義されている組み込みブール定数を示します。

Table 22. 組み込みブール定数

{FALSE}

論理定数 False

{TRUE}

論理定数 True


Table 23 に、アセンブラで定義済みの、ターゲット CPU に関連する組み込み変数を示します。値フィールドに記載がない場合、そのシンボルはブール値で。意味の欄にはブール値が {TRUE} になる場合について記載しています。

Table 23. 定義済みマクロ

名前意味
{TARGET_ARCH_ARM}numターゲット CPU の ARM ベースアーキテクチャの番号(アセンブラで ARM と Thumb のどちらに向けてアセンブルしているかは無関係です)。各 ARM アーキテクチャバージョンで {TARGET_ARCH_ARM} に指定できる値については、Table 24を参照して下さい。
{TARGET_ARCH_THUMB}num

ターゲット CPU の Thumb ベースアーキテクチャの番号(アセンブラで ARM と Thumb のどちらに向けてアセンブルしているかは無関係です)。ターゲットが Thumb をサポートしていない場合は、値に 0 が設定されます。各 ARM アーキテクチャバージョンで {TARGET_ARCH_THUMB} に指定できる値については、Table 24を参照して下さい。

{TARGET_ARCH_XX}-

XX はターゲットアーキテクチャを表し、その値はターゲット CPU によって異なります。例えば、アセンブラオプション --cpu=4T または --cpu=ARM7TDMI を指定した場合、{TARGET_ARCH_4T} が定義されます。Table 24には、XX に指定できる値を示しています。

{TARGET_FEATURE_EXTENSION_REGISTER_COUNT}num

NEON または VFP で使用できる 64 ビット拡張レジスタの数

{TARGET_FEATURE_CLZ}-

ターゲット CPU で CLZ 命令がサポートされている場合(つまり、ARMv6-M を除く ARMv5T 以降の場合)

{TARGET_FEATURE_DIVIDE}-

ターゲット CPU で Thumb のハードウェア除算命令 SDIV および UDIV がサポートされている場合(つまり、ARMv7-M または ARMv7-R の場合)

{TARGET_FEATURE_DOUBLEWORD}-

ターゲット CPU で LDRD 命令および STRD 命令がサポートされている場合(つまり、ARMv6-M を除く ARMv5TE 以降の場合)

{TARGET_FEATURE_DSPMUL}-ARMv5TE など、DSP 拡張乗算器(例えば、SMLAxy 命令)が使用可能な場合
{TARGET_FEATURE_MULTIPLY}-

ターゲット CPU で、long 乗算命令 SMULLSMLALUMULL、および UMLAL がサポートされている場合(つまり、ARMv6-M 以外のすべてのアーキテクチャの場合)

{TARGET_FEATURE_MULTIPROCESSING}-

ARMv7 マルチプロセッシング拡張が実装されているターゲット CPU 向けにアセンブルする場合

{TARGET_FEATURE_NEON}-

ターゲット CPU に NEON が実装されている場合

{TARGET_FEATURE_NEON_FP16}-

ターゲット CPU に半精度浮動小数点演算をサポートする NEON が実装されている場合

{TARGET_FEATURE_NEON_FP32}-

ターゲット CPU に単精度浮動小数点演算をサポートする NEON が実装されている場合

{TARGET_FEATURE_NEON_INTEGER}-

ターゲット CPU に整数演算をサポートする NEON が実装されている場合

{TARGET_FEATURE_UNALIGNED}-

ターゲット CPU で非境界整列アクセスがサポートされている場合(つまり、ARMv6-M を除く ARMv6 以降の場合)

{TARGET_FPU_SOFTVFP} オプション --fpu=softvfp を使用してアセンブルする場合
{TARGET_FPU_SOFTVFP_VFP} softvfp とハードウェア VFP を使用してターゲット CPU 向けにアセンブルする場合(例えば、--fpu softvfp+vfpv3 を指定する場合)
{TARGET_FPU_VFP} softvfp を使用せずに、ハードウェア VFP を使用してターゲット CPU 向けにアセンブルする場合(例えば、--fpu=vfpv3 を指定する場合)
{TARGET_FPU_VFPV2} VFPv2 を使用してターゲット CPU 向けにアセンブルする場合
{TARGET_FPU_VFPV3} VFPv3 を使用してターゲット CPU 向けにアセンブルする場合
{TARGET_PROFILE_A} Cortex™-A プロファイル CPU 向けにアセンブルする場合(つまり、--cpu=7-A オプションを指定する場合)
{TARGET_PROFILE_M} 

Cortex-M プロファイル CPU 向けにアセンブルする場合(つまり、--cpu=6-M--cpu=6S-M、または --cpu=7-M を指定する場合)

{TARGET_PROFILE_R} Cortex-R プロファイル CPU 向けにアセンブルする場合(つまり、--cpu=7-R オプションを指定する場合)

Table 24 には、{TARGET_ARCH_THUMB} に指定できる値(Table 23を参照)、およびこれらの値が ARM アーキテクチャの各バージョンとどのように関連しているかを示しています。

Table 24. {TARGET_ARCH_ARM}{TARGET_ARCH_THUMB} の関連

ARM アーキテクチャ{TARGET_ARCH_ARM}{TARGET_ARCH_THUMB}xx
v4404
v4T414T
v5T525T
v5TE525TE
v5TEJ525TEJ
v6636
v6K636K
v6Z636Z
v6T2646T2
v6-M036M
v6S-M036SM
v7-A747A
v7-R747R
v7-M047M

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0473FJ
Non-ConfidentialID111311