0

インライン アセンブリでグローバル変数を使用したい。

asm(" LDR R0,g_TsInitStackPointerAddress");

ここで、g_TsInitStackPointerAddress はグローバル変数です。コンパイル中にエラーが表示されません。

しかし、リンク中に次のエラーが表示されます

[elxr] (エラー) 範囲外: 0x1001326 (符号なし) は、アドレス 0x10013e0 で InitStack+0x20 (drv.o(.text)+0x1a4) から g_TsInitStackPointerAddress への再配置タイプ R_ARM_POOL (4) を実行中に 12 ビットに収まりませんでした+0x0 ((コモン)+0xb6)

ここで、私の関数名は InitStack で、ファイル名は drv です。エラーを理解できません。

使用プロセッサ : Cortex R4
コンパイラ : Greenhills

4

1 に答える 1

1

解決策を得た

__asm( "g_TsInitStackPointerAddress_a:DCD g_TsInitStackPointerAddress");

その関数内にこのステートメントを指定すると、インラインアセンブリでその変数を取得します

于 2012-06-29T03:43:18.923 に答える