inline-assembly

    12

    2答えて

    私はプログラムを正常に終了するのではなく、なぜガーベジを印刷しますか?私はBSDでこのようにシステムコールを使用しています。そして、Linuxでこれを動作させるためには何が必要なのでしょうか? int main(int argc, char **argv) { __asm ("movq $1,%rax; movq $0,%rdi; syscall"); /* exit(0) ? */

    1

    2答えて

    愚かな質問ですが、gccで必要なフラグが見つかりません。 Error: invalid char '[' beginning operand 2 [タイミング] ' ` は、今私は長い時間前に私が使用したことを覚えている:基本的に、私はコンパイルすると、私が言うにErrorMessageを得る __asm__ __volatile__ ("lea ebx, [timings] \n\t");

    4

    3答えて

    m68kプロセッサ用のgccを使用してコンテキストスイッチを実装しようとしています。私はすべてのレジスタd0、d1 ... d7とa0、... a7を保存するためにインラインアセンブリを使用する必要があります。私はインラインgccでループを使って各レジスタのコードを別々に書くのではなく、これらのレジスタを保存できるかどうか疑問に思っていました。 たとえば、 move.lの%のD0、一時 pcb.c

    11

    2答えて

    昨日、AMD64およびItaniumターゲットのコンパイル時にMicrosoft Visual C++でインラインアセンブリ(__asmキーワード付き)がサポートされていないことを知りました。 これは間違いありませんか?もしそうなら、なぜそれらのターゲットに対してインラインアセンブリーをサポートしないのか誰にでも分かりますか?それはちょうどドロップするより大きな機能のように思えます...

    2

    1答えて

    この種の問題を扱う別のトピックを読みましたが、まだ答えはありません。 ここに私の問題です:私のプロジェクト設定で int cl, ch, _a = a, _b = b;\ __asm__ ("smull %0, %1, %2, %3\n" "mov %0, %0, lsr %4\n" "orr %0, %0, %1, lsl %5\n" : "=

    10

    7答えて

    私はインラインアセンブリを使用して私のコンパイラを打つのに苦労しています。 コンパイラが実際に、本当に速く簡単にするのに苦労している機能の、良い、非人為的な例は何ですか?しかし、これはインラインアセンブリで行うのが比較的簡単です。

    3

    3答えて

    C/C++プログラムにアセンブリコードを埋め込むときに、プッシュ命令でレジスタを保存する(またはコンパイラのclobberリストを指定する)ことで回避できます。 アセンブリをインラインに含める場合、clobberedレジスタを押したりポップするオーバーヘッドを避けたい場合は、gccにレジスタを選択させる方法があります(例えば、有用な情報がないことなど)。

    4

    3答えて

    私は現在-std=c99でプロジェクトをコンパイルしていますが、私は間違いを抱えています。このライン: my_type* td = ({ register kmy_type* arg0 asm("eax"); arg0; }); は私だけC99に次のエラーを与える: warning: ISO C forbids nested functions error: syntax error bef