Этот вопрос касается флага четности. Я не могу понять разницу между JP и JPE или JNP и JPO. Было ли это просто другое имя для каждого или у него была какая-то разница?
Разница между JP и JPE или JNP и JPO на ассемблере
comment
@Hovercraft Этот вопрос очень близок, но он спрашивает о знаках / переносах флагов; варианты перехода с четностью никогда не упоминаются, кроме как в таблице.
- person Jonathon Reinhart   schedule 21.08.2018
Ответы (1)
Для данной инструкции перехода (размера) есть только два условия флага четности, которые она может проверить. Как вы уже догадались, у каждого из них по два имени:
7B cb JNP rel8 Jump short if not parity (PF=0).
7A cb JP rel8 Jump short if parity (PF=1).
7A cb JPE rel8 Jump short if parity even (PF=1).
7B cb JPO rel8 Jump short if parity odd (PF=0).
Справочник по набору инструкций x86 — Jcc (c9x.me)
Вы можете видеть, что JNP
и JPO
являются одной и той же точной инструкцией (7B
), как и JP
и JPE
(7A
).
person
Jonathon Reinhart
schedule
21.08.2018
Не уверен, почему за этот очевидно правильный ответ проголосовали против.
- person Jonathon Reinhart; 21.08.2018
Большое спасибо! Вы решили мою проблему. Я просто не могу понять, почему у инструкции два имени. Я узнал, что причина, по которой были установлены JZ и JE, заключается в том, что они имеют разные предпочтения в использовании или другое значение для ПОЛЬЗОВАТЕЛЕЙ. Но JP и JPE не имеют смысла устанавливать. В любом случае, спасибо. @Jonathon Reinhart
- person vio1etus; 21.08.2018
@JackZhang по той же причине ... JPE читает скачок, когда четность четная, а JP - скачок, когда четность установлена ... если вы не пишете тонны сборки x86, вам может быть легче вспомнить JPE, чем вспомнить, если PF равен 1 или 0, когда младшие 8 битов результата имеют четность (также, если вы ожидаете, что реализация HW просто
xor
8 бит и поместит результат в PF, вы на самом деле догадаетесь неправильно, PF=1 для четной четности, поэтому в него xor
добавлена дополнительная 1). Так что в этом аспекте использование JPE
легче запомнить. OTOH, если вы действительно просто хотите знать, если PF = 1, JP
..
- person Ped7g; 21.08.2018
Точно так же
JB
, JC
и JNAE
— это одна и та же инструкция, включающая флаг переноса.
- person Weather Vane; 21.08.2018