Собираю для личных нужд декомпилятор байткода для AVM2;
в принципе дело не хирое — почти все операции, которые оперируют только регистрами и стеком операндов можно свернуть
в некое подобие s-выражений с помощью нескольких простых преобразований (типа «((push X) (push Y) (add)) => ((push (add X Y)))»).
Остается последовательность операций с побочными эффектами (присваивание, вызовы функций с неиспользуемым результатом, итп),
а также условные и безусловные переходы. И от них надо бы как-то избавиться.
Можно было бы вместо каждого «(goto labelX)» подставить последовательность выражений которая идет за labelX,
но дальше надо как-то отслеживать рекурсию и заворачивать в
циклы, и как это правильно делать не совсем понятно. Подозреваю,
что об этом должна быть какая-то относительно красивая теория.
Подскажите где искать
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум C# декомпилятор (2014)
- Форум декомпиляторы Java (2008)
- Форум [java] Порекомендуйте декомпилятор (2011)
- Форум Декомпилятор в Си? (2017)
- Форум Написать/найти декомпилятор (2022)
- Форум дизассемблирование байткода perl (2008)
- Форум SpiderMonkey кеширование откомпилированного байткода (2015)
- Форум .NET и байткод (нахрена ?) (2002)
- Форум ростелеком оградил байткод от детей (2013)
- Форум JavaScript научился исполнять Java-байткод (2011)