Для какой команды условного перехода 8080 сгенерирует компилятор if (a!= B)?

Опции:

  1. JZ
  2. JNZ
  3. х
  4. JNC

У меня есть ответ на этот вопрос, но я изо всех сил пытаюсь понять, что именно он спрашивает. Что это значит и что было бы хорошим способом освежить эту тему? Благодарю.

1 ответ

Я использовал в основном набор команд 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), но вы не можете предсказать это, поэтому лучшее, что вы можете сделать, это предположить, что не было никаких оптимизаций и перестановок.

Другие вопросы по тегам