| 
		
	
	
	
		
	Сообщений: 2,101 
	Тем: 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,101 
	Тем: 40 
	Зарегистрирован: Apr 2008
	
 Репутация: 
12,296 
	
	
		Примерное время 20 минут 
Инфы будет больше естесно, ибо это "часть I". И блоки в том числе. Так же решения для всех вытекающих проблем, динам. кол. параметров в функциях и прочее, с чем можно столкнуться в данном случае. 
Ну и прошу обратить внимание, что это лишь часть из всей документации. После того, как Camelion закончит всю доку, вместе с "финалом" зарелизим и сам декомпилятор    Сроки не скажем, но постараемся в скором времени. Ждите новостей    ![[Изображение: E0s5o.png]](http://image.zone-game.info/images/2015/06/22/E0s5o.png)  ![[Изображение: OzRCh.png]](http://image.zone-game.info/images/2015/06/22/OzRCh.png)  ![[Изображение: D1X5h.png]](http://image.zone-game.info/images/2015/06/22/D1X5h.png)  
	
	
	
		
	Сообщений: 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 
	
	
		У кого-нибудь есть эти файлы? А то ссылка уже битая    |