問題タブ [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.
assembly - '.set noat' は MIPS アセンブリでサポートされていませんか?
現在、私は GNU as を学んでおり、"info as" で多くの有用な情報を見つけています。
".set noat" が MIPS 指定のコードで使用されていることがわかりましたが、"info as" でこのディレクティブを検索すると、ノード "alpha ディレクティブ" でその説明が見つかりましたが、"MIPS Dependent Features" では見つかりませんでした。なんで?マニュアルで何かを見逃しましたか?
ティア
assembly - アセンブラ関数の間違った戻り値 (x86)
アセンブラーのプログラミングには Intel x86 を使用しています。2 つの変数 (int) があり、アセンブラー関数が最大のものを返すようにします。私は C プログラムでアセンブラ関数を呼び出し、これを main() 関数 (1,5) に入れました。
アセンブラコードは次のとおりです。
最大数は %eax (movl var2, %eax) になります。問題は、関数が常に %eax で最初の数値を返すことです。たとえば、function(1,5) は "5" ではなく "1" を返します。
結果が間違っている理由がわかりません。
編集:あなたの返信のおかげで、私はあなたのアドバイスのおかげでプログラムを修正しました:
に戻るにfunction()
は を使用しますjmp
が、正しいですか? それは正常に動作します。
また、このコードを改善するにはどうすればよいですか? 変数を使用するのは、目的が 3 つの数値を持ち、中央値を見つけることだからです。
string - 文字列と asm x86
私はasmが初めてで、文字列を使用しています。
1/文字列があり、最初の文字のアドレスを返したい。(私は C メインで asm 関数を呼び出します)。
私はもう試した :
私によると、文字列を返します。
movl $(str), %eax
文字列の最初の文字のアドレスを返しますか? 文字列の 2 番目の文字のアドレスを返したい場合、asm でそれを行う方法がわかりません。
私はそのようなCプログラムで結果を表示します:
「string : programmation, address : 134520852」が返ってきます。「134520852」はアドレスではなく、何かわからないことがあると思います。
%edi
2/文字列に 、および 関数があるのを見たことがありますが、%esi
それを使用した適切な (簡単な) チュートリアルが見つかりません。%edi はインデックス ソース、%esi はインデックス先であることを理解しました...それに関するリンクをいくつか知っていますか?
前もって感謝します !:-)
xcode - Xcode/gcc で使用するために ARM アセンブリ コードを 32 バイトまたは 64 バイトに揃える方法は?
32 またはできれば 64 バイトの境界に揃える必要があるアセンブリ コードがあります。
私には 2 つのシナリオがあります。関数の先頭を揃えるか、アセンブラーにノーオペレーションを自動的に挿入させてループの先頭を揃えます。
これらは可能ですか?
どうもありがとう。
assembly - asm プログラムでの再帰
セグメンテーション違反を返す asm (x86 / GAS) プログラムについて質問があります。フィボナッチについてです:アルゴリズムは大丈夫だと思います:(疑似コード)
エラーになる理由がわかりません。AC プログラムは asm 関数を呼び出します。
コードは次のとおりです。
segfault の場所を見つけるのを手伝ってくれませんか?
ありがとう !
PS: ここに ret があります:
arm - ARM-GAS: c ファイルで定義された静的配列のアドレスをロードする方法 (PIC および通常のコード)
C ファイル ( const int data_input[1024]; ) で定義されたいくつかの単純な静的配列があり、アセンブリ コードからアクセスする必要があります。それを行う正しい方法は何ですか?
これまでのところ、私はこのようにしてきました:
私の知る限り、 adr はldr r1、= data_input_ptrまたはそのようなものに対する疑似操作です。
私のやり方はあまり正しくないようです。まず、 adr r1, data_input は、リンク時に可能であることが検出された場合、PC 相対アドレス指定を直接使用する可能性があります。もう 1 つの問題は PIC に関するものです。コードが位置に依存しない必要がある場合はどうでしょう。ローダーによって data_input_ptr の値を初期化する必要がある場合、どのように機能しますか (私はそれについて正しいですか?)
assembly - アセンブリ内の複数の引数
このような複数の引数は x86 アセンブリで何をしますか? たとえば、次の 2 つの指示があります。
mov -0x4(%edi,%esi,4),%eax
lea (%edi,%esi,4),%ebx
すべてのアセンブリ コードを投稿するのは気が進まないのです。これは大学のプロジェクトのためのものであり、私の教師はおそらく私がこれをオンラインに投稿することを望んでいないからです。どんな助けでも感謝します。
c - ARMアセンブリからC関数を呼び出す方法は?
私はAndroidデバイス上のARMCortex-Aをターゲットとするコードを(GNUアセンブラとコンパイラを使用して)作成しており、AssemblyとCの間のインターフェイスを試みています。特に、AssemblyからCで記述された関数を呼び出すことに興味があります。.extern
ディレクティブやC関数の宣言asm
など、いろいろ試してみ__asm__
ましたが、どれもうまくいかなかったので、最小限の例を探しています。そのような例への参照も同様に歓迎されます。
64-bit - 64ビットのGASのチュートリアル
64ビットシステムのAT&T-Syntaxでコードをコンパイルおよびリンクするための情報を見つけることができるGASのチュートリアルを知っている人はいますか?大学で必要なので、代わりにnasmを使うことはできません。私が見つけることができるすべてのツチは、nasmまたは類似のものであるか、32ビットでのみ機能します。私たちの教授が示した最小限の例でさえ、私の32ビットシステムでは機能しますが、64ビットでは機能しません。