Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| reverseenengineering:регитсры [2025/07/01 18:08] – [EBX] Lex | reverseenengineering:регитсры [2025/07/04 17:33] (текущий) – [Регистры общего назначения] Lex | ||
|---|---|---|---|
| Строка 49: | Строка 49: | ||
| ===== Регистры общего назначения ===== | ===== Регистры общего назначения ===== | ||
| - | ^ Имя регистра | + | ^ Имя регистра |
| | EAX | Аккумулятор (Accumulator) | | EAX | Аккумулятор (Accumulator) | ||
| | EBX | База (Base) | | EBX | База (Base) | ||
| Строка 71: | Строка 71: | ||
| > Регистр EBX используется для хранения базового адреса, | > Регистр EBX используется для хранения базового адреса, | ||
| + | |||
| + | > **Доступ к элементам массива.** Регистр EBX содержит адрес начала массива, | ||
| + | |||
| + | > **Работа со структурами.** Регистр EBX содержит адрес структуры, | ||
| + | |||
| + | > **Индексная адресация.** Регистр EBX содержит адрес начала массива, | ||
| Строка 77: | Строка 83: | ||
| > ECX (count register). Традиционно используется в циклах как счетчик итераций. | > ECX (count register). Традиционно используется в циклах как счетчик итераций. | ||
| + | > Один из основных регистров общего назначения в архитектуре x86 и x86-64 процессоров Intel. Это 32-битный регистр, | ||
| + | |||
| + | > Регистр ECX состоит из двух 8-битных регистров: | ||
| + | |||
| + | > Счётчик циклов — регистр ECX часто используется как счётчик в циклах, | ||
| + | |||
| + | > Указание количества сдвигов или вращений — младший байт регистра ECX (CL) используется для указания количества сдвигов или вращений в соответствующих инструкциях (например, | ||
| + | |||
| + | > Передача аргументов — в некоторых соглашениях о вызовах функций (calling conventions) регистр ECX используется для передачи аргументов. | ||
| + | |||
| + | > Пример использования как счётчик циклов: | ||
| + | |||
| + | > Пример использования в сдвиговых операциях: | ||
| + | |||
| + | > Ограничения: | ||
| ==== EDX ==== | ==== EDX ==== | ||
| > EDX (data register). Дополняет eax в операциях умножения и деления, | > EDX (data register). Дополняет eax в операциях умножения и деления, | ||
| + | > Регистр данных, | ||
| + | |||
| + | > Арифметические операции: | ||
| + | |||
| + | > Ввод-вывод: | ||
| + | |||
| + | > Соглашения о вызовах: | ||
| + | |||
| + | > Логические операции: | ||
| + | |||
| + | > Разделение на части: EDX можно обращаться как к 16-битному регистру DX (старшие 16 бит) и 8-битным DH (старший байт) и DL (младший байт). | ||
| + | |||
| + | > Совместимость с другими регистрами: | ||
| + | |||
| + | > Регистр EDX остается важным элементом в низкоуровневом программировании, | ||
| ==== RAX (Accumulator Register) ==== | ==== RAX (Accumulator Register) ==== | ||
| + | |||
| > Используется для арифметических, | > Используется для арифметических, | ||
| + | |||
| + | > 64-битный регистр в архитектуре процессоров x86-64. Представляет собой расширенную версию 32-битного регистра EAX. | ||
| + | |||
| + | > Структура регистра: | ||
| + | >> RAX (64 бита) — основной регистр. | ||
| + | >> EAX (32 бита) — нижние 32 бита регистра RAX. | ||
| + | >> AX (16 бит) — нижние 16 бит регистра EAX. | ||
| + | |||
| + | > При использовании регистра RAX меняется значение всех трёх частей, | ||
| + | |||
| + | > Регистр RAX используется для выполнения арифметических и логических операций. Также он применяется для: | ||
| + | |||
| + | >> Перемещения данных — RAX часто используется как операнд для различных инструкций. | ||
| + | |||
| + | >> Хранения возвращаемых значений — в большинстве соглашений о вызовах функций для 64-битных систем регистр RAX используется для хранения возвращаемых значений. | ||
| + | |||
| + | |||
| ==== RBX (Base Register) ==== | ==== RBX (Base Register) ==== | ||
| > Используется для хранения данных и может использоваться как базовый регистр при адресации памяти. | > Используется для хранения данных и может использоваться как базовый регистр при адресации памяти. | ||