ページ 11

gcc インラインアセンブリについて

Posted: 2010年4月23日(金) 13:06
by カレポテ
#include <stdio.h>

int foo_global;

int main() {
asm ("movl foo_global,%eax");
return 0;
}
 
上記を、gcc -o test test.c
でコンパイルすると下記のエラーになってしまいます。
gcc でグローバル変数をインラインアセンブラで直接
つかうことは出来るのでしょうか?

undefined reference to 'foo_global'

OS:winXP

Re:gcc インラインアセンブリについて

Posted: 2010年4月23日(金) 13:29
by たかぎ
インラインアセンブラに引数を与えるのではなく、直接文字列として埋め込む場合の話でしょうか?
同じGCCでも、ターゲットやバージョンによって微妙に異なるのですが、アセンブリ言語にした場合には先頭に _ が付く場合があります。
あらかじめ、コンパイル結果を調べた上で記述する方が手っ取り早いと思います。

Re:gcc インラインアセンブリについて

Posted: 2010年4月23日(金) 22:51
by カレポテ
foo_global を変数として使いたいのですが
そのようなことができるのでしょうか?

C言語内の変数をインラインアセンブラで直接
扱うことができるのか?できるのであれば
その方法を教えていただければ幸いです。

以上です。よろしくお願いします。

Re:gcc インラインアセンブリについて

Posted: 2010年4月24日(土) 00:49
by たかぎ
正確なターゲット(MinGWなのか、Cygwinなのか、あるいはクロスコンパイラなのか)やGCCのバージョンがわかりませんので正確な回答もできません。
ただ、下記のURLが参考になるのではないでしょうか?
http://www.sra.co.jp/wingnut/gcc/gcc-j. ... nded%20Asm

Re:gcc インラインアセンブリについて

Posted: 2010年4月24日(土) 12:39
by カレポテ
ちなみに、バージョンはMinGW-5.1.6です。

Re:gcc インラインアセンブリについて

Posted: 2010年4月26日(月) 07:17
by もぐりん
同じ内容の質問が、以下の掲示板で出ています。
たぶん、マルチポストでしょうか?

http://www3.realint.com/cgi-bin/tarticl ... intc2+9815