Компилятор: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Строка 67:
 
=== Декомпиляция ===
Существуют программы, которые решают обратную задачу — перевод программы с низкоуровневого языка на высокоуровневый. Этот процесс называют декомпиляцией, а такие программы — [[декомпилятор]]ами. Но поскольку компиляция — это процесс с потерями, точно восстановить исходный код, скажем, на C++, в общем случае невозможно. Более эффективно декомпилируются программы в байт-кодах — например, существует довольно надёжный декомпилятор для [[Adobe Flash|Flash]]. Разновидностью декомпилированиядекомпиляции является [[дизассемблер|дизассемблирование]] машинного кода в код на языке ассемблера, который почти всегда выполняетсяблагополучно успешновыполняется (при этом сложность может представлять [[самомодифицирующийся код]] или код, в котором собственно код и данные не разделены). Связано это с тем, что между кодами машинных команд и командами ассемблера имеется практически взаимно-однозначное соответствие.
 
== Раздельная компиляция ==