Плагины на ассемблере

Только для тех, кто пишет плагины под Total Commander. Обмен опытом, решение проблем.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

mc-black
Сообщения: 7
Зарегистрирован: Чт фев 07, 2008 16:28
Откуда: Нижний Новгород
Контактная информация:

Плагины на ассемблере

Сообщение mc-black »

Уважаемые форумчане!

Кто-нибудь из вас где-нибудь встречал плагины к Total Commander, целиком написанные на одном из ассемблеров? Просто я сделал как пример минимальный fs-плагин на masm (компилируется в MASM32v9). Здесь, на русскоязычном форуме в поиске я нашел только два упоминания о ассемблере, причем в одном топике использовалась мелкая ассемблерная вставка в 3-5 инструкций, а в другом топике какой-то авторитет от C# что-то ляпнул про сравнение асм и яву, так и непонятно что.

Мне кажется, среди людей, которые пишут приложения, утилиты и драйвера на ассемблере нашлось бы немало желающих написать для себя лично (а заодно для других) полезный, удобный плагин. Раньше мне встречались старые версии документации по написанию плагинов, где описание и примеры давались целиком применительно к паскалю. Понятно, что читать паскаль с лету и разбираться в нем не каждому будет интересно, когда с ним он только мельком знаком. Зато когда появилась нормальная документация и примеры на си, всё изменилось в лучшую сторону. Большинство ассемблерщиков если не пишут на си, то в любом случае хорошо разбираются в документации, написанной преимущественно применительно к си.

Вот я и хочу продвинуть эту идею в массы и ищу единомышленников и т.д. и т.п. Могу даже минимально поучаствовать в выкладке исходников плагинов на ассемблере или составить перевод небольшого участка документации по написанию плагинов к Total Commander или написать маленький мануальчик по разработке плагинов на ассемблере (MASM). Короче, жду откликов.
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Есть архиваторный плагин, полностью на ассемблере, с исходниками. Но кроме архиваторных плагинов (которые могут обрабатывать большие объёмы данных) я не вижу смысла в применении ассемблера.
mc-black
Сообщения: 7
Зарегистрирован: Чт фев 07, 2008 16:28
Откуда: Нижний Новгород
Контактная информация:

Сообщение mc-black »

Ok, спасибо за ссылку, буду смотреть, когда понадобится писать WCX-плагин. К слову, плагин был написан уже давно, тогда большинство писало на tasm, сейчас это уже редкость. Сейчас пишут часто на masm и всё большую популярность начинает набирать fasm. Плагин по размеру вышел у Stanislaw Pusep крошка. Кто ещё видел плагины, написанные на asm? Есть желающие попробовать свои силы, реализовать какой-нибудь новый проект? Иначе будем считать, что я первый, кто на asm написал wfx-плагин ;)

P.S. Прикольно, D1P совсем на чуть-чуть позже, чем Lev, запостил одну и ту же ссылку. D1P, а почему ты так считаешь? По-моему ассемблер можно применить для написания всех видов плагинов Total Commander.
DrShark
Сообщения: 911
Зарегистрирован: Сб окт 21, 2006 20:27
Откуда: Kyiv, Ukraine
Контактная информация:

Сообщение DrShark »

Кто ещё видел плагины, написанные на asm?
Не знаю, можно ли отнести HiAsm к семейству ассемблеров :)
Посмотри здесь: http://www.ghisler.ch/wiki/index.php/Plugins_interfaces
mc-black
Сообщения: 7
Зарегистрирован: Чт фев 07, 2008 16:28
Откуда: Нижний Новгород
Контактная информация:

Сообщение mc-black »

Не знаю, можно ли отнести HiAsm к семейству ассемблеров
Да и тоже как-то в этом не уверен :)) Впервые узнал о таковом сегодня, нет это не ассемблер однозначно, даже если ассемблер используется на этапе компиляции. А вообще, интересно:
http://hiasm.com/
Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Сообщение Моторокер »

mc-black писал(а):Могу … составить перевод небольшого участка документации по написанию плагинов к Total Commander
Не ассемблер, но может возникнут какие-то замечания:
Статья Архиваторный плагин на Borland Delphi
Перевод Написание WCX архиваторных плагинов для Total Commander (Writing WCX packer plugins for Total Commander)
mc-black писал(а):нашлось бы немало желающих написать для себя лично (а заодно для других) полезный, удобный плагин
При современных скоростях инета и путеров не важны ни объём ни скорость плагина.
Можно и написать в качестве лабораторки.
Не так важно, на чём написан плагин, главное чтобы он был.
Часто накладывают ограничения посторонние компоненты. И если стандартные VCL можно на KOL/MCK заменить, то с другими компонентами это будет уже сложнее.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
mc-black
Сообщения: 7
Зарегистрирован: Чт фев 07, 2008 16:28
Откуда: Нижний Новгород
Контактная информация:

Сообщение mc-black »

2 Моторокер:
1. Замечаний пока нет, но возможно будут.
2. Насчёт объёма плагина: при настоящей цене EDGE-трафика моего провайдера объём продолжает иметь для меня значение. А скорость - второй по значению критерий качества любого архиватора (это касательно архиваторных плагинов).
3. В принципе согласен с тем, что не так важно, на чём написан плагин, главное чтобы он был. Просто чем больше программеров вовлечено в написание плагинов, тем больше плагинов полезных и разных будет написано. Для этого всесторонняя документация и свободный доступ к исходникам примеров на мой взгляд очень полезны.
4. А вот компоненты, KOL/MCK - это чисто борландовские понятки. Ясней всего было бы сказать, что плагин - это обычная dll, использующая соглашение о вызовах stdcall, как и большинство функций стандартных библиотек windows.
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

Кто-нибудь из вас где-нибудь встречал плагины к Total Commander, целиком написанные на одном из ассемблеров?

Судя по этому осуждению. 2 из 3-х плагинов с этой страницы тоже написаны на ассемблере, но исходников там не наблюдается.
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

mc-black писал(а):D1P, а почему ты так считаешь? По-моему ассемблер можно применить для написания всех видов плагинов Total Commander.
Несопоставимое соотношение скорости раработки к функционалу. Писать на асме имеет смысл только для саморазвития. К тому же, для подавляющего большинства плагинов ассемблерная оптимизация не будет иметь смысла, т.к. всё упрётся в скорость обработки самим TC. Например, абсолютно неважно, с какой скоростью я подготовлю список для вывода на панель - TC всё равно отобразит его с ужасающей скоростью...
mutex
Сообщения: 134
Зарегистрирован: Чт дек 16, 2004 15:48
Откуда: Казахстан
Контактная информация:

Сообщение mutex »

Нижеследующий Листер-плагин "Просмотр файлов баз данных в формате DBF (Dbase, Paradox)" имеет размер всего 25 КБ. Думаю, что он уж точно написан на Ассемблере:
http://wincmd.ru/plugring/dbfview.html

Обратите внимание на дату выпуска плагина: 12.11.2003 !!!
Т.е. Ассемблер применяется уже давно.
mc-black
Сообщения: 7
Зарегистрирован: Чт фев 07, 2008 16:28
Откуда: Нижний Новгород
Контактная информация:

Сообщение mc-black »

2 Lev:
Да, похоже всё судя по размеру написано на ассемблере. Архивы по 8 килобайт и т.п. Я смотрел только один из трех плагинов, листер-плагин. Так вот, там код довольно плотно и компактно написанных, ниаких лишних nop'ов или int 3 (только одна функция слегка особняком, на то могли быть причины, связанные с отладкой). Вот это и есть пример качественно написанного плагина, писал энтузиаст.

2 D1P:
Несопоставимое соотношение скорости разработки к функционалу, это основной довод против использования его в разработках. Не забудьте ещё полную непригодность для портирования программ на другие программные/аппаратные платформы, отсутствие стандартных библиотек и сложное восприятие кода при отсутствии должных комментатиев. На мой взгляд, с учётом всего написанного выше, на нем всё-таки можно относительно быстро разрабавывать структурированные программы подобно языку си (за минусом портируемости и т.п). Зато размер программы, и ещё важнее эффективное использование памяти и процессорного времени. Я не настаиваю на повсеместном применении именно асма, но по-моему энтузиасты на асм могли бы сделать немало системных утилит, а также полезных инструментов для разработчиков. Кстати ты прав насчёт скорости вывода тотал коммандером списков, сформированных плагином. В этом смысле любая windows-программа никогда не выпрыгнет за рамки того, что позволяет система при обработке API-вызовов, кроме драйверов режима ядра.

2 mutex:
59392 байт - очень спорный вопрос, это может быть что угодно, в том числе даже Delphi, эффективно написанный и оптимизированный ;) К тому же такие программы просто используют api давно уже написанных драйверов баз данных, я прав?
mutex
Сообщения: 134
Зарегистрирован: Чт дек 16, 2004 15:48
Откуда: Казахстан
Контактная информация:

Сообщение mutex »

> 59392 байт - очень спорный вопрос, это может быть что угодно, в том числе даже Delphi
Видимо файл плагина запакован чем-то. Точно не помню, но где-то читал про автора плагина - Сергея Чехута, о том, что он - ассемблерщик. Можно сходить на его сайт: http://www.whitetown.com/cdbfview/ и спросить его.
Все равно, для утилиты баз данных это очень крохотный размер. Сравните с моим Дельфи-плагином: http://wincmd.ru/plugring/xBaseView.html, который без упаковки весит аж 3 мегабайта!
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

mutex писал(а): Сравните с моим Дельфи-плагином: http://wincmd.ru/plugring/xBaseView.html, который без упаковки весит аж 3 мегабайта!
Но твой плагин и может гораздо больше. По сути, это полнофункциональный редактор, в то время, как просмотр DBF - не очень сложен. Я, лет пять назад, писал на дельфе простенькую программку, которая конвертировала DBF в CSV. Описания структуры DBF у меня не было, тем не менее, разобрался.
mc-black
Если сам знаешь плюсы и минусы, тогда в чём вопрос? Вперёд, писать плагины.
mc-black
Сообщения: 7
Зарегистрирован: Чт фев 07, 2008 16:28
Откуда: Нижний Новгород
Контактная информация:

Сообщение mc-black »

формат DBF сам по себе очень простой. автор мог использовать нестандартные библиотеки, которые компилировал, с умом подбирая версию компилятора и линкера, параметры командной строки, словом не тупо жал кнопку Build (или какая там имеется). я думаю, чтобы уложиться в этот размер для функционала того самого плагина можно было использовать много что, даже необязательно ассемблер. если оптимизировать на асме этот плагин бы занял меньше 15-20K, скорее даже где-то 12K. пакер после компиляции этой библиотеки не использовался, уверяю вас (загрузите программу в отладчике). мало того, на ассемблере редко нужно выполнять такие инструкции, как:

db 0 ;в секции кода между процедурами!
mov esi,esi ;между процедурами, встречается не меньше, чем пару раз!
nop ;до и после процедуры

все эти выражения просто трезвый человек не станет ставить посреди программы, т.к. они ничего не делают. это может вставить только искусственный - оттого и недоразвитый - интеллект компилятора.
Ответить