問題タブ [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.
linux - (スタック上の)グローバル変数またはローカル変数へのscanfの使用、32ビット呼び出し規約
次のコードが与えられます:
出力は「HelloWorld!」になります。
今、私はユーザーから番号を取得し、それを画面に印刷しようとしましたが、それは機能しません(コードコンパイル、しかし私は何か間違ったことをしました)。私の間違いはどこにありますか?
assembly - NASM (Intel) と AT&T 構文の比較: 利点は何ですか?
Intel プロセッサのドキュメントを読みながら、基本的なアセンブリ コードをいくつか書いています。nasm
サーバーにとas
(GAS) の両方があり、両方のアセンブラの基本的な違いを理解しています。
長い目で見れば:
- これらの構文のどれに焦点を当てるのがより良い考えですか?
- これらの構文の長所と短所は何ですか?
- どちらがより広く使用され、理解されていますか?
また、お好みを教えていただければ幸いです。
assembly - 組み立て説明書
私はこれを正しく読んでいることを確認したいだけです:
最初の行を次のように読み取ります: edx = [epb + 12]
、2 行目を次のように読み取ります。eax = edx + edx*4
誰でも明確にできますか?
また、次の 2 行がある場合はどうなるでしょうか。
2 行目が実行されると、eax
レジスタは上書きされますか?
そして、eax = edx + edx*4
アドレスに4を掛けていますか?それとも4によるアドレスの内容?
assembly - x86リー命令
x86 の LEA 命令をよく理解しようとしています。
これらの2行を考えると、私はそれを知っています:
eax = edx + edx*4
その後
eax = edx + edx*2
2 つの質問です。まず、これらの命令がこの例のように順番に表示される場合、2 行目が実行されると eax レジスタが上書きされますか? そして、正確には何がレジスタにロードされるのでしょうか? 別の住所?それとも、これらのレジスタが指す値に対して算術演算を行っているのでしょうか?
assembly - プロテクトモードに切り替えた後の「呼び出し」
Intelx86でプロテクトモードに切り替えようとしています。
gdtにlgdtをロードし、cr0のPフラグを1に設定し、すべてのセグメントセレクターを設定しましたが、関数呼び出しから戻ると、他の関数を呼び出すことができないか、このエラーが発生します
これが私のswitch_to_pmode関数です:
そして私の電話
ありがとうございました
assembly - x86アセンブリでは、ドル($)とパーセンテージ(%)の記号は何を表していますか?
マイクロコンピューターアーキテクチャクラスでアセンブリ言語がどのように機能するかを理解しようとしていますが、例ではさまざまな構文に直面し続けています。
これらのコードはどういう意味ですか?espレジスタに追加された32オペランドは何ですか?
assembly - x86-64 AT&Tアセンブリで、アドレスの前のアスタリスク*はどういう意味ですか?
次の行はどういう意味ですか?
メモリアドレスの前のアスタリスクはどういう意味ですか?また、メモリアクセスメソッドに最初のレジスタ値がない場合、それはどういう意味ですか?
通常は( "%register"、%rax、8)のようなものですが、この場合、最初のレジスタはありません。
任意のヒント?
linux - x86: 割り込みハンドラ ループ
IDT を介してカーネル割り込みを処理しようとしています。Linux で Intel x86 を使用しています。
IDT と割り込みエントリを設定し、いくつかのテストを開始して割り込みハンドラを表示しました。
試してみるとint $0x0
、完全に機能します。ハンドラーが呼び出されますが、エラーコードがプッシュされた状態で例外を試すと、無限ループに入ります。
スキーマは次のとおりです。
例外が到着すると、ハンドラーの最初の部分は ASM にあり、共通の C 部分を呼び出します。
my_handler.c
my_handlers.S
次のコードを実行しようとすると:
動作し、実行が再開されます*a = 42;
しかし、私が試してみると:
それは無限ループに入ります:
最初の例外 Page Fault(14) が処理され、次に General Protection(13) でループされるのはなぜですか?
回答ありがとうございます。
assembly - IA-32 AT&T 構文で MOVZBL 命令は何をしますか?
この指示は正確に何をしますか?
assembly - 構文定数 (レジスタ) とはどういう意味ですか?
Intel x86 アーキテクチャの AT&T 構文を学習していますが、次の構文の意味については少しわかりません。
- 低木 $1, 2(%esp)
- 増分 2(%esp)
私の最初の解釈は次のとおりでした。
- esp = (esp + 2) >> 1
- esp = esp + 2
このように増加を使用するための参照を見つけることができないため、ここではもっと根本的な欠陥があると思います。
私の解釈は正しいですか、それとも完全に的外れですか? お時間をいただきありがとうございます。