sp、lr、または pc にアクセスする従来のインラインアセンブラ

ARM Developer Suite(ADS)v1.2 以前のコンパイラでは、インラインアセンブリコードから spr13)、lrr14)、および pcr15)にアクセスできました。Example 48 は、lr を使用する従来のインラインアセンブリコードを示しています。

Example 48. lr を使用する従来のインラインアセンブリコード

void func()
{
    int var;
    __asm
    {
        mov  var, lr  /* func() の復帰アドレスを取得する */
    }
}

従来のコードのインラインアセンブリで lr を使用している場合、関数の復帰アドレスが含まれる保証はありません。例えば、他の目的で lr を使用するビルドオプションや最適化があります。RVCT v2.0 以降のコンパイラでは、このような方法で lrsp、または pc を使用すると、次のようなエラーが発生します。

C または C++ のソースファイル内からこのようなレジスタにアクセスする必要がある場合は、以下の方法を使用できます。

Show/hide関連項目

Copyright © 2010 ARM. All rights reserved.ARM DUI 0472BJ
Non-ConfidentialID011811