1

选项:

  1. jz
  2. 关注
  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. 比较ab
  2. 如果它们相等,则转到 4(跳过code1
  3. code1
  4. code2

优化编译器可以改变你的代码布局(有时会彻底改变,所以你不会看到cmpnor jz),但你无法预测,所以你能做的最好的就是假设没有优化和重新排列。

于 2017-01-10T10:27:05.037 回答