#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
gcc インラインアセンブリについて
Re:gcc インラインアセンブリについて
インラインアセンブラに引数を与えるのではなく、直接文字列として埋め込む場合の話でしょうか?
同じGCCでも、ターゲットやバージョンによって微妙に異なるのですが、アセンブリ言語にした場合には先頭に _ が付く場合があります。
あらかじめ、コンパイル結果を調べた上で記述する方が手っ取り早いと思います。
同じGCCでも、ターゲットやバージョンによって微妙に異なるのですが、アセンブリ言語にした場合には先頭に _ が付く場合があります。
あらかじめ、コンパイル結果を調べた上で記述する方が手っ取り早いと思います。
Re:gcc インラインアセンブリについて
foo_global を変数として使いたいのですが
そのようなことができるのでしょうか?
C言語内の変数をインラインアセンブラで直接
扱うことができるのか?できるのであれば
その方法を教えていただければ幸いです。
以上です。よろしくお願いします。
そのようなことができるのでしょうか?
C言語内の変数をインラインアセンブラで直接
扱うことができるのか?できるのであれば
その方法を教えていただければ幸いです。
以上です。よろしくお願いします。
Re:gcc インラインアセンブリについて
正確なターゲット(MinGWなのか、Cygwinなのか、あるいはクロスコンパイラなのか)やGCCのバージョンがわかりませんので正確な回答もできません。
ただ、下記のURLが参考になるのではないでしょうか?
http://www.sra.co.jp/wingnut/gcc/gcc-j. ... nded%20Asm
ただ、下記のURLが参考になるのではないでしょうか?
http://www.sra.co.jp/wingnut/gcc/gcc-j. ... nded%20Asm