Почему регистры процессора в OllyDbg не отсортированы по алфавиту?

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

EAX
ECX
EDX
EBX

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


person Andrej Mitrović    schedule 21.02.2011    source источник


Ответы (4)


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

person Daniel Victoria    schedule 21.02.2011

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

person ughoavgfhw    schedule 21.02.2011

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

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

person Spyros    schedule 23.02.2011

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

person Andrej Mitrović    schedule 23.02.2011