1

オプション:

  1. jz
  2. jnz
  3. jc
  4. jnc

私はこの質問に対する答えを持っていますが、それが何を求めているのかを正確に理解するのに苦労しています. それは何を意味し、このトピックをブラッシュアップするための良い方法は何ですか? ありがとう。

4

1 に答える 1

2

主に x86 の命令セットを使用しましたが、8080の命令セットでも十分近いようで、ジャンプ命令は同じです。

x86 (または 8080) では、C コードが次のようになっている場合

if (a != b)
{
    code1
}
code2

コンパイラは通常、次のようなアセンブリ コードを生成します。

    cmp a, b
    jz label2

    code1

label2:

    code2

疑似コードで

  1. 比較aしてb
  2. 等しければ 4 へ (スキップcode1)
  3. code1
  4. code2

最適化コンパイラはコード レイアウトを変更する可能性があります (場合によっては大幅に変更されるため、どちらcmpも表示されませんjz)。ただし、それを予測することはできないため、最適化や再配置が行われていないと想定するのが最善の方法です。

于 2017-01-10T10:27:05.037 に答える