[解決済み] テストのポイント %eax %eax [重複]。
質問
重複の可能性があります。
x86アセンブリ - 'testl' eaxとeaxの比較?
私はアセンブリ言語プログラミングの超初心者で、現在バイナリから生成されたアセンブリ言語を読もうとしているところです。 私は、以下のものに遭遇しました。
test %eax,%eax
または
test %rdi, %rdi
などなど。これが何をするものなのか、私はとても混乱しています。 の値は
%eax, %eax
は同じですか? 何をテストしているのでしょうか? どこかで読んだのですが、それは
AND
という演算が行われますが、同じ値なので
%eax
?
以下は、この使い方を発見した一例です。
400e6e: 85 c0 test %eax,%eax
400e70: 74 05 je 400e77 <phase_1+0x23>
と思ったら
je
は、比較される2つの値が等しい場合にジャンプします......さて、なぜなら
%eax
では、どのような状況であればジャンプしないのでしょうか?
プログラミング全般が初心者なので、どなたか解説していただけると大変ありがたいです。 ありがとうございました。
どのように解決するのですか?
CMP
はオペランドを引き算し、フラグを設定します。すなわち、差分がゼロ(オペランドが等しい)であればゼロフラグを立てます。
TEST
はゼロフラグを設定します。
ZF
AND演算の結果が0であるとき。2つのオペランドが等しい場合、そのビット単位のANDは、両方がゼロのときにゼロとなる。
TEST
は符号フラグも設定します。
SF
最上位ビットが設定されている場合は,パリティフラグが設定されます。
PF
セットされたビットの数が偶数であるとき。
JE
[ジャンプ・イフ・イコールズ] ゼロフラグをテストし、フラグがセットされていればジャンプします。
JE
のエイリアスです。
JZ
[ゼロならジャンプ]なので、ディスアセンブラはオペコードに基づいてどちらかを選択することができません。
JE
の引数がゼロの場合、ゼロフラグが設定されるため、このような名前になっています。
CMP
は等しい。
だから
TEST %eax, %eax
JE 400e77 <phase_1+0x23>
は
%eax
がゼロの場合。
関連
-
[解決済み] cmplとcmpの違いについて
-
[解決済み] なぜ、addiではなくaddiuを使うのか?
-
[解決済み] MIPS srlを変数で指定
-
[解決済み] アセンブリのNEG
-
[解決済み] linuxのsys_readシステムコールを作ると、レジスタeaxに何が入るのでしょうか?
-
[解決済み] ベースレジスタを持たないqword ptr [hexvalue]の意味するところ
-
[解決済み] MIPSアセンブリ言語では、なぜ.globl mainを使うのですか?
-
[解決済み] Collatz予想の検証を行うC++のコードは、なぜ手書きのアセンブリよりも高速に動作するのでしょうか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み] 32ビットレジスタに対するx86-64命令は、なぜフル64ビットレジスタの上部をゼロにするのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】単純なforループのためのMIPSアセンブリ
-
[解決済み】MIPSで整数の絶対値?
-
[解決済み] ミップスアセンブリの文字列の長さ
-
[解決済み] CPUのParity Flagは何のためにあるのですか?
-
[解決済み] アセンブリ言語で数字をプリントアウトする?
-
[解決済み] .quadディレクティブはアセンブリでどのように機能するのですか?
-
[解決済み] オブジェクトファイルのシンボルテーブルとリロケーションテーブル
-
[解決済み] x86アセンブリで160x100モードを実現する
-
[解決済み] MIPS浮動小数点:SWC1対S.S.
-
[解決済み] eax に対して `testl` eax?