reverseenengineering:регитсры

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
reverseenengineering:регитсры [2025/07/01 17:43] – [Указательные и индексные регистры] Lexreverseenengineering:регитсры [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-битный регистр, расширенная версия 16-битного регистра BX. BX, в свою очередь, состоит из двух 8-битных регистров: BH (старший байт) и BL (младший байт).
 +
 +> Регистр EBX используется для хранения базового адреса, относительно которого вычисляются адреса других данных в памяти. Это может быть адрес начала структуры данных, массива или любой другой области памяти. Относительно этого адреса вычисляются смещения для доступа к конкретным элементам данных.
 +
 +> **Доступ к элементам массива.** Регистр EBX содержит адрес начала массива, ebx + 4 указывает на второй элемент массива, который загружается в EAX, ebx + 8 — на третий элемент массива, который добавляется к значению в EAX.
 +
 +> **Работа со структурами.** Регистр EBX содержит адрес структуры, используется для доступа к полям структуры: первое поле — по адресу EBX, второе поле — по адресу ebx + 2.
 +
 +> **Индексная адресация.** Регистр EBX содержит адрес начала массива, регистр ECX используется как индекс, и ebx + ecx*4 вычисляет адрес третьего элемента массива (поскольку каждый элемент занимает 4 байта). Значение третьего элемента загружается в EAX.
 +
 +
 ==== ECX ==== ==== ECX ====
  
 > ECX (count register). Традиционно используется в циклах как счетчик итераций. > ECX (count register). Традиционно используется в циклах как счетчик итераций.
  
 +> Один из основных регистров общего назначения в архитектуре x86 и x86-64 процессоров Intel. Это 32-битный регистр, расширенная версия 16-битного регистра CX (Count Register). 
 +
 +> Регистр ECX состоит из двух 8-битных регистров: CH (старший байт) и CL (младший байт).
 +
 +> Счётчик циклов — регистр ECX часто используется как счётчик в циклах, особенно в инструкциях повторения (REP).
 +
 +> Указание количества сдвигов или вращений — младший байт регистра ECX (CL) используется для указания количества сдвигов или вращений в соответствующих инструкциях (например, SHL, SHR, ROL, ROR).
 +
 +> Передача аргументов — в некоторых соглашениях о вызовах функций (calling conventions) регистр ECX используется для передачи аргументов.
 +
 +> Пример использования как счётчик циклов: Регистр ECX устанавливается в 5, затем в цикле выполняются операции с элементом массива: увеличивается значение текущего элемента на 1, переходит к следующему элементу. В конце цикла ECX уменьшается на 1, и если ECX не равен нулю, управление передаётся к началу цикла.
 +
 +> Пример использования в сдвиговых операциях: Регистр ECX устанавливается в 4, затем значение загружается в EAX, и EAX сдвигается влево на количество бит, указанное в CL (4 бита).
 +
 +> Ограничения: Регистр ECX не имеет заданного наперёд типа — он может трактоваться как знаковые или беззнаковые целые числа, указатели, булевые значения и так далее. В некоторых соглашениях о вызовах регистр ECX может быть регистром scratch (call clobbered) — это означает, что он не сохраняется при вызовах функций.
 ==== EDX ==== ==== EDX ====
  
 > EDX (data register). Дополняет eax в операциях умножения и деления, а также участвует в операциях ввода-вывода. > EDX (data register). Дополняет eax в операциях умножения и деления, а также участвует в операциях ввода-вывода.
  
 +> Регистр данных, который используется для хранения результатов промежуточных вычислений и ввода-вывода.
 +
 +> Арифметические операции: При умножении 32-битных чисел результат сохраняется в паре регистров EDX:EAX (старшие 32 бита в EDX, младшие — в EAX).При делении 32-битного числа на 32-битный делитель остаток записывается в EDX, а частное — в EAX.
 +
 +> Ввод-вывод: EDX служит для хранения адреса порта ввода-вывода в командах IN и OUT.
 +
 +> Соглашения о вызовах: В некоторых соглашениях (например, __fastcall) EDX используется для передачи второго параметра функции.
 +
 +> Логические операции: EDX может участвовать в побитовых операциях (AND, OR, XOR) и использоваться для хранения промежуточных данных.
 +
 +> Разделение на части: EDX можно обращаться как к 16-битному регистру DX (старшие 16 бит) и 8-битным DH (старший байт) и DL (младший байт).
 +
 +> Совместимость с другими регистрами: EDX часто используется в паре с EAX, особенно в 32-битных операциях. 
 +
 +> Регистр 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,EFLAGS,RFLAGS        | Регистр флагов (Flag)                               | Содержит биты состояния процессора|+| FLAGS,EFLAGS,RFLAGS        | Регистр флагов (Flag)                                 | Содержит биты состояния процессора|
 | EIP           | Указатель команд.                                                  | Указатель адреса следующей инструкции для выполнения. Не регистр а указатель на текущую функцию.| | EIP           | Указатель команд.                                                  | Указатель адреса следующей инструкции для выполнения. Не регистр а указатель на текущую функцию.|
 | СS            | Хранение базовых адресов (Code Segment)                            | Хранение базовых адресов сегмента кода в ОЗУ, откуда процессор считывает команды для выполнения. Если проводить аналогию между кодом и книгой, то CS указывает на номер страницы в книге (программе)| | СS            | Хранение базовых адресов (Code Segment)                            | Хранение базовых адресов сегмента кода в ОЗУ, откуда процессор считывает команды для выполнения. Если проводить аналогию между кодом и книгой, то CS указывает на номер страницы в книге (программе)|
-| DS            | (Data Segment Register)                                            |              +| DS            | (Data Segment Register)                                            | Соответствует сегменту данных, с которыми работает процессор             
-| ES            | (Extra Segment Register)                                                        +| ES            | (Extra Segment Register)                                           Соответствует дополнительному сегменту данных             
-| FS            | (Additional Segment Registers)                                                  +| FS            | (Additional Segment Registers)                                     6-битный регистр хранения селекторов             
-| GS            | (Additional Segment Registers)                                                  +| GS            | (Additional Segment Registers)                                     6-битный регистр хранения селекторов             
-| SS            | (Stack Segment Register)                                                        |+| SS            | (Stack Segment Register)                                           Соответствует сегменту стека             |
 | RAX           | (Accumulator Register)                                             | Арифметические, логические операций и операций ввода-вывода.| | RAX           | (Accumulator Register)                                             | Арифметические, логические операций и операций ввода-вывода.|
 | RBX           | (Base Register)                                                    | Хранение данных и иногда используется как базовый регистр при адресации памяти. | | RBX           | (Base Register)                                                    | Хранение данных и иногда используется как базовый регистр при адресации памяти. |
-| AX            |                                                                    | Младший регистр EAX             | +| AX            |                                                                    | Младший регистр EAX. Умножение, деление, обмен с устройствами ввода/вывода (команды ввода и вывода).            | 
-| AH            |                                                                    |              +| BX            |                                                                    | Базовый регистр в вычислениях адреса             | 
-| AL            |                                                                    |              +| CX            |                                                                    | Счетчик циклов             | 
-| B, BH, BL                                                                        |              +| DX            |                                                                    | Определение адреса ввода/вывода             | 
-| SP, BP, SI, DI|                                                                    |              +| AH            |                                                                    | high AX - старшая половина 8 бит, содержат адрес начала 64Kb сегмента, смещенный вправо на 4 бита             
-| SPL, SDL, SIL, DIL|                                                                                 +| AL            |                                                                    | low AX — младшая половина 8 бит, содержат адрес начала 64Kb сегмента, смещенный вправо на 4 бита             
-| RxD, RxW, RxB|                                                                                 +| B, BH, BL                                                                        | Младшая часть старших 16-битных регистров в архитектуре x86             
-| A              |                                                                    |              | +| SP, BP, SI, DI|                                                                    | 64-битный             
-| B,C,D,E,H,             |                                                                    |              | +| SPL, SDL, SIL, DIL|                                                                64-битный             
-| DC              |                                                                                 +| RxD, RxW, RxB|                                                                     64-битный             
-| SP              |                                                                                 +| A              |                                                                   |              | 
-| LDA              |                                                                    |              |+| B,C,D,E,H,             |                                                         |              | 
 +| DC              |                                                                  6-битный регистр хранения селекторов             
 +| SP              |                                                                  16-битный, содержат адрес начала 64Kb сегмента, смещенный вправо на 4 бита             
 +| LDA              |                                                                 |              |
 |                                                                                  |              | |                                                                                  |              |
 |                                                                                  |              | |                                                                                  |              |
  • reverseenengineering/регитсры.1751366592.txt.gz
  • Последнее изменение: 2025/07/01 17:43
  • Lex