Почему регистры процессора в OllyDbg не отсортированы по алфавиту? - PullRequest
4 голосов
/ 21 февраля 2011

В OllyDbg в окне регистров, среди прочего, перечислены стандартные процессорные регистры:

EAX
ECX
EDX
EBX

Есть ли конкретная причина, по которой EBX отображается последним?

Ответы [ 4 ]

7 голосов
/ 21 февраля 2011

Это, вероятно, та же самая причина, по которой они упорядочены таким образом в инструкциях процессора.При указании 32-битного регистра, eax равно 0, ecx равно 1, edx равно 2, ebx равно 3, esp равно 4, ebp равно 5, esi равно 6 и edi равно 7. Intel использует этот порядок с момента запуска X86архитектура.

2 голосов
/ 21 февраля 2011

Я предполагаю, что это потому, что EAX, ECX и EDX используются в качестве чистых регистров функциями как в cdecl, stdcall, так и в других соглашениях о вызовах , то есть они не сохраняются после вызовов функций.Помимо остальных регистров, в качестве указателей используется специальное указание, которое задокументировано в Руководстве разработчика Intel (2,36 МБ PDF) .Это только мои два цента.

1 голос
/ 23 февраля 2011

Поскольку я уже много лет занимаюсь реверс-инжинирингом с ollydbg, я могу сказать, что при отладке это важная последовательность.Экс используется везде из-за его природы.Он получает возвращаемые значения, он часто используется.Тогда ecx и edx одинаковы, я бы сказал.Инструкции, такие как loop, repsb и подобные, используют ecx, в то время как div, muls и другие используют edx.Более того, когда мы программируем на ассемблере, мы часто используем eax, edx и ecx.Esi и edi также иногда используются, в основном в повторяющихся строковых функциях или в качестве вторичных регистров в некоторых случаях.

Я полагаю, что причиной порядка является то, как Intel использует порядок, но это было бы действительностранно иметь esi поверх моих регистров ollydebug, так как eax используется везде.Таким образом, он также имеет эргономическую точку: D

0 голосов
/ 23 февраля 2011

PUSHAD - это инструкция, которая дала мне больше понимания этого вопроса. Он помещает в стек значения EAX, ECX, EDX, EBX, оригинальных ESP, EBP, ESI и EDI. Скорее всего, это причина, по которой OllyDbg сортирует их в таком порядке в представлении регистров. Описание PUSHAD можно найти здесь .

...