Сделать EAX = 1, используя два байта (Intel) - PullRequest
0 голосов
/ 27 июля 2011

Этот вопрос может показаться странным, но он необходим для внедрения кода в двоичный файл.

Можете ли вы придумать способ сделать eax равным 1, не завися от содержимого, такого как флаг переноса или других, других регистрови т. д.

Но только в 2 байтах.3 легко, и это может быть сделано многими способами, но может ли это быть сделано с 2?

Ответы [ 2 ]

5 голосов
/ 27 июля 2011

Я подозреваю, что вы имеете в виду 2 байта, а не 2 кода операции.Если вы действительно имеете в виду 2 кода операции, то на ум приходят следующие 3-байтовые альтернативы:

  xor eax, eax
  inc eax

  sub eax, eax
  inc eax

Я не могу сразу думать о двухбайтовой последовательности, которая бы выполняла эквивалент - я подозреваю, что нет.

2 голосов
/ 27 июля 2011
mov $1, %eax
nop

Достаточно хорошо для тебя? :)

Если вы действительно имели в виду два байта, а не два кода операции, у вас могут возникнуть трудности с этими ограничениями. Я бы посмотрел на окружающий код, чтобы посмотреть, есть ли что-то, чем вы можете воспользоваться (например, выполнить код в середине другого кода и т. Д.). Или найдите способ получить больше места для кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...