# Параметры декомпиляции - DE Decompiler

> Декомпиляция нативного кода восстанавливает Delphi-подобные операторы из машинных инструкций и доступных метаданных. Параметры обработки определяют представление полученного листинга.

Canonical HTML: <https://www.de-decompiler.com/help/ru/decompilation.htm>

## Параметры декомпиляции

При декомпиляции нативного кода Delphi-подобный Pascal восстанавливается по машинным инструкциям и доступным метаданным. Эти параметры обработки применимы к поддерживаемым программам, написанным на Delphi или созданным в C++Builder.

### Восстановленная логика программы

Декомпилятор восстанавливает условия, `case` блоки, циклы и вызовы, включая распознанные методы VCL. Имена и типы на уровне исходного кода зависят от информации, сохраненной в бинарном файле. Сгенерированные имена переменных, выведенные структуры расположения полей и вызовы без распознанных имен VCL являются нормальными последствиями реконструкции нативного кода. См. [Интерпретация восстановленного кода](https://www.de-decompiler.com/help/ru/validation.htm) для подробностей.

![Элементы управления обработкой декомпиляции.](https://www.de-decompiler.com/image/help/ru/options_decompilation.png)
Элементы управления обработкой декомпиляции.

### Выражения Delphi и операции времени выполнения

Распознанный поток управления включает `if/else`, `case`, `for`, `while` и `repeat/until`, с `Break` и `Continue` где нативные ветви устанавливают свое значение.

Доступные данные RTTI, метаданные классов и сигнатуры поддерживают поля объектов, свойства, виртуальные методы, вызовы VCL и импортированные вызовы Windows API. Общие операции RTL могут быть представлены как выражения строк Delphi, `Length`, `Copy`, `Delete`, `Insert`, изменение размера массива и индексация, доступ к Variant-массивам и `TextFile` операции ввода.

Эти преобразования зависят от распознанных типов, соглашений вызова и потока данных. Если доказательств недостаточно, листинг сохраняет явные вызовы, указатели или ветвления. Сгенерированные семантические имена переменных описывают выведенные роли и не являются восстановленными оригинальными идентификаторами.

### Параметры стека и оптимизация

**«Парсить парам. из стека» (Parse stack parameters)** способствует реконструкции вызовов и выражений высокого уровня. **«Анализ и оптимизация кода» (Procedure analyzer and optimizer)** упрощает распознавание паттернов выражений и потока управления. Сравнивайте полученный листинг с отключенными элементами управления, если выражение или ветвление неясны.

### Обработка потока управления

**«Обработать If ... End If блоки (Native Code)» (Process If ... End If blocks (Native Code))** реконструирует распознанные условные переходы в высокоуровневые условные блоки. **«Обработка 'Else' блоков» (Process 'Else' blocks)** добавляет эвристики для ветвей Else и требует обработки блоков If. Сравнивайте эти элементы управления включенными и выключенными при расследовании неоднозначного ветвления.

### Прототипы и адреса

**«Анализ прототипов» (Analyze prototypes)** выполняет предварительный эвристический анализ аргументов процедур и возвращаемых значений. Это полезно в режиме быстрой декомпиляции, когда для частных функций отсутствует явная метаданных сигнатуры. Этот анализ требует дополнительного начального времени обработки. Проверяйте выведенные сигнатуры по вызывающим объектам и нативным инструкциям, если они влияют на вывод анализа.

**«Добавлять адреса» (Add Addresses)** сохраняет виртуальные адреса в высокоуровневом листинге для сравнения и навигации. Оставьте его включенным для **«Скопировать в дизассемблер» (Copy to disassembler)**. Дизассемблер отображает адреса независимо от данной настройки.

Если вывод кэширован или весь проект уже был обработан, после изменения соответствующих настроек заново откройте или переработайте входные данные.
