問題タブ [att]
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 - アセンブリ(、%eax、4)
コマンドラインの1つに次のように表示された場合:
どういう意味ですか?最初のコンマの前に値がなく、アドレスの前の*が何を意味するのか正確にはわからないため、具体的に質問します。
assembly - 組み立て中のヘビゲーム
小さな IA32 ゲーム (AT&T) を作ろうとしていますが、現時点で直面している問題は、ヘビの体と「りんご」を衝突をチェックできるようにする方法/場所がわからないことです。ヘビのサイズは常に増加しているため、コンテナーを動的に割り当てる必要がありますか?
高水準言語では、2D ベクトル/配列/リンク リストなどを使用して座標を格納し、移動後に比較します。
どんな提案も大歓迎です。
(同様の質問を見ましたが、私の質問には答えられませんでした)
assembly - AT&T スタイル アセンブリ コードを Visual Studio および Intel スタイル シンタックスに移動するにはどうすればよいですか?
Linux 用の x86-64 アセンブリで記述され、GCC でコンパイルされた非常に特殊なファイルがあります。そのコードを Visual Studio プロジェクトに移動する必要があり、mll64.exe はアセンブリ ファイルを Intel 形式にする必要があります。
クロスプラットフォーム DLL をビルドしようとしましたが、うまくいきません:
15:47:19 cpudiag2 > gcc -共有 -o my.dll my.o
/usr/bin/ld: my.o: 再配置 R_X86_64_32S は、共有オブジェクトを作成するときに「ローカル シンボル」に対して使用できません。-fPIC で再コンパイル my.o: シンボルを読み取れませんでした: 不正な値 collect2: ld が 1 つの終了ステータスを返しました
15:47:19 cpudiag2 > gcc -fPIC my.S
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: 関数 `_start' 内: (.text+0x20): 未定義の参照「メイン」collect2 へ: ld は 1 つの終了ステータスを返しました
そこで、GCC にオブジェクト ファイルから Intel 構文に逆コンパイルさせようとしましたが、それもうまくいきません。次の 2 つのコマンドは両方とも、AT&T 構文で逆コンパイルされたアセンブリ コードになります。なんで?
objdump -d -M=intel my.o
gcc -S -masm=intel my.o
assembly - テストのポイント %eax %eax
私はアセンブリ言語プログラミングに非常に慣れていません。現在、バイナリから生成されたアセンブリ言語を読み取ろうとしています。走ってきた
またはtest %rdi, %rdi
、などなど。これが何をするのか、私は非常に混乱しています。値が%eax, %eax
同じではありませんか?それは何をテストしていますか?操作を行っていることをどこかで読みましたAND
.....しかし、それらは同じ値であるため、単に返され%eax
ませんか?
以下は、この使用法を見つけた 1 つの例です。
je
比較する 2 つの値が等しい場合にジャンプする と思ったのですが……そうですね%eax
、それ自体、どのような状況でジャンプしないのでしょうか?
プログラミング初心者なので、どなたか教えていただけるとありがたいです。ありがとう!
assembly - このアドレスの解釈方法 -0x80(%rbp,%rax,4)
私は現在、単純な C コードの断片を分析することによって、アセンブリ言語 (およびさまざまなコンパイラ オプションの効果) を学ぼうとしています。今、私は次の指示に出くわしました:
私が理解していないのは、ターゲットアドレスの式です-0x80(%rbp,%rax,4)
。この命令は、ループ内でローカル配列に値を代入します。
assembly - NASMのORGに相当するGnuAS
NASMのORG(origin)ディレクティブとGASの同等のディレクティブは何でしょうか?
編集:すべてへの警告:.org
はoriginディレクティブではなく、代わり00
に、指定されたアドレスまでのアセンブルされたファイルを埋めているようです。
assembly - 組立リールと可動域の差
私がコンピューター システムの本から読んでいたように、$eax に x の値が含まれ、%ecx に y が含まれているという前提がある場合、上記は x+4y を %edx に入れることを意味します。
もしそうなら
、それなら上記のリアルな表現と同じではありませんか?
私が知っているように、leal は movl のようにそれ自体を参照するのではなく、参照可能なアドレスを作成しますが、
leal(%eax,%ecx,4), %edx
equals が登録されx+4y
ているのを見たとき、 %eax %ecx` は計算を使用するために値 x と y を抽出しましたか??edx
t it mean that it 'referenced'
and
- 「()」は「参照された」という意味ですよね??
assembly - アセンブリ at&t は、ユーザーから 2 つの異なる int を取得し、それらを出力できません。2番目の数字を2回印刷する
入出力例:
これはメモ付きのコードです!
bison - yacc を使用して while ステートメントを c からアセンブリに変換する
単純な while ステートメントを C 言語 (ANSI 89 としましょう) からアセンブリ at&t に変換するプログラムの yacc ソース ファイルを作成しようとしています。以下は私の文法であり、yacc ファイルの中心部分です。
私の質問は次のとおりです。最終的な文字列の値を連結するために使用する関数はどれですか? または、どの種類のデータ型、構造体、共用体などを使用する必要がありますか? 回答ありがとうございます。
assembly - アセンブリ (AT&T 32 ビット) scanf に関する質問
Assembly で次の C コードを記述します。
まず、スキャン/印刷する整数を 1 つだけ使用してみました。
しかし、うまくいきませんでした。何らかの理由で、次のトリックが機能しました(printfの前に追加されました):
pushl 4(%esp) が機能する理由がわからないので、最初の質問でその点について説明を求めています。次に、2 つの変数を使用して同じことを試みました。
しかし、それはセグメンテーションエラーを引き起こしました。次のようなことを試みたであろうprintf部分にも到達しませんでした:
(以前の pushl 4(%esp) と同じロジックに従います。私の 2 番目の質問は、2 つの変数で機能させるにはどうすればよいかということです。ありがとう!
編集: 2 つの変数をスキャンするために次のコードが機能しないのはなぜですか?