Изменения

Перейти к: навигация, поиск

ARM-декомпилятор

4 байта добавлено, 14:19, 29 марта 2011
м
Нет описания правки
** Если что-то откуда-то ветвится и это не цикл, это условный оператор :)
*: Транслировать его следует так:
*:* Ищем точку сбора всех веток, выходящих из начального узла (узел, в котором все они объединяются).*:* Залезаем в каждую ветку, всё обрабатываем точно так же, как до этого, и точно так же (в обработке линейных участков и циклов тоже помечаем).*:* Помечаем пройденные узлы как обработанные.*:* Когда где-то видим уже обработанный узел, заменяем переход к нему на goto. То есть, if «без дублирования» кусков веток будет «нормальным», без goto.
*: Пример «плохого» if’а: 0->1->3->4, 0->2->3, 0->4, 0->5->4.
*: <graph>digraph G { 0->1->3->4; 0->2->3; 0->4; 0->5->4; }</graph>
Всё это соответствует стандартной теории декомпиляции, см. например http://www.backerstreet.com/decompiler/creating_statements.php

Навигация