captain cobalt Общая модель давно описана, у той же Cristina Cifuentes, например. Надо рассматривать детали. С большой натяжкой. Компиляция - это, скорее, анализ, а декомпиляция - синтез. Если такой опыт есть - очень хорошо. Если нет - почему бы сразу не поиметь опыт разработки декомпиляторов?
Artem [ <font color="gray]Общая модель давно описана, у той же Cristina Cifuentes, например.</font><!--color--> ] Ну вот, уже более конкретные идеи. Даже Ильфак её уважает. Тем не менее, возможно, следовало бы вкратце описать эти идеи для иех кто не в курсе. [ <font color="gray]Надо рассматривать детали.</font><!--color--> ] В том то и дело, что сначала надо рассмотреть общую модель, потому что надо знать, как дополнительные детали будут взаимодействовать с этой моделью.
captain cobalt Если и стоит описать эти идеи вкратце, то не на форуме, а в статье. Но толку от неё немного будет. Не люблю абстракции. А какие детали ты имеешь в виду?
Artem [ <font color="gray]А какие детали ты имеешь в виду?</font><!--color--> ] Затачивание декомпилятора под особенности кодогенераторов конкретных компиляторов.
captain cobalt Ты имеешь в виду, что для декомпиляции необходимо знать, какой компилятор был использован? Или то, что при разработке декомпилятора надо учесть особенности кодогенераторов конкретных компиляторов, обобщая и "универсализируя" их? Может, приведёшь какой-нибудь пример?
captain cobalt Очень жаль, но пока не видно общей модели. Вы действительно готовы тратить силы на жалость? 1. Декомпиляция - это компиляция. В какой-то мере да, точнее это перевод с одного языка на другой. С машинного, понимаемого камнем, на высокоуровневый, кодерский. Компиляция -соответсвенно- наоборот. С этой точки зрения декомпиляцию можно рассматривать как технику перевода. На сегодняшний день существуют программы перевода с одного человеческого на другой, так что по сравнению с ними проблема декомпиляции даже несколько меньше. 2. Декомпиляция сложнее, чем компиляция. Провожу снова параллель с человеческим общением. Есть например, воровское арго. Ну и как узнать информацию из их разговора, если не знать их способ общения, уловки и т.п. Также и с компилятором. Без приземления абстрактного декомпилятора на соответсвующую платформу компилятора качественное восстановление информации очень-очень сложно. 3. Прежде чем разрабатывать декомпиляторы, имеет смысл поиметь опыт разработки компиляторов. Ну наверное, тут несколько надо уточнить. Имелось ввиду скорее всего, создание оптимизатора. Знание техник оптимизации кода. В принципе, я тоже за. Декомпилятору свой специализированный компилятор не помешает.