Плагины на ассемблере
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
-
mc-black
- Сообщения: 7
- Зарегистрирован: Чт фев 07, 2008 16:28
- Откуда: Нижний Новгород
- Контактная информация:
Плагины на ассемблере
Уважаемые форумчане!
Кто-нибудь из вас где-нибудь встречал плагины к Total Commander, целиком написанные на одном из ассемблеров? Просто я сделал как пример минимальный fs-плагин на masm (компилируется в MASM32v9). Здесь, на русскоязычном форуме в поиске я нашел только два упоминания о ассемблере, причем в одном топике использовалась мелкая ассемблерная вставка в 3-5 инструкций, а в другом топике какой-то авторитет от C# что-то ляпнул про сравнение асм и яву, так и непонятно что.
Мне кажется, среди людей, которые пишут приложения, утилиты и драйвера на ассемблере нашлось бы немало желающих написать для себя лично (а заодно для других) полезный, удобный плагин. Раньше мне встречались старые версии документации по написанию плагинов, где описание и примеры давались целиком применительно к паскалю. Понятно, что читать паскаль с лету и разбираться в нем не каждому будет интересно, когда с ним он только мельком знаком. Зато когда появилась нормальная документация и примеры на си, всё изменилось в лучшую сторону. Большинство ассемблерщиков если не пишут на си, то в любом случае хорошо разбираются в документации, написанной преимущественно применительно к си.
Вот я и хочу продвинуть эту идею в массы и ищу единомышленников и т.д. и т.п. Могу даже минимально поучаствовать в выкладке исходников плагинов на ассемблере или составить перевод небольшого участка документации по написанию плагинов к Total Commander или написать маленький мануальчик по разработке плагинов на ассемблере (MASM). Короче, жду откликов.
Кто-нибудь из вас где-нибудь встречал плагины к Total Commander, целиком написанные на одном из ассемблеров? Просто я сделал как пример минимальный fs-плагин на masm (компилируется в MASM32v9). Здесь, на русскоязычном форуме в поиске я нашел только два упоминания о ассемблере, причем в одном топике использовалась мелкая ассемблерная вставка в 3-5 инструкций, а в другом топике какой-то авторитет от C# что-то ляпнул про сравнение асм и яву, так и непонятно что.
Мне кажется, среди людей, которые пишут приложения, утилиты и драйвера на ассемблере нашлось бы немало желающих написать для себя лично (а заодно для других) полезный, удобный плагин. Раньше мне встречались старые версии документации по написанию плагинов, где описание и примеры давались целиком применительно к паскалю. Понятно, что читать паскаль с лету и разбираться в нем не каждому будет интересно, когда с ним он только мельком знаком. Зато когда появилась нормальная документация и примеры на си, всё изменилось в лучшую сторону. Большинство ассемблерщиков если не пишут на си, то в любом случае хорошо разбираются в документации, написанной преимущественно применительно к си.
Вот я и хочу продвинуть эту идею в массы и ищу единомышленников и т.д. и т.п. Могу даже минимально поучаствовать в выкладке исходников плагинов на ассемблере или составить перевод небольшого участка документации по написанию плагинов к Total Commander или написать маленький мануальчик по разработке плагинов на ассемблере (MASM). Короче, жду откликов.
Есть архиваторный плагин, полностью на ассемблере, с исходниками. Но кроме архиваторных плагинов (которые могут обрабатывать большие объёмы данных) я не вижу смысла в применении ассемблера.
-
mc-black
- Сообщения: 7
- Зарегистрирован: Чт фев 07, 2008 16:28
- Откуда: Нижний Новгород
- Контактная информация:
Ok, спасибо за ссылку, буду смотреть, когда понадобится писать WCX-плагин. К слову, плагин был написан уже давно, тогда большинство писало на tasm, сейчас это уже редкость. Сейчас пишут часто на masm и всё большую популярность начинает набирать fasm. Плагин по размеру вышел у Stanislaw Pusep крошка. Кто ещё видел плагины, написанные на asm? Есть желающие попробовать свои силы, реализовать какой-нибудь новый проект? Иначе будем считать, что я первый, кто на asm написал wfx-плагин 
P.S. Прикольно, D1P совсем на чуть-чуть позже, чем Lev, запостил одну и ту же ссылку. D1P, а почему ты так считаешь? По-моему ассемблер можно применить для написания всех видов плагинов Total Commander.
P.S. Прикольно, D1P совсем на чуть-чуть позже, чем Lev, запостил одну и ту же ссылку. D1P, а почему ты так считаешь? По-моему ассемблер можно применить для написания всех видов плагинов Total Commander.
-
DrShark
- Сообщения: 911
- Зарегистрирован: Сб окт 21, 2006 20:27
- Откуда: Kyiv, Ukraine
- Контактная информация:
Не знаю, можно ли отнести HiAsm к семейству ассемблеровКто ещё видел плагины, написанные на asm?
Посмотри здесь: http://www.ghisler.ch/wiki/index.php/Plugins_interfaces
-
mc-black
- Сообщения: 7
- Зарегистрирован: Чт фев 07, 2008 16:28
- Откуда: Нижний Новгород
- Контактная информация:
Да и тоже как-то в этом не уверенНе знаю, можно ли отнести 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
- Откуда: Нижний Новгород
- Контактная информация:
2 Моторокер:
1. Замечаний пока нет, но возможно будут.
2. Насчёт объёма плагина: при настоящей цене EDGE-трафика моего провайдера объём продолжает иметь для меня значение. А скорость - второй по значению критерий качества любого архиватора (это касательно архиваторных плагинов).
3. В принципе согласен с тем, что не так важно, на чём написан плагин, главное чтобы он был. Просто чем больше программеров вовлечено в написание плагинов, тем больше плагинов полезных и разных будет написано. Для этого всесторонняя документация и свободный доступ к исходникам примеров на мой взгляд очень полезны.
4. А вот компоненты, KOL/MCK - это чисто борландовские понятки. Ясней всего было бы сказать, что плагин - это обычная dll, использующая соглашение о вызовах stdcall, как и большинство функций стандартных библиотек windows.
1. Замечаний пока нет, но возможно будут.
2. Насчёт объёма плагина: при настоящей цене EDGE-трафика моего провайдера объём продолжает иметь для меня значение. А скорость - второй по значению критерий качества любого архиватора (это касательно архиваторных плагинов).
3. В принципе согласен с тем, что не так важно, на чём написан плагин, главное чтобы он был. Просто чем больше программеров вовлечено в написание плагинов, тем больше плагинов полезных и разных будет написано. Для этого всесторонняя документация и свободный доступ к исходникам примеров на мой взгляд очень полезны.
4. А вот компоненты, KOL/MCK - это чисто борландовские понятки. Ясней всего было бы сказать, что плагин - это обычная dll, использующая соглашение о вызовах stdcall, как и большинство функций стандартных библиотек windows.
Несопоставимое соотношение скорости раработки к функционалу. Писать на асме имеет смысл только для саморазвития. К тому же, для подавляющего большинства плагинов ассемблерная оптимизация не будет иметь смысла, т.к. всё упрётся в скорость обработки самим TC. Например, абсолютно неважно, с какой скоростью я подготовлю список для вывода на панель - TC всё равно отобразит его с ужасающей скоростью...mc-black писал(а):D1P, а почему ты так считаешь? По-моему ассемблер можно применить для написания всех видов плагинов Total Commander.
-
mutex
- Сообщения: 134
- Зарегистрирован: Чт дек 16, 2004 15:48
- Откуда: Казахстан
- Контактная информация:
Нижеследующий Листер-плагин "Просмотр файлов баз данных в формате DBF (Dbase, Paradox)" имеет размер всего 25 КБ. Думаю, что он уж точно написан на Ассемблере:
http://wincmd.ru/plugring/dbfview.html
Обратите внимание на дату выпуска плагина: 12.11.2003 !!!
Т.е. Ассемблер применяется уже давно.
http://wincmd.ru/plugring/dbfview.html
Обратите внимание на дату выпуска плагина: 12.11.2003 !!!
Т.е. Ассемблер применяется уже давно.
E.Savich
http://www.xbaseview.com
http://www.xbaseview.com
-
mc-black
- Сообщения: 7
- Зарегистрирован: Чт фев 07, 2008 16:28
- Откуда: Нижний Новгород
- Контактная информация:
2 Lev:
Да, похоже всё судя по размеру написано на ассемблере. Архивы по 8 килобайт и т.п. Я смотрел только один из трех плагинов, листер-плагин. Так вот, там код довольно плотно и компактно написанных, ниаких лишних nop'ов или int 3 (только одна функция слегка особняком, на то могли быть причины, связанные с отладкой). Вот это и есть пример качественно написанного плагина, писал энтузиаст.
2 D1P:
Несопоставимое соотношение скорости разработки к функционалу, это основной довод против использования его в разработках. Не забудьте ещё полную непригодность для портирования программ на другие программные/аппаратные платформы, отсутствие стандартных библиотек и сложное восприятие кода при отсутствии должных комментатиев. На мой взгляд, с учётом всего написанного выше, на нем всё-таки можно относительно быстро разрабавывать структурированные программы подобно языку си (за минусом портируемости и т.п). Зато размер программы, и ещё важнее эффективное использование памяти и процессорного времени. Я не настаиваю на повсеместном применении именно асма, но по-моему энтузиасты на асм могли бы сделать немало системных утилит, а также полезных инструментов для разработчиков. Кстати ты прав насчёт скорости вывода тотал коммандером списков, сформированных плагином. В этом смысле любая windows-программа никогда не выпрыгнет за рамки того, что позволяет система при обработке API-вызовов, кроме драйверов режима ядра.
2 mutex:
59392 байт - очень спорный вопрос, это может быть что угодно, в том числе даже Delphi, эффективно написанный и оптимизированный
К тому же такие программы просто используют api давно уже написанных драйверов баз данных, я прав?
Да, похоже всё судя по размеру написано на ассемблере. Архивы по 8 килобайт и т.п. Я смотрел только один из трех плагинов, листер-плагин. Так вот, там код довольно плотно и компактно написанных, ниаких лишних nop'ов или int 3 (только одна функция слегка особняком, на то могли быть причины, связанные с отладкой). Вот это и есть пример качественно написанного плагина, писал энтузиаст.
2 D1P:
Несопоставимое соотношение скорости разработки к функционалу, это основной довод против использования его в разработках. Не забудьте ещё полную непригодность для портирования программ на другие программные/аппаратные платформы, отсутствие стандартных библиотек и сложное восприятие кода при отсутствии должных комментатиев. На мой взгляд, с учётом всего написанного выше, на нем всё-таки можно относительно быстро разрабавывать структурированные программы подобно языку си (за минусом портируемости и т.п). Зато размер программы, и ещё важнее эффективное использование памяти и процессорного времени. Я не настаиваю на повсеместном применении именно асма, но по-моему энтузиасты на асм могли бы сделать немало системных утилит, а также полезных инструментов для разработчиков. Кстати ты прав насчёт скорости вывода тотал коммандером списков, сформированных плагином. В этом смысле любая windows-программа никогда не выпрыгнет за рамки того, что позволяет система при обработке API-вызовов, кроме драйверов режима ядра.
2 mutex:
59392 байт - очень спорный вопрос, это может быть что угодно, в том числе даже Delphi, эффективно написанный и оптимизированный
-
mutex
- Сообщения: 134
- Зарегистрирован: Чт дек 16, 2004 15:48
- Откуда: Казахстан
- Контактная информация:
> 59392 байт - очень спорный вопрос, это может быть что угодно, в том числе даже Delphi
Видимо файл плагина запакован чем-то. Точно не помню, но где-то читал про автора плагина - Сергея Чехута, о том, что он - ассемблерщик. Можно сходить на его сайт: http://www.whitetown.com/cdbfview/ и спросить его.
Все равно, для утилиты баз данных это очень крохотный размер. Сравните с моим Дельфи-плагином: http://wincmd.ru/plugring/xBaseView.html, который без упаковки весит аж 3 мегабайта!
Видимо файл плагина запакован чем-то. Точно не помню, но где-то читал про автора плагина - Сергея Чехута, о том, что он - ассемблерщик. Можно сходить на его сайт: http://www.whitetown.com/cdbfview/ и спросить его.
Все равно, для утилиты баз данных это очень крохотный размер. Сравните с моим Дельфи-плагином: http://wincmd.ru/plugring/xBaseView.html, который без упаковки весит аж 3 мегабайта!
E.Savich
http://www.xbaseview.com
http://www.xbaseview.com
Но твой плагин и может гораздо больше. По сути, это полнофункциональный редактор, в то время, как просмотр DBF - не очень сложен. Я, лет пять назад, писал на дельфе простенькую программку, которая конвертировала DBF в CSV. Описания структуры DBF у меня не было, тем не менее, разобрался.mutex писал(а): Сравните с моим Дельфи-плагином: http://wincmd.ru/plugring/xBaseView.html, который без упаковки весит аж 3 мегабайта!
mc-black
Если сам знаешь плюсы и минусы, тогда в чём вопрос? Вперёд, писать плагины.
-
mc-black
- Сообщения: 7
- Зарегистрирован: Чт фев 07, 2008 16:28
- Откуда: Нижний Новгород
- Контактная информация:
формат DBF сам по себе очень простой. автор мог использовать нестандартные библиотеки, которые компилировал, с умом подбирая версию компилятора и линкера, параметры командной строки, словом не тупо жал кнопку Build (или какая там имеется). я думаю, чтобы уложиться в этот размер для функционала того самого плагина можно было использовать много что, даже необязательно ассемблер. если оптимизировать на асме этот плагин бы занял меньше 15-20K, скорее даже где-то 12K. пакер после компиляции этой библиотеки не использовался, уверяю вас (загрузите программу в отладчике). мало того, на ассемблере редко нужно выполнять такие инструкции, как:
db 0 ;в секции кода между процедурами!
mov esi,esi ;между процедурами, встречается не меньше, чем пару раз!
nop ;до и после процедуры
все эти выражения просто трезвый человек не станет ставить посреди программы, т.к. они ничего не делают. это может вставить только искусственный - оттого и недоразвитый - интеллект компилятора.
db 0 ;в секции кода между процедурами!
mov esi,esi ;между процедурами, встречается не меньше, чем пару раз!
nop ;до и после процедуры
все эти выражения просто трезвый человек не станет ставить посреди программы, т.к. они ничего не делают. это может вставить только искусственный - оттого и недоразвитый - интеллект компилятора.