2011-06-08 7 views
1

Green Hillコンパイラでは、実行時に表示される変数をリンカに作成することができます。コードで
__ghs_ramstart = MEMADDR(dram_memory);
:リンカでは
if (__ghs_ramstart == 0) {do something}
は、それがGCCを使用した場合のものと同じ種類の操作を行うことは可能ですか?GCCを使用してランタイム可視変数を作成する方法

答えて

3

はい、これはGNU ldリンカースクリプトを使用して行うことができます。 http://sourceware.org/binutils/docs-2.21/ld/Scripts.html#Scripts gccからアクセス可能なスクリプトでシンボルを定義できます。また、スクリプトを使用してデータテーブル(アドレスの配列など)を作成しました。リンカスクリプトで

、あなたが言うことができ

__ghs_ramstart = dram_memory; 

およびCからのアクセスを、例えばのようなもの

extern char __ghs_ramstart[]; 

... 

ターゲットに応じて先頭のアンダースコアを追加または削除する必要があります。シンボルにシンボルを追加するターゲットもあればシンボルにシンボルを追加するターゲットもあります。

+1

http://sourceware.org/binutils/docs-2.21/ld/Source-Code-Reference.html#Source-Code-Reference – Gerhard

-1

-Dオプションを使用してマクロを定義できます。

+1

マクロは変数ではありません。 –

関連する問題