問題タブ [gnu-assembler]

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.

0 投票する
2 に答える
1878 参照

c - GCC で別のアセンブラー (MASM、NASM、TASM など) を使用する

私はこことインターネットに関する質問をしばらく見てきましたが、GAS 以外のものを使用して GCC でインライン アセンブリを実行できるかどうかを確認できないようです。GAS の AT&T 構文 (ただし、GAS で Intel 構文を使用する方法は知っています) だけでなく、拡張 asm 形式の使用を避けることができるかどうかを見つけようとしています。これはプロジェクトや私自身の好奇心以外のものではありませんが、私が得ることができるどんな助けにも本当に感謝しています (私はそれについて答えを見つけることができなかったので、これは実際にここでの最初の質問です)! また、これが違いを生む場合、私は現在 Windows で DevC++ (C++ ではなく C コード用) を使用しています。

ありがとう、トム

0 投票する
1 に答える
1125 参照

sorting - 宿題のヘルプ - GNU アセンブラー選択ソート問題

ユーザーの入力を最大配列サイズとして受け取り、ユーザーにそのサイズの配列を作成させるプログラムをアセンブリで作成する必要があります。その値を最大 1000 個の配列項目 (すべて int) にバッファーすることになっています。次に、配列で選択ソートを実行して出力する必要があります。

IBM Web サイトで次の選択ソートを見つけました。

私はそれを経験し、何が起こっているかの 90% を理解できるので、満足しています。どこから始めればよいのかわからないのは、ユーザー入力を取得してそれを使用して配列を作成する方法です。また、バッファを使用して配列サイズに制限を設定するにはどうすればよいですか? どんな助けでも大歓迎です!

0 投票する
2 に答える
1004 参照

gcc - 関数としての GCC 呼び出しラベル

すべてはタイトルにあります。いくつかの理由で、私はこのようにしなければなりません。

しかし、コードをコンパイルすると、GCC (または GAS など) に次のエラーが表示されます。

.../Temp/cc1C1fjs.s:19: エラー: 絶対ジャンプでは即値オペランドが不正です

コード:

ラベルのアドレスをエントリ ポイントとして指定する CreateThread 関数 (私は Windows の下にいます) を使用してスレッドを作成しようとしたため、これが機能するはずであり、完全に機能するはずです。では、コンパイラがこの構文を受け入れるようにするにはどうすればよいでしょうか? または、それを行うための別の方法がありますか?

0 投票する
1 に答える
434 参照

c - asmで配列にアクセスするにはどうすればよいですか?

greet[0]のようなレジスタに移動するにはどうすればよい%eaxですか?

私の推測:

しかし、メモリエラーが発生しています。

0 投票する
1 に答える
264 参照

assembly - ASM 実行フローに関する質問

ASM 実行フローを解釈する方法がわかりません。これまでに調べたすべてのファイルには、ASM ファイル内のラベルへの明示的なジャンプ (Intel x86 AT&T 構文、つまり jmp または jl) がありました。

私の質問: 他のラベルへの明示的なジャンプなしでラベルの最後に到達するとどうなりますか。実行は次のラベルに続くか?

例:

「foo」ラベルの下でオペコードを実行した後、アセンブラは「nextLabel」に移動しますか?

前もって感謝します!

0 投票する
1 に答える
2031 参照

gcc - 条件付きアセンブリ中にプリプロセッサにフラグを渡す方法

次のコードの「_DBGR_ON_」のように、Makefile で定義された特定のマクロをプリプロセッサに渡し、それに応じてコードがアセンブルされるようにしたいと考えています。このオプションは、makefile で -D_DBGR_ON_ で定義し、Assembler フラグとして含めることにより、diab コンパイラ (powerpc 用の c クロス コンパイラ) で機能します。しかし、それをGCCに含める方法。

同じことをすると (ASFLAGS = -mregnames -D_DBGR_ON_.)、エラーが発生しました: 認識されないオプション `-_DBGR_ON_'

次に、ASFLAGS = -mregnames -D _DBGR_ON_ を試しましたが、「読み取り用に _DBGR_ON_ を開けません: そのようなファイルやディレクトリはありません」というメッセージが表示されました

-D オプションは GCC では無視されるため、助けてください。

-D オプションを使用して条件付きアセンブリを実行し、Diabでコンパイルしました。GCCでそれを行う方法。私はここで立ち往生しています。

よろしく、トゥラシ

startup.s ファイルの内容...

.......等々..

0 投票する
1 に答える
538 参照

assembly - mov 0、%eax の x86 アセンブリでのセグメンテーション違反

x86コードの小さな部分を組み立てようとしています。私は 32 ビット マシンを使用しており、次のコードを記述しました。値を eax に追加してから返す必要があります。出力がないことを認識しています。これを使用してコンパイルすると

gcc main.S -o main

エラーなしでコンパイルされます。しかし、それを実行すると、セグメンテーション違反が発生します (gdb は、最初の movl 命令でセグメンテーション違反が発生すると主張しています)。main.S には次のコードが含まれています。私は何を間違っていますか?

0 投票する
2 に答える
5401 参照

assembly - GASで定数を置換するマクロ

X86 GNUアセンブリのそのマクロの何が問題になっていますか?リンク中はシンボルSが未定義であると表示されます。

私はそれを次のように使用しています

0 投票する
1 に答える
178 参照

unix - GAS でスタックを初期化する必要がありますか?

ハロー!現在、組み立ての基礎を学んでいます。以前は、TASM と Intel-syntax を使用していました。そこで、いくつかの方法でスタックを初期化する必要がありました。しかし、今は GNU Assembler と AT&T 構文を使用しています。多くの例を調べましたが、スタックの宣言/初期化は見られませんでした。やらなきゃいけないのかな?それとも、ここで私の手を借りずに作ったのでしょうか?もしそうなら、それはどのように正確に自動的に初期化されますか? データ セグメントで重要な情報をこするリスクはありますか? スタックに関するディレクティブにも気づきませんでした。

事前にご回答いただきありがとうございます。ああ、もう 1 つ。Unix ライクなシステム用の ASM (GAS) でのプログラミングに関する良い本はありますか?

0 投票する
4 に答える
34091 参照

linux - ガスでアセンブルするときのプッシュの無効な命令サフィックス

GNU アセンブラーでファイルをアセンブルすると、次のエラーが発生します。

hello.s:6: エラー: 「プッシュ」の無効な命令サフィックス

組み立てようとしているファイルは次のとおりです。

ここで何が問題で、どうすれば修正できますか?

質問のエラーと指示は異なりますが、問題はこの質問に多少関連しています。