問題タブ [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 投票する
4 に答える
34091 参照

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

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

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

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

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

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

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

linux - FreeBSD システムでの単純なアセンブリ プログラムからの偽の結果

Linux で作成した最も単純なアセンブリ プログラムでさえ、FreeBSD マシンで実行するのに問題がありました。問題のあるコードは次のとおりです(これをできるだけ単純にしようとしています):

Linux マシンは予期される結果である 60 を返しますが、FreeBSD マシンは戻りコードとして一貫して 164 を返します。これがなぜなのか誰か知っていますか?もしそうなら、何が起こっているのか説明してもらえますか?また、どちらも実際に x86 CPU を実行していることに言及する必要があります。前もって感謝します :)

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

assembly - cltq はアセンブリで何をしますか?

実際、私のプログラムは次のように単純です。

しかし、アセンブリの出力はかなり長いです:

私が理解していないのは、このブロックです:

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

c - GCC: 一部レジスタの使用禁止

変なお願いですが、出来る気がします。GCC のレジスタ アロケータがそれらを使用しないように、いくつかのプラグマまたはディレクティブをコード (C で記述) の領域に挿入したいと考えています。

このようなことができることを理解しています。これにより、この変数用にこのレジスタが確保される可能性があります

問題は、新しい命令 (ハードウェア シミュレータ用) を直接挿入していて、GCC と GAS がまだこれらを認識していないことです。新しい命令は既存の汎用レジスタを使用できますが、それらのいくつか (つまり、r12->r15) を確保したいと考えています。

現在、私はモックアップ環境で作業しており、実験を迅速に行いたいと考えています。将来的には、GAS を追加し、組み込み関数を GCC に追加しますが、今は簡単な修正を探しています。

ありがとう!

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

assembly - `movl(%eax)、%eax`の括弧はどういう意味ですか?

私は十分にグーグルで検索しましたが、角かっこが何()を意味するのか理解できませんでした。また、私はいくつかの構文を次のように見ていますmovl 8(%ebp), %eax

誰かが私にいくつかの良い参考文献を提案できますか?Googleの上位20件の結果から何も見つかりませんでした。

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

assembly - GNU GAS アセンブラーで nasm -f bin のような単純なバイナリーを生成する方法は?

一般的に次のような構造を持つ NASM ファイルがいくつかあります。

私はそれらを次のように組み立てています:

代わりに GAS を使用してこれらのいくつかを書きたいと思います。2 つの質問:

  • GAS ではどのディレクティブを使用する必要がありますか? 「.org」ディレクティブは見つかりましたが、GAS には「.bits」ディレクティブがないようです。

  • プレーン バイナリ ファイルを生成するには、gcc何を渡す必要がありますか? asつまり、-f binオプションが NASM で行うことです。

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

assembly - NASMからGASへ:equ'dシンボルの呼び出し

次の行があるNASMファイルがいくつかあります。

このbmdev.asmファイルには、次のようなequディレクティブがあります。

を含むファイルはbmdev.asm、それらのアイテムを呼び出すことができます。つまり

これをGASに変換する方法はありますか?私が直接翻訳をしようとすると、すなわち

それは正しいものに分解されていないようです:

NASM呼び出しは、次のように分解されます。

ここでの目標は、NASMではなくGASを介してBareMetalOSのバイナリを生成することです。

動作するバイナリの完全な逆アセンブル:

動作しないバイナリの完全な逆アセンブル:

この質問の(うまくいけば)より明確なバージョンを投稿しました。これを閉じます。

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

gcc - 古い32ビットGASコードを現在のGASアセンブラ(pushfl / popl)に変換する必要があります

私は現在のマシンで古いプロジェクトをコンパイルしようとしています。この古いプロジェクトが古い(2.x)バージョンのGCC / GASを使用していたことを知っているので、現在のバージョンでコンパイルできるようにクリーンアップする必要があります。

問題のコード:

gaspushflそれは指示ではないと文句を言います。私が読んだところによると、これは古い非推奨のGNUニーモニックですが、x86_64に相当するものがあるはずです。

pushflこのコードをx86_64ガスに変換する方法に答えるだけでなく、ニーモニックがどこでどのようにpushfq定義され、文書化されているかを誰かが説明できれば素晴らしいと思います。それがGASの作品だと確信しています...

注:これをgcc4.6.1とgas2.21でコンパイルしたい

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

assembly - GAS で eq'd シンボルを呼び出す

以下は小さな NASM プログラムです。

組み立てます:

それを分解します:

GASバージョンは次のとおりです。

組み立ててリンクします。

それを分解します:

ご覧のとおり、逆アセンブルされたコードはわずかに異なります。callNASMのコード:

対ガス:

GAS バージョンを適切に実装する方法について何か提案はありますか?

FASM のプログラムは次のとおりです。

それは正しいことをします: