[解決済み] cmplとcmpの違いについて
2022-01-25 03:47:55
質問事項
パズルを解くために、アセンブリを理解しようとしています。しかし、次のような指示がありました。
0x0000000000401136 <+44>: cmpl $0x7,0x14(%rsp)
0x000000000040113b <+49>: ja 0x401230 <phase_3+294>
何をやっているかというと
の値は
0x14(%rsp)
は-7380です。私の理解では
cmpl
は符号なしを比較します。また、ジャンプも実行されます。
ということは、もしかして
(unsigned)-7380 > 7
--ジャンプ
実は、ジャンプしてほしくないのです。しかし、これは正しい説明なのか、そうでないのか。私は議論をひっくり返しているのでしょうか?
また、このジャンプの操作方法についてアドバイスがあればお願いします
どのように解決するのですか?
<ブロッククオート
私の理解では
cmpl
は符号なしを比較します。
ある意味、両方ができる。
符号付きと符号無しの違いは、ここではジャンプ命令の使い方です。
について
>
があります。
ja
は符号なし、そして
jg
を符号付きで表示します(上回ればジャンプ、大きければジャンプ)。
について
<
があります。
jb
は符号なし、そして
jl
は符号付き(以下ならジャンプ、以下ならジャンプ)。
正確には、いくつかのジャンプコマンドの意味は以下のとおりです。
<ブロッククオート符号なし比較の場合。
JB/JNAE (CF = 1) : Jump if below/not above or equal
JAE/JNB (CF = 0) : Jump if above or equal/not below
JBE/JNA (CF = 1 or ZF = 1) : Jump if below or equal/not above
JA/JNBE (CF = 0 and ZF = 0): Jump if above/not below or equal
符号付き比較の場合。
JL/JNGE (SF <> OF) : Jump if less/not greater or equal
JGE/JNL (SF = OF) : Jump if greater or equal/not less
JLE/JNG (ZF = 1 or SF <> OF): Jump if less or equal/not greater
JG/JNLE (ZF = 0 and SF = OF): Jump if greater/not less or equal
関連
最新
-
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 実装 サイバーパンク風ボタン