Сообщений: 2,102
Тем: 40
Зарегистрирован: Apr 2008
Репутация:
12,296
06-25-2015, 12:15 AM
(Сообщение последний раз редактировалось: 06-25-2015, 12:52 AM KilRoy.)
Приветствую уважаемые юзеры ЗГшечки. Думаю многих овнеров эмуляторов, посещала мысль "ПТС же круче, надо что-то думать...". Многие смотрели в скрипты, дизасмили бинарники, экстили и пробовали. Но есть и те, кому это...не совсем под силу. Вот посему, наш товарищ Camelion, после анализа, решил написать небольшую(а может наоборот, будет видно) документацию, по целевому ai.obj В текущий момент, документация не завершена, и ее 2я часть появится в скором времени(Ибо человеку нужно передохнуть, отполировать декомпилятор для публикации, да и просто развеяться). Мы с радостью делимся полученной инфой, постараемся описать подводные камни\проблемы и пути их решения, принятые нами в написании декомпилятора. Дай бог, что данная документация послужит и окружающим - верой и правдой
Собственно: линк на PDF файл, без регистраций и СМС
После написания 2й части документации, мы обновим трид, добавив линки на "полную" версию и новую часть. Пользуйтесь на здоровье.
С вами были JTS, спа-си-бо за внимание
(*) Огромная просьба, при переносе данной документации на сторонние ресурсы, укажите линк на данный трид и автора - Camelion
Сообщений: 83
Тем: 0
Зарегистрирован: Apr 2015
Вопрос!
Интересная документация у вас, я так понимаю ai.obj Это не контейнер данных - а своего рода обработчик npcpos, npcdata и прочего ?
Для этого там идет обращение по стеку(через Pointer), для определенных данных ?
Отсюда вопрос - на счет
..., address, value -> ...
Если взяться через RandomAccessFile seek(Address) for(i<value)byte[i]=read; получим те-же данные ?
Сообщений: 247
Тем: 3
Зарегистрирован: Feb 2012
Репутация:
1,300
Не могу не сказать спасибо за труд, который вы отдаете в паблик!
Пока что достаточно скудная информация К операции add стоит добавить больше комментариев для случаев, когда операция используется для формирования обращений к классам (foo.bar.baz). Отдельное внимание стоит уделить вызовам функций и пониманию в контексте декомпилятора пределов выражений (там, где необходимо разделять операции semicolon-ом).
Собираетесь ли описывать блочные операции (while/for/etc.)? Обработку вложенных операций, сложных условий в if-else?
Или решили просто создать документацию по байт-коду?
Было бы очень интересно посмотреть, как вы опишете работу if-else-endif блоков
P.S. За какое время ваш декомпилятор разбирает полный AI, если не секрет? =)
// aka Deft
Сообщений: 2,102
Тем: 40
Зарегистрирован: Apr 2008
Репутация:
12,296
Примерное время 20 минут
Инфы будет больше естесно, ибо это "часть I". И блоки в том числе. Так же решения для всех вытекающих проблем, динам. кол. параметров в функциях и прочее, с чем можно столкнуться в данном случае.
Ну и прошу обратить внимание, что это лишь часть из всей документации. После того, как Camelion закончит всю доку, вместе с "финалом" зарелизим и сам декомпилятор Сроки не скажем, но постараемся в скором времени. Ждите новостей
Сообщений: 247
Тем: 3
Зарегистрирован: Feb 2012
Репутация:
1,300
KilRoy Написал:Примерное время 20 минут
Инфы будет больше естесно, ибо это "часть I". И блоки в том числе. Так же решения для всех вытекающих проблем, динам. кол. параметров в функциях и прочее, с чем можно столкнуться в данном случае.
Ну и прошу обратить внимание, что это лишь часть из всей документации. После того, как Camelion закончит всю доку, вместе с "финалом" зарелизим и сам декомпилятор Сроки не скажем, но постараемся в скором времени. Ждите новостей
Успехов вам в сем не легком труде
А на чем написан декомпилятор?
20 минут очень долго - не знаю, может у вас там что-то специфичное, но рекомендую поработать над перфомансом - с уверенностью могу сказать, что можно подобраться к 1-й минуте по времени выполнения =)
// aka Deft
Сообщений: 631
Тем: 12
Зарегистрирован: May 2009
Репутация:
3,873
Yorie Написал:Успехов вам в сем не легком труде
А на чем написан декомпилятор?
20 минут очень долго - не знаю, может у вас там что-то специфичное, но рекомендую поработать над перфомансом - с уверенностью могу сказать, что можно подобраться к 1-й минуте по времени выполнения =)
Смысл? если его 1 раз заюзал и забыл про него.
Сообщений: 144
Тем: 9
Зарегистрирован: Jul 2012
Репутация:
2,152
Yorie Написал:Не могу не сказать спасибо за труд, который вы отдаете в паблик!
Пока что достаточно скудная информация К операции add стоит добавить больше комментариев для случаев, когда операция используется для формирования обращений к классам (foo.bar.baz). Отдельное внимание стоит уделить вызовам функций и пониманию в контексте декомпилятора пределов выражений (там, где необходимо разделять операции semicolon-ом).
Собираетесь ли описывать блочные операции (while/for/etc.)? Обработку вложенных операций, сложных условий в if-else?
Или решили просто создать документацию по байт-коду?
Было бы очень интересно посмотреть, как вы опишете работу if-else-endif блоков
P.S. За какое время ваш декомпилятор разбирает полный AI, если не секрет? =)
Про add и обращения к классам там есть, возможно Вы не дочитали, описание присутствует. Вызов функций, и блочные операции будут описаны в следующих частях. Полное время разбора аи ~ 40 секунд. Остальные 10-15 минут занимает компиляция Scala в байткод. Дабы не быть голословным:
Говоря о 20 минутах KilRoy имеет ввиду полный цикл от чтения файла ai.obj до упаковки скриптов в jar.
Проскочил вопрос - на чем написан. Java, частично Scala.
Сообщений: 247
Тем: 3
Зарегистрирован: Feb 2012
Репутация:
1,300
06-25-2015, 03:19 AM
(Сообщение последний раз редактировалось: 06-25-2015, 03:21 AM Yorie.)
Camelion Написал:Про add и обращения к классам там есть, возможно Вы не дочитали, описание присутствует. Дочитал, просто если вы описываете операцию, следует в этом же разделе упомянуть о всех ее применениях со ссылками на детальное описание того или иного применения, иначе сумбур будет - разброс по страницам информации об одном "объекте".
Цитата: Вызов функций, и блочные операции будут описаны в следующих частях. Полное время разбора аи ~ 40 секунд. Остальные 10-15 минут занимает компиляция Scala в байткод. Дабы не быть голословным:
Говоря о 20 минутах KilRoy имеет ввиду полный цикл от чтения файла ai.obj до упаковки скриптов в jar.
Ясно, так и думал
Цитата:Проскочил вопрос - на чем написан. Java, частично Scala.
А для каких целей применяете Scala, если не секрет?
Добавлено через 58 секунд
offtop
kingzor Написал:Смысл? если его 1 раз заюзал и забыл про него.
Смысл тогда вообще быть программистом?..
// aka Deft
Сообщений: 144
Тем: 9
Зарегистрирован: Jul 2012
Репутация:
2,152
Информацию по последовательностям скорее всего вынесу в отдельную секцию, т.е. останется чисто описание операторов, далее описание последовательностей, описание самого декомпилятора и в конце описание всех хитрых трюков, которыми воспользовались. Втч почему взяли Scala а не Java. Вы говорите что читали. Предпосылки к Scala описаны в статье, возможно Вам следует прочитать её ещё раз.
Сообщений: 12
Тем: 3
Зарегистрирован: Apr 2009
Репутация:
0
У кого-нибудь есть эти файлы? А то ссылка уже битая
|