問題タブ [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 に答える
2006 参照

c - Linux 64ビットでのCとアセンブリ(32ビットコード)の組み合わせ

私は64ビットのUbuntuオペレーティングシステムを使用しており、32ビットのアセンブリを学習しています。私はこれらの2つのファイルをコンパイルしようとしています:

square.s:

main.c:

32ビット仮想マシンで、このコマンドを使用してコンパイルしました

そしてそれはうまくいった。私が抱えている問題は、これらのファイルを64ビットマシンでコンパイルしたいということです。これらのファイルをコンパイルするいくつかの方法を試しましたが、どれもうまくいきませんでした。誰かが私を正しい方向に向けることができますか?これを行うオプションはありますか?-m32を試しましたが、うまくいきませんでした。

私がこれをするとき:

私はこれを手に入れます:

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

assembly - GNU GASアセンブリの現在のアドレスを表す記号はありますか?

NASMの例のように、同じことを実現するための特別なGAS構文があるかどうか知りたいです。

$特に、現在の住所を表す記号に興味があります。

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

assembly - GASには、NASMの$トークンと同様に評価されるものがありますか?

私は議会の道を歩み始めたばかりで、最初の「Hello、World!」の1つです。私が見つけたチュートリアルhttp://asm.sourceforge.net/intro/hello.htmlは、システムコールに入力する文字列の長さを疑似動的に取得するための優れた方法を提供します。

これはnasmでうまく機能し、すべてが問題なく組み立てられ、リンクされ、実行されます。

問題は、私がガスで同じことをする方法を見つけようとするときに起こります。

この場合の$は、現在のアセンブリ位置http://www.csie.ntu.edu.tw/~comp03/nasm/nasmdoc3.html#section-3.5に評価されるトークンであることを理解しています。

この表現($ --msg)はガスで表現できますか、それともこのnasm専用のシンタックスシュガーですか?

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

debugging - デバッグ目的の gcc と as-ld 、gdb ブレークポイントでヒットしない

私のプラットフォームはubuntu i686(32ビット)です

デバッグ オプションを使用して gcc ドライバーを使用してアセンブリ ソースをコンパイルする場合:

emacsエディターに統合されたgdbデバッガーでtoupper実行可能ファイルを開きます

最初の命令でブレークポイントを生成しました

run コマンドで実行を開始すると、デバッガーは _start ラベルで正しく停止します。

同じソース toupper.s を as アセンブラーでコンパイルし、ld リンカーでリンクすると、次のようになります。

これで、デバッグの手順が gcc のケースと一致しました。

シンボル テーブルは正しく、ブレークポイントは正しいことを示していますが、実行は段階的に行われていません。

gcc ケースで詳細な手順を表示し、as/ld ケースで再試行しましたが、結果は同じです

as/ld ケースと一致しない gcc ケースのデフォルト オプションがありますか?

前もって感謝します

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

assembly - GNU アセンブラーのコンパイル エラー「インライン asm のオペランドが無効です」

ターゲットをARMプラットフォームとして、GNUアセンブラーを使用してアセンブリコードをコンパイルしようとしています。しかし、いくつかのエラーが表示されます。アセンブリ文法に慣れていません。

誰でもこのエラーを回避する方法を教えてもらえますか?

このコンパイル エラーの原因となったインライン asm コードは次のとおりです。

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

assembly - asm命令「ldr」と「ldr_post」の違いは何ですか?

最新のffmpegをiOSプラットフォームに移行しようとすると、いくつかのコンパイルエラーが発生しました。これらのエラーは、最新のffmpegで一部のasm命令を処理できないように見えるGNUアセンブラ(gas)から発生しました。

例えば:

ただし、命令'ldr_post'は、以前のバージョンのffmpeg(より具体的にはバージョン0.7)にはありません。

私の質問は、「ldr_post」と「ldr」の違いは何ですか?これらのコンパイルエラーを回避するために、「ldr_post」をいくつかのより単純な命令の組み合わせに変更できますか?

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

assembly - アセンブリ コードの .L2 ラベルに関連付けられたコードは、このセグメントで手続き的に呼び出されますか?

アセンブリで次のコードを分析しようとしています。

私の理解が明確であれば、最初の 6 行は正常に呼び出され、プログラムは .L2: にジャンプしてコードを実行します。R[eax] == R[40 + R[esp] の場合、コードは .L3 に移動します。

私の質問は、この後どうなるかです。.L3 が実行され、コードが .L2 の直後にあるためにコードが .L2 に移動しますか、それとも .L3 の実行後に最後の 2 行に自動的にジャンプしますか?

さらに、アセンブリ コードの読み取りに関するいくつかのヒントを使用できます。eax と edx の最終的な値を見つけようとしています。

ありがとうございました

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

c# - C# コードからアセンブリ コードを生成しますか?

C# コードからアセンブリ コードを生成する方法はありますか? GASを使用したCコードで可能であることは知っていますが、C#で可能かどうか知っている人はいますか?

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

gcc - ファームウェア パッチ用の ARM/Thumb コード...gcc アセンブラ/リンカに BL を絶対アドレスに伝える方法は?

ファームウェア mod を書き込もうとしています (ソース コードがない既存のファームウェアに) すべての Thumb コード。

gcc as(GAS)アセンブラーでこれを行う方法をBL知っている人はいますか:既存の関数にアクセスするときに、オフセットを手動で計算する必要なく 使用BLします(私のコードではありませんが、そのアドレスは知っています)

現在、使用したい場合BL...私は次のことをしなければなりません:-コードに戻ります-作成中の関数で以前のすべての命令をアセンブルした結果として生じるすべてのバイトを見つけて追加します-開始アドレスを追加します私の関数をそれに(リンカースクリプトで、私が書いているものの開始アドレスを指定します)-そして、呼び出したいfirmfunc関数のアドレスを減算します

このすべて...オフセットを計算するためだけに...blオフセットを書き込むことができるようにするために...既存のファームウェア関数を呼び出すために?そして、そのBLの前にコードを変更した場合は、手動でやり直す必要があります!
ほら..これが私が右の使い方を学びたい理由ですBX...代わりにBL

また、私はBXをよく理解していません。BX を使用して絶対アドレスにジャンプする場合、Thumb コードから Thumb コードを呼び出すときに (LSB バイトを 1 に保つため)、実際のアドレスを 1 増やす必要がありますか? CPU はそれが Thumb コードであることを認識しますか?

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

assembly - アセンブリ コードで 3 つ以上の変数を使用できないのはなぜですか?

私はアセンブリ、特にGNUアセンブリから始めているので、レジスタ、変数、値などをいじっていますが、3つ以上の変数を使用できないことに気付きました。最初に私はこれを書きました:

端末で試して動作しましたが、これを試しました

そしてこれはうまくいきませんでした。セグメンテーション違反エラーが発生しました。何が間違っている可能性がありますか?私は何をすべきか?