Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| reverseenengineering:регитсры [2025/07/01 17:42] – [EDX] Lex | reverseenengineering:регитсры [2025/07/04 17:33] (текущий) – [Регистры общего назначения] Lex | ||
|---|---|---|---|
| Строка 49: | Строка 49: | ||
| ===== Регистры общего назначения ===== | ===== Регистры общего назначения ===== | ||
| - | ^ Имя регистра | + | ^ Имя регистра |
| | EAX | Аккумулятор (Accumulator) | | EAX | Аккумулятор (Accumulator) | ||
| | EBX | База (Base) | | EBX | База (Base) | ||
| Строка 67: | Строка 67: | ||
| > EBX (base register). Применяется как указатель на данные в сегменте данных и для хранения адресов. | > EBX (base register). Применяется как указатель на данные в сегменте данных и для хранения адресов. | ||
| + | |||
| + | > Один из восьми основных регистров общего назначения в архитектуре x86 и x86-64 процессоров Intel. Это 32-битный регистр, | ||
| + | |||
| + | > Регистр EBX используется для хранения базового адреса, | ||
| + | |||
| + | > **Доступ к элементам массива.** Регистр EBX содержит адрес начала массива, | ||
| + | |||
| + | > **Работа со структурами.** Регистр EBX содержит адрес структуры, | ||
| + | |||
| + | > **Индексная адресация.** Регистр EBX содержит адрес начала массива, | ||
| + | |||
| + | |||
| ==== ECX ==== | ==== ECX ==== | ||
| > 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) ==== | ||
| > Используется для хранения данных и может использоваться как базовый регистр при адресации памяти. | > Используется для хранения данных и может использоваться как базовый регистр при адресации памяти. | ||
| Строка 108: | Строка 168: | ||
| | ESI | Индекс источника (Source index) | | ESI | Индекс источника (Source index) | ||
| | EDI | Индекс приёмника (Destination index) | | EDI | Индекс приёмника (Destination index) | ||
| - | | FLAGS, | + | | FLAGS, |
| | EIP | Указатель команд. | | EIP | Указатель команд. | ||
| | СS | Хранение базовых адресов (Code Segment) | | СS | Хранение базовых адресов (Code Segment) | ||
| - | | DS | (Data Segment Register) | + | | DS | (Data Segment Register) |
| - | | ES | (Extra Segment Register) | + | | ES | (Extra Segment Register) |
| - | | FS | (Additional Segment Registers) | + | | FS | (Additional Segment Registers) |
| - | | GS | (Additional Segment Registers) | + | | GS | (Additional Segment Registers) |
| - | | SS | (Stack Segment Register) | + | | SS | (Stack Segment Register) |
| | RAX | (Accumulator Register) | | RAX | (Accumulator Register) | ||
| | RBX | (Base Register) | | RBX | (Base Register) | ||
| - | | AX | | | | + | | AX | | Младший регистр EAX. Умножение, |
| - | | AH | | | | + | | BX | | Базовый регистр в вычислениях адреса |
| - | | AL | | | | + | | CX | | Счетчик циклов |
| - | | B, BH, BL | + | | DX | | Определение адреса ввода/ |
| - | | SP, BP, SI, DI| | | | + | | AH | | high AX - старшая половина 8 бит, содержат адрес начала 64Kb сегмента, |
| - | | SPL, SDL, SIL, DIL| | | | + | | AL | | low AX — младшая половина 8 бит, содержат адрес начала 64Kb сегмента, |
| - | | RxD, RxW, RxB| | | | + | | B, BH, BL |
| - | | A | | | | + | | SP, BP, SI, DI| | 64-битный |
| - | | B, | + | | SPL, SDL, SIL, DIL| | 64-битный |
| - | | DC | | | | + | | RxD, RxW, RxB| |
| - | | SP | | | | + | | A | |
| - | | LDA | | | | + | | B, |
| + | | DC | | 6-битный регистр хранения селекторов | ||
| + | | SP | | 16-битный, | ||
| + | | LDA | | ||
| | | | | ||
| | | | | ||