問題タブ [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 - gcc (Intel シンタックス) を使用して「生の」アセンブリ コードを作成する
gcc でアセンブリ コードを作成したいと考えています。使用するgcc -masm=intel -S test.c
と、アセンブリコードがいっぱいに.def
なり、アセンブリ.cfi
できないラベルが表示されます。このラベルなしでアセンブリ コードを作成する方法はありますか?
例: 次のような単純な C コード:
コンパイルすると:
しかし、私が欲しいのは次のようなものです:
これを行う方法があることを願っています。ありがとうございます。
c - アセンブリの文字列コピー
アセンブリで文字列を空の配列にコピーする際に問題が発生しました。
まず、コピーしたい文字列の代わりにいくつかのジャンクを取得します。
第二に、プログラムは最大 100 文字の文字列で動作するはずですが、100 文字の配列を宣言すると、gcc を使用してコンパイルした後に " *** stack smashing detected *** " が発生しました。
私はアセンブリの初心者なので、助けてください。
前もって感謝します
c++ - 変数を使用した GCC インライン ASM
Visual Studio 用に指定された、C++ ソースで次の ASM インライン コードを使用しようとしています。
target は void* ポインターです。これを GCC 互換コードに変換する方法がわかりません。私はGCCがシンタックスを次のように使用することを知っています:
しかし、明らかにこの状況では変数に問題があります。では、GCC for Windows を使用してインライン ASM でポインターを使用する方法を誰かに説明してもらえますか?
ご協力いただきありがとうございます。
c - Intel 構文でインライン アセンブリを使用してカーネル モジュールをコンパイルする
インライン アセンブリを大量に使用するカーネル モジュールを作成したくありません。私は Intel Syntax に慣れているので、AT&T Syntax を完全に避けたいと思っています。これを行う 1 つの方法を、次の最小限の例に示します。
samplemodule.c
メイクファイル
したがって、アセンブリをインライン化したいときはいつでも、2 つの write があり.intel_syntax noprefix\n...\n.att_syntax noprefix\n
ます。これを達成する他の方法はありますか?gcc でコンパイルするときは、gcc に-masm=intel
引数を渡すだけで、インテルの構文を自由に使用できました。この場合、同様のことが可能ですか?
assembly - [base + index*scale + disp] に関するいくつかの質問
Intel および AT&T 構文でのメモリ アドレッシングの一般的な形式は次のとおりです。
私の質問は次のとおりです。
- 任意のレジスタにすることが
base
できますか?index
scale
1、2、4 、および 8 (デフォルトは 1) のどの値を取ることができますか?index
と は互換性がありますかdisp
(唯一の違いindex
はレジスタでdisp
あり、即値であるということです)?
linux - アセンブリ言語と印刷結果。フィボナッチ数列
x86 Linux で Assembly を使用し、Intel 8086 の手順を使用しています。プログラムに問題があり、フィボナッチ数列の要素をカウントする必要があります。
このプログラムは、次のように引数を指定して実行します。
./fibb 1 2 3 ,
意味: シーケンスの最初の要素は 1、2 番目の要素は 2 で、3 番目の要素を取得したい。そして、その例はうまく機能しますが、次のように実行しようとすると:
./fibb 1 2 4、
それから私はいくつかのがらくたを持っています。私を助けてください。私はアセンブリが初めてなので、何が間違っているのかを明確に説明してください。これが私のコードです:
assembly - バックスラッシュで終わるコメントの後、NASM/Yasm は CALL をドロップします
現在、独自のブートローダーを構築しようとしていますが、奇妙なことに気付きました。
以下のコードが、マークされた NOP コマンドを使用せずに NASM または Yasm でアセンブルされると、次の CALL がバイナリから欠落します。NOP が含まれていると、CALL は正しくアセンブルされますが、op コード 0x90 (NOP) はバイナリに存在しません (NOP の性質により、後で理解できます)。