[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.33 アセンブラコードで使用される名前の制御

C の関数や変数の、アセンブラコード中で使われる名前を 指定することができる。それには、キーワード asm(または __asm__)を以下のように宣言の後に書く。

 
int foo asm ("myfoo") = 2;

これにより、アセンブラコードの中で、変数 foo に対して 使われる名前は、通常の ‘_foo’ ではなく、‘myfoo’ と することを指定する。

C の関数や変数の名前には通常アンダースコアが頭につくシステムでは、 この機能により、アンダースコアが頭につかない、リンカ用の名前を 定義することが可能になる。

関数の定義では、asm を上のように使うことはできないが、 以下のように、関数の宣言をその定義の前に書き、宣言の後ろに asm を 書くことで同じ効果が得られる。

 
extern func () asm ("FUNC");

func (x, y)
     int x, y;
…

指定したアセンブラでの名前が、何か他のアセンブラシンボルとぶつからない ことを保証するのはユーザの責任である。また、レジスタ名を使ってはならない。 もし使うと、全く不正なアセンブラコードが生成される。 GNU CC には、静的変数をレジスタにストアする能力はない。 おそらく、将来その機能が追加されるだろう。


This document was generated using texi2html 1.78.