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

assembly - i386アセンブリの質問:なぜスタックポインタをいじる必要があるのですか?

夏休みにx86アセンブリを学ぶのは楽しいだろうと思いました。それで、私は非常に単純なhello worldプログラムから始めました、無料の例を借りるgcc -Sことは私に与えることができました。私はこれで終わった:

コンパイルして動作します!そして、私はそれのほとんどを理解していると思います。

ただし、手順3で魔法が発生します。この行を削除するputsと、スタックエラーの呼び出しとxorスタックエラーの間にプログラムが停止します。そして、私$20が別の値に変更すると、それもクラッシュします。veryそれで、この値が重要であるという結論に達しました。

問題は、それが何をするのか、なぜそれが必要なのかわからないということです。

誰かが私を説明できますか?(私はMac OSを使用していますが、それが問題になることはありません。)

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

assembly - GNU GAS マクロ引数を他のトークンと連結して単一のラベルを作成する方法は?

ガス マクロを使用して、アセンブリ関数で一連のラベルを動的に作成したいと考えています。私はこのようなことをしたいと思います:

ここで、\prefix_\item は myfunction_7 のようになります。現在、再帰呼び出しの例をたくさん見つけることができますが、渡されたマクロ引数を含む単なるラベル連結の例は見つかりませんでした。ガスについては文書化されていないため、この質問に答えるのは私には困難です。

  1. マクロへの引数を他のトークンと連結して単一のトークンを作成できますか?
  2. お気に入りのガス アセンブラーのリファレンスは何ですか?
0 投票する
3 に答える
13330 参照

assembly - "(x+y*240)*2" のような式に展開される GNU GAS マクロを作成するには?

GAS を使用して ARM Linux 用のプログラムを作成していますが、開発をよりスマートにするためにいくつかのマクロを実行したいと考えています。それから私は知りたい:

(x+y*240)*2this: 、 werexおよびyareのマクロを作成するにはどうすればよいですか。これは次のintように使用されます。

そして、次のように呼び出されるマクロをどのように実行できますか:

たとえば、印刷関数など、その内部で既に定義されていることを行うだけです。

また、マクロまたは関数呼び出しでいくつかの引数が必要な場合。どうすればそれができますか?

PS:x86のr0ようなARMレジスタですeax

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

assembly - 64 ビット アセンブリ プログラムで RIP 相対アドレス指定を使用する方法

AMD64 アーキテクチャーの Linux アセンブリー・プログラムで RIP Relative Addressing を使用するにはどうすればよいですか? AMD64 RIP 相対アドレッシング モードを使用する簡単な例 (Hello world プログラム) を探しています。

たとえば、次の 64 ビット アセンブリ プログラムは、通常の (絶対アドレッシング) で動作します。

RIP Relative Addressing を使用する同じプログラムは次のようになると思います。

通常のバージョンは、次のようにコンパイルすると正常に動作します。

しかし、RIP バージョンを動作させることができません。

何か案は?

- - 編集 - -

Stephen Canon の回答により、RIP バージョンが機能します。

RIP バージョンの実行可能ファイルを逆アセンブルすると、次のようになります。

objdump -d こんにちは

これは、私が達成しようとしていたことを示しています: lea 0x10(%rip),%rsi は、Hello world 文字列が見つかるアドレス 0x400096 である lea 命令の 17 バイト後にアドレスをロードし、位置に依存しないコードになります。

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

gcc - インラインガスに関するドキュメント

Linux 0.01カーネルを読むとき、私が渡すインラインガスを投げますが、これはデコードするのが難しいです。

また

':'の間にあるものを解釈する方法がわかりません。

誰かがそれについてのドキュメントを手に入れましたか?

ありがとう

0 投票する
3 に答える
825 参照

iphone - GAS(GNUアセンブラ)はiPhone / iTouchにコンパイルできますか?

非公式のOpenSDKを使用してiDevice市場向けにいくつかのアプリケーションをプログラミングしていますが、LinuxではなくWindowsにオープンツールチェーンをインストールするのに問題があります(Linuxを使用しますが、仕事用のコンピューターにはインストールできません)。 GNUアセンブラ(GAS)。

GASが出力ファイルのフォーマットとしてiDeviceをターゲットにすることは可能ですか?そうでない場合は、iPod touchにアセンブルできるWindowsまたはLinuxベースのアセンブラー(できればオープンソース)はありますか?

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

assembly - gccを使用せずにC標準ライブラリを使用するガスアセンブリプログラムをldとリンクするにはどうすればよいですか?

cプログラムがどのように機能するか、およびプログラムがlibcを使用できるようにするために必要な最小レベルのコンテンツをより正確に学習するための演習として、私は主にgasとldを使用してx86アセンブリでプログラミングを試みることにしました。

楽しい小さな挑戦として、私はさまざまな自作のダイナミックライブラリにリンクされたいくつかのプログラムを正常に組み立ててリンクしましたが、gccを直接使用せずにlibc関数呼び出しを使用するようにプログラムを最初からコーディングすることはできませんでした。

個々のcライブラリ関数の呼び出し規約を理解し、objdumpとreadelfを使用してgccからコンパイルされたプログラムを徹底的に検査しましたが、ガスアセンブリファイルに含める情報と呼び出すパラメーターについてはどこにも到達していません。 ldでlibcに正常にリンクします。誰かがこれについて何か洞察を持っていますか?

x86マシンでLinuxを実行しています。

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

gcc - MIPS用のGNUアセンブラ:sync_ *命令を発行する方法は?

MIPS32 ISAは、同期命令に対して次の形式を定義しています。

ここで、stypeはSYNC_WMB(SYNC 4)、SYNC_MB(SYNC 16)などです。インラインアセンブラでは、デフォルトの同期を使用できます__asm__ volatile ("sync" ::);

しかし、私がのようなものを書いた場合__asm__ volatile ("sync 0x10" ::)、それはコンパイルされません:

Error: illegal operands 'sync 0x10'

-mips32r2オプションをgccに渡す場合も同じです。

したがって、問題は、GCCインラインアセンブリからのSYNC_ *(WYNC_WMB、SYNC_MB、SYNC_ACQUIRE、...)命令をどのように使用するかということです。

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

assembly - 32ビットLinuxアセンブリ-ファイルをリンクする(gasとld)

strlenという関数を作成しました。

私はこれを次のように組み立てました:

次に、これにリンクしたいargvを出力するプログラムをasmで作成しました。同じように組み立てました。次に、実際のプログラムでstrlenを使用できるように、それらをリンクします。私は試した:

しかし、それは次のようになります。

本当にシンプルなものが欠けているに違いありません。ありがとう!

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

linux - Linux でファイルを大文字に変換する x86 アセンブリ プログラムを作成するにはどうすればよいですか?

ProgrammingGroundUp-1-0-booksize.pdf という pdf ファイルを見つけました。プロジェクトの 1 つは、ファイルを取り込んで大文字に変換するアセンブリ プログラムを作成することです。

アセンブラは「as」という名前で、コードはファイルの87ページにあり、Googleで検索すると簡単に取得できます。また、コードは何らかの理由で正しくコピペされないため、時々表示されることがあります。次のようなもの: jmp to_another_point

できるだけ多くのコメントを削除しようとしましたが、まだいくつか残っている可能性があり、コメントの一部はおそらくその過程で失われたため、元の pdf ファイルを開くことをお勧めします。Ubuntu Linux バージョン 10.04.1 を実行しています。バージョン 2.20.1 として使用しています。問題は、ファイルが作成されることですが、ファイルは常に空です。