問題タブ [intel-syntax]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - .intel_syntax GNU C インライン アセンブリでのメモリ オペランドの参照
ソース ファイルをインライン アセンブリでコンパイルおよびリンクすると、リンク エラーが発生します。
テストファイルは次のとおりです。
プログラムをコンパイルしてリンクすると、次のようになります。
実際のプログラムはもっと複雑です。ルーチンのレジスタが不足しているため、フラグrnds_00_15
はメモリ オペランドでなければなりません。の使用はrnds_00_15
、asm ブロックに対してローカルです。C コードで宣言されているのは、メモリがスタック上に割り当てられていることを確認するためです。C コードに関する限り、読み取りも書き込みも行いません。これをメモリ入力としてリストするので、GCC はそれを使用していることを認識し、拡張 ASM で「C 変数名」を関連付けます。
リンク エラーが表示される理由とその修正方法を教えてください。
c - 移動と追加は、何らかの理由で何もしていません
このコードは大学の教授から入手したので、コードが機能することはかなり確信していますが、私の場合、出力は常に 0 です。
Windows と仮想 Ubuntu マシンで試してみましたが、それでも同じでした。
私はmingwを使ってコンパイルしています:
gcc test.c test.s
これはCコードです:
そして、これはアセンブリです:
入力 2 と 3 の場合、5 を出力する必要がありますが、常に 0 です。
gcc - ASM: `mov' のメモリ参照が多すぎます
idt.S ファイル (gcc でコンパイルされた Intel 構文) に新しい問題があります。次のコードをコンパイルしようとすると:
修正方法が本当にわからないというエラーが表示されます。