1

C 関数から引数にアクセスする必要がある

void printk(char* msg);

ESIに保存します。しかし、私はできません

mov $msg, %esi

また

mov $_msg, %esi

どちらもリンカ エラーを返します (シンボル msg または _msg が未定義であると言っています。スタックから読み取ることで msg にアクセスできると確信していますが、アセンブリ コードでシンボル msg にアクセスするだけの方が簡単です。 GCC?

4

1 に答える 1

1

GCCインラインアセンブリでそのような変数を参照することはできません。私はあなたが次のようなものが欲しいと思います:

 asm("mov %[msg], %%esi",
     : /* no outputs */
     : [msg] "r" (msg)
     : "esi");
于 2013-01-12T23:17:13.147 に答える