Для какой команды условного перехода 8080 сгенерирует компилятор if (a!= B)?
Опции:
- JZ
- JNZ
- х
- JNC
У меня есть ответ на этот вопрос, но я изо всех сил пытаюсь понять, что именно он спрашивает. Что это значит и что было бы хорошим способом освежить эту тему? Благодарю.
1 ответ
Я использовал в основном набор команд x86, но кажется, что 8080 достаточно близок, поэтому инструкции перехода одинаковы.
В x86 (или 8080), если ваш код C выглядит так
if (a != b)
{
code1
}
code2
компилятор обычно создает ассемблерный код следующим образом:
cmp a, b
jz label2
code1
label2:
code2
В псевдокоде
- сравнить
a
а такжеb
- Если они были равны, перейдите к 4 (пропустить
code1
) code1
code2
Оптимизирующий компилятор может изменить макет вашего кода (иногда радикально, так что вы не увидите ни cmp
ни jz
), но вы не можете предсказать это, поэтому лучшее, что вы можете сделать, это предположить, что не было никаких оптимизаций и перестановок.