В OllyDbg в окне регистров, помимо прочего, перечислены стандартные регистры процессора:
EAX
ECX
EDX
EBX
Есть ли какая-то конкретная причина, по которой EBX отображается в последнюю очередь?
В OllyDbg в окне регистров, помимо прочего, перечислены стандартные регистры процессора:
EAX
ECX
EDX
EBX
Есть ли какая-то конкретная причина, по которой EBX отображается в последнюю очередь?
Я предполагаю, что это потому, что EAX, ECX и EDX используются как временные регистры функциями как в cdecl, stdcall, так и в других соглашения о вызовах, то есть они не сохраняются после вызовов функций. Помимо остальных регистров, они используются в качестве указателей, что описано в Руководстве разработчика Intel (2.36 МБ PDF). Это всего лишь мои два цента.
Вероятно, это та же причина, по которой они упорядочены таким образом в инструкциях процессора. При указании 32-битного регистра eax - 0, ecx - 1, edx - 2, ebx - 3, esp - 4, ebp - 5, esi - 6 и edi - 7. Intel использует этот порядок с момента запуска X86. архитектура.
Поскольку я много лет занимался обратной инженерией с ollydbg, могу сказать, что это порядок важности при отладке. Eax используется повсюду из-за его природы. Получает возвращаемые значения, много используется. Тогда я бы сказал, что ecx и edx имеют равное распространение. Такие инструкции, как loop, repsb и подобные, используют ecx, а divs, muls и другие используют edx. Более того, когда мы программируем на ассемблере, мы часто используем eax, edx и ecx. Esi и edi также иногда используются, в основном в функциях повторения строк или в некоторых случаях в качестве вторичных регистров.
Я полагаю, что причина порядка заключается в том, как Intel использует этот порядок, но было бы очень странно иметь esi поверх моих регистров ollydebug, поскольку eax используется повсюду. Таким образом, он также имеет эргономичную точку: D
PUSHAD
- это инструкция, которая дала мне больше понимания этого вопроса. Он помещает в стек значения EAX, ECX, EDX, EBX, исходного ESP, EBP, ESI и EDI. Скорее всего, это причина, по которой OllyDbg сортирует их в таком порядке в представлении регистров. Описание PUSHAD
можно найти здесь.