semen2016
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Псевдокод можно написать самостоятельно по правилам: Присвоение значения локальной переменной - запись в стек со смещением переменной. Операторам jump с условием соответствует if Операторам jump без условия соответствует goto Циклов в ассемблере нет. Hex Rays декомпилятор воссоздает циклы. Для приближения псевдокода к коду циклы можно не воссоздавать. Пример на Си: -- #include <stdio.h> int main() { int k, i, sum; i = 1; sum = 0; k = 5; while (i <= k) { sum = sum + i; i++; } printf("sum = %d\n", sum); return 0; } -- Скомпилируем с ключом Zi. Декомпилируем вручную. -- #include <stdio.h> int main() { int k, i, sum; i = 1; sum = 0; k = 5; cyclebegin: if (i <= k) { sum = sum + i; i++; goto cyclebegin; } else goto cycleend; cycleend: printf("sum = %d\n", sum); return 0; } -- Оба файла компилируются в одинаковый код. |