DizAsm — ДизАссемблер

Анонсы новых плагинов. Обсуждение плагинов ведется ниже.
Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

DizAsm — ДизАссемблер

Post by Слава » Fri 22 May, 2009 14:12

Вот написался, наконец, дизассемблер. В просмотре любого файла надо выбирать пока только через F11(к F4 не знаю как приклеиться).
Это мой второй PlugIn к FAR'у, так что советуйте и критикуйте всячески.
Из достоинств : большая скорость работы(мне так кажется).
Из недостатков:мелкие глюки при рисовании,нет работы для 64-разрядных CPU.

http://www.608.su/DizAsm.7z
Last edited by Слава on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Добавлена ссылка на обсуждение

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: ДизАссемблер

Post by Слава » Sat 11 Jul, 2009 17:51

Обновления.
1.Перевод компиляции на MS VisualStudio (код сжался в 9 раз),включение всевозможных оптимизаций. Теперь 20 Kb занимает FAR-плагин и 24 Kb распознаватель.
2.Разные доделки в работе, убирание лишнего.
3.Убрана ошибка падения на второй запуск (wchar стал динамическим у FAR'a)
4.Пересборка под FAR 2.0 b1034.

Только для Unicode FAR !

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Fri 17 Jul, 2009 14:06

Крохотная доработка :
диалог анализа(F5) стал ближе к истине. Во время анализа будет обновляться соотв. диалог (примерно как это делает поиск).

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Sun 19 Jul, 2009 10:15

Обновления:
1.Можно переходить в 64-битный показ. Полностью сыро, но это дело времени и способностей моих... Ничего не знаю про RIP/SIL/BPL. Увы...
2.Ошибка в 16-битном режиме с префиксом адресации 32-бита убрана.
3.Некоторые двойные префиксы не заглатываются, а выставляются, чтобы виден был косяк.

P.S. Как собирать плагин для 64 бит? Включить /MACHINE:IA64 в MS-студии ?
P.P.S. Не помогло, написала "fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'IA64'". И где этот "модуль машин тип"? В опциях не нашлось... :?:
P.P.P.S. Ах! "SIL" это "SI"+"L"ow part ; BPL = "BP" + "L"ow... ?..

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Tue 21 Jul, 2009 18:37

Микродоработки: :!:
0.Всё для 64-бит:
1.ДизASM понимает RIP+... и EIP+...
2.push и спец. mov'ы теперь и 8-байтные
3.В адресации стала чаще правда писаться с дополнительными регистрами (R8..R15)
4.xchg стал правильнее
00.Для FAR-показа:
1.Скроллбар появился и пока просто бежит. Причём внешний вид такой,о каком Necromancer'овцы только начали думать (доля плавности). В FAR'е думаю не стоит так делать - ничего особенного. :oops:
2.Пришлось создать для анализа отдельную нить (не знаю как DialogRun увязать с анализом без доп.нитей), но собственно FAR'овский поиск тоже пару нитей добавляет. Так что нормуль. :wink:

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Wed 22 Jul, 2009 18:13

Ещё доделки : Версия = 0,41
0. Для 32/16-битного режима : исправлена JECXZ (путала префиксы $66 и $67)
1.Для 64 бит:
1.1 Спец mov'ы в регистры (0xB8..0xBF) правильнее стали
1.2 В адресации порядка больше
1.3 Вывод/ввод в порты правильнее (in/out)
1.4 JECXZ <-> JRCXZ
1.5 $80.. стали и 8 байтными. Но!..
"Но" заключается в том, что теперь получается, что одна команда может быть более аж 16 байт! Necromancer расчитан токмо не более 15 и кажет ошибки, а у меня лишь трудности с показом. Да и как бедный процессор такое жуёт ?:
"lock and qword ptr [RAX+R14*8+$01020304], $050607080A0B0C0D" // трудно ему... :x
Last edited by Слава on Sun 26 Jul, 2009 11:47, edited 1 time in total.

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Thu 23 Jul, 2009 19:06

И ещё:
1.Часто дизASM'ы не обращают внимание на код $66, который бесполезно применяют для байтных операций. Раньше и у меня так было. Сейчас акцентируется внимание на таком лишнем префиксе.
2.F2 F0 F0 ... = rep lock lock раньше косячила. Сейчас исправлено.
3.A0..A3 команды стали умнее.
4.movsq, lodsq, cmpsq появились в 64-битах.
5.Раскраска чисел с префиксом сегмента не красила. Починилась.
6.lock movsb и другие бредовые операции с lock убраны.

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Fri 24 Jul, 2009 16:50

Работаем далее (версия 0,42): :oops:
1.Инструкция pause была плохо реализована.
2.Сдвиги стали правльнее писаться в 64-битном показе.
3.Раскраска недочётов в коде - такая как здесь или как лучше/нагляднее?
4.Пункты выбора недочётов можно выбирать/отмечать Insert'ом или +-ком или пробелом.
5.Маленько скорость увеличена (всё-таки компиляторы ещё слишком тупят... - приходится изучать их ASM-код, дабы понять как лучше наваять на C оптимальный выход... :crazy: )

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Sun 26 Jul, 2009 11:46

Версия подрастает до 0,43 :
1.Курсор появился и бегает - как будто есть редактирование. Но пока нету.
2.Поля (CheckBox'ы) в настройках (F9) для вычисления адресов прыжков (Jcc) и выбора стиля оформления чисел (C(ASM?)/Pascal).
3.Замечен изъян при показе в QuickView - залезаем на границу. Устраняем...

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Mon 27 Jul, 2009 16:22

Ещё малость(версию оставим в покое): :wink:
1. Надписи в строке статуса Inc/Dec/Nop/Not/AndXX/... a'la редактор есть
2.Добавлены функции в 16/32/64-битном распознавателе. Из расширения 0F 01..0F. Там их тьма недокументированных ещё. Бли-и-ин...
3.Небольшое ускорение работы по перемещению курсора
4.Замечен изъян при отключенной строки статуса - включается принудительно. Думаю, как это узнать(включена она или нет...)

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Tue 28 Jul, 2009 16:23

Редакторские добавки:
1.По двум адресам пишется как будто бы изменённые значения. Причём первое реагирует на Dec(Alt+F1). Пока курсор замазывает. Работаем... (Так будет в принципе выглядеть).
2.Исправлен изъян при залезании на границу при QuickView,а также имевшаяся ошибка при всё время включенном меню.(тоже при QuickView)
3.Добавлен пункт сохранения на Shift+F2. Пока токмо для вида.
4.Надо сделать F10-dialog ExitFar() при QuickView...

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Thu 30 Jul, 2009 16:13

Опять редакторские добавки:
1.Теперь более или менее работает Alt+[F1,F2,F6,F10]. Курсор пока затирает и... в общем ближе к плану придвинулись. :oops:
2.Добавки в 64-битном распознавателе

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Fri 31 Jul, 2009 15:53

И финал редактирования уже близок! Версия 0,44 :
1.Редактор ужо очень похож на настоящий. Ошибочки раскраски есть, ещё что-нибудь. И... сохранять пока нельзя. Будет! Будет. :Rose:
2.Исправлен дизАСМ в 64 битах. Некоторые команды были написаны для приёма 8-байтных значений,а на самом деле 64-битный режим - лишь слегка переделанный 32-битный.

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Tue 04 Aug, 2009 19:00

Улучшения: :)
1.В 16-битном распознавателе учитывается знак, если 1-байтное смещение у операнда. Раньше был вечный плюс.
2.В 64-битном появилось несколько распознаваемых команд (lzcnt,pshuf.,..). По ним трудно найти удобное описание.
3.В распознавателе переработана реакция на rep (из-за новизны использования префиксов F2 и F3)
4.Убран lock на неподходящих операциях. (Но не везде...)

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Wed 05 Aug, 2009 16:42

Растём вверх! Версия 0,45: :oops:
1. 64-битное распознавание улучшилось появлением SIL,DIL,...
2. Работает переключение c/Pascal-отображения чисел
3. Принципы lock/rep улучшены почти до совершенства

Слава
«математик»
Posts: 232
Joined: Sat 22 Apr, 2006 17:12

Re: DizAsm — ДизАссемблер

Post by Слава » Sun 09 Aug, 2009 12:03

Опять подрос редактор! :
1.В распознавателе улучшено понимание функции movntXX
2.В редакторе теперь можно набирать цифирками и буковками 16-ричный код
3*.Замечен изъян в C-раскраске для 16-битного распознавания
4*.Замечен изъян в позиционировании курсора при редактировании
* = работа ведётся :cry:

Post Reply

Return to “Анонсы новых плагинов”