1

ARM AAPCS (ARM EABI) を読んで、見つけました: レジスタ r9 の役割はプラットフォーム固有です。仮想プラットフォームは、このレジスターに任意の役割を割り当てることができ、この使用法を文書化する必要があります。たとえば、位置に依存しないデータ モデルで静的ベース (SB) として指定することも、スレッド ローカル ストレージを使用する環境でスレッド レジスタ (TR) として指定することもできます。このレジスタを使用するには、保持されている値がすべての呼び出しで永続的であることが必要になる場合があります。このような特殊レジスターを必要としない仮想プラットフォームでは、r9 を追加の呼び出し先保存変数レジスター v6 として指定できます。

特定のアビオニクス プリエンプティブル OS の PID ホルダーとして r9 を使用したいのですが、それを保存する方法がわかりません。armcc C コンパイラは常にそれを変数レジスタとして使用するため、その値は常にアプリケーション SW によって変化します。

何か案が ?armcc で可能ですか?GCC ? ディアブ?...

助けてくれてありがとう。

よろしく

クリストフ

4

2 に答える 2

1

ARMCCの場合、試すことができます

--global_reg=6

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/CHDBJGCH.html

于 2013-01-25T12:54:02.630 に答える
0

私は自分自身に答えます:GCCの場合、-ffixed-r9を使用できます。

GCC オンライン ドキュメント

Windriver Diab コンパイラの場合:

「#pragma global_register 識別子=登録」

(すべてのファイルに含まれます)

于 2013-07-19T15:16:41.483 に答える