問題タブ [addressing-mode]
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 - x86命令「call dword ptr ds:[00923030h]」の意味は何ですか?
次の x86 アセンブラー命令は何をしますか?
これは間接的な呼び出しだと思いますが、呼び出しのアドレスを正確にどのように計算するのでしょうか?
assembly - mov命令が2つのセグメントレジスタの代わりにaxを直接使用するのはなぜですか?
次のようなコードが表示されます。
これを次のように圧縮できないのはなぜですか。
アキュムレータレジスタを使用してから最初の方法は高速ですか?しかし、csとdsはセグメントレジスタであるため、これは直感的には思えません。それとも私が気付いていない制限がありますか?
ちなみに私はnasmを使用しています。
assembly - AT&T構文での(%eax)の意味?
すみませんが、私は x86 アセンブリ、およびアセンブリ全般にまったく慣れていません。
だから私の質問は、私は次のようなものを持っています:
%eax は、整数へのポインタを保持するレジスタです。それをxpと呼びましょう
これは、次のように言っているということ*xp = *xp + %edx
ですか? (%edx
は整数)
addl が結果をどこに保存するのか混乱しています。%eax
が int へのポインタである場合(%eax)
、その int の実際の値である必要があります。の結果をaddl
保存%edx+(%eax)
し*xp
ますか?誰かにこれを説明してもらいたいです!
どんな助けにも本当に感謝します!
arm - ARM DA(Decrement After)アドレッシングモードの先頭アドレスは?
DA アドレッシング モードについて 2 つの質問があります。例えば:
R0 - (7 * 4) + 4
つまり、 ARM アーキテクチャのリファレンス マニュアルR0-24
によると、開始アドレスは になり、 end_address は になります。R0
そう:
- の値はまたは
R1
に保存されますR0-24
かR0
? R1
が に格納されている場合R0-24
、後続のストアはメモリの先頭に向かって (からR0-24
にR0
) 拡張されますか?
masm - MOVコマンドのMasm間接アドレッシングモード
私は次のフォームを試しましたが、masmはそれらのどれも好きではありません:
私は何が欠けていますか?なぜ間接アドレス指定を使用できないようです。
masmから得られるエラーは、一部の行で「式に演算子がありません」であり、一部の行には「構造体フィールドが必要です」と表示されます。
assembly - MOV (%r11,%r12,1), %edx の意味は?
この指示は何をしますか?
assembly - PDP-11アセンブラのアドレッシングモード
pdp-11(シミュレーター)について少し質問があります。このコマンド(アドレス1000から始まります)add 2500、#2500があります。
そしてこの最初のリスト:
そして、この小さなスニペットがどのように正確に実行されるかを知りたいのですが、私の小冊子で、最初にアドレス1000から情報を読み取り、このアドレス内に値066727があり、アドレス1002から番号を読み取った後、値は2500でなければなりません。 (add 2500
、#2500のため)、しかし私の小冊子には理由の説明がない1474があります、私はここに相対アドレッシングモードがあることを知っていますが、なぜ1474はアドレス1002の中にあり、2500ではありません、助けてくれてありがとう
cpu-architecture - ショートアドレッシングモードとロングアドレッシングモードの違いは何ですか
プロセッサアーキテクチャのいくつかのデータシートを調べているときに、短いアドレッシングモードと長いアドレッシングモードという用語を見ました。
誰かが私に用語の一般的な考えを教えてもらえますか(プロセッサ固有である必要はありません!)
/ renjith_g
c++ - ここでコンパイラによって生成されたアセンブリコードのアドレッシングモードはどうなりますか?
2つの整数変数と文字変数があるとします。
整数変数の長さが3バイト以上であるプラットフォームについて説明していると仮定すると、この整数の3番目のバイトにアクセスして文字変数に入れたいと思います。つまり、次のように記述します。これ:
そのコード行と、私がコンパイラまたはアセンブリの専門家ではないという事実を考慮すると、アセンブリのアドレッシングモードについて少し知っていて、3番目のバイトのアドレスについて疑問に思っています(または、オフセットと言った方がいいと思います) 3番目のバイト)ここでは、そのコード行自体によって生成された命令内にありますか、それともアドレス(またはオフセット)がそれらの命令内にある別の変数にありますか?
assembly - x86 オペコード エンコーディング: sib バイト
現在、逆アセンブラを作成しようとしています。次のオペコードとその意味のリストを見つけたので、実行時に解析することにしました 。
しかし、私はオペコード 0x00 で立ち往生しています。その後に reg/modbyte が続きます。それを解析することは、私にとってそれほど問題ではありませんでした。
しかし、Scale-Index-Base バイトに問題があり
ます。実際に esp をインデックス レジスタとして指定すると、実際にはインデックス レジスタがないことを意味します。
同じことが、ebp を使用したベース レジスタにも当てはまります。しかし、私はC++インラインアセンブラで試しました:コンパイルすることは可能です:
add [ebp*2+ebp],cl
では、ebp をベース レジスタとして使用することが実際にはベース レジスタをまったく使用しないことを意味する場合、どうすれば ebp をベース レジスタとして使用できますか!?