Исходная инструкция:
83 F9 05 cmp ecx, 5
Похоже, вы пытаетесь превратить это в постоянное сопоставление, что-то вроде:
83 05 05 cmp 5, 5 ; not what you think it is!
Я сомневаюсь, что такой зверьдаже существует, так как его полезность была бы в лучшем случае сомнительной.Сравнение двух констант может показаться бесполезной тратой кремния.
То, что вы на самом деле изменили на это, - это инструкция, которая почти наверняка разыменует неверный адрес.В качестве первого варианта вы можете заменить эту трехбайтовую последовательность на ту, которая устанавливает нулевой бит (поскольку проверка нескольких инструкций является инструкцией jnz
), и дополнить ее достаточным количеством операций nop
, чтобы сделать ее одинакового размера.
В качестве альтернативы ищите оператор cmp ecx, ecx
(снова с соответствующим заполнением nop
), чтобы вы могли быть уверены, что все флаги установлены правильно.Это, по словам сборщика GNU as
:
39 c9 cmp %ecx, %ecx
90 nop