Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Относительно эффективности встроенного ассемблера [Delphi, Windows]


Deimos ©   (2003-10-29 20:39:00) 

Возник вопрос, Что эффективне? использовать встроенный ассемблер внутри KOL-овских функций или написать процедуру целиком на Ассемблере и вызывать её,
Но тут возникает другой вопрос, Умеет ли дельфи переводить свой код напямую в Ассемблер??


BorisMor   (2003-11-11 10:27:00) [1]

PE Tools
http://neox.pisem.net/petools.html
Там есть опция "Rebuld PE"


Deimos   (2003-11-10 19:21:00) [2]

кстати, половина прог выложенных на http://protools.anticrack.de/utilities.htm
с Delphi-KOL проектами не работают, там всё в основном на Assembler заточено.


RA   (2003-11-10 14:13:00) [3]

А какие-нибудь конкретные проги посоветовать можешь?


Deimos   (2003-10-31 12:36:00) [4]

Спасибо, попробую..


Vladimir Kladov   (2003-10-31 05:34:00) [5]

http://protools.anticrack.de/utilities.htm
там есть все, что нужно, чтобы заменить/удалить стуб, выровнять PE и т.д. и т.п.


Deimos   (2003-10-31 00:01:00) [6]

Кстати, раз уж зашел разговор об оптимизации,
Как показывает опыт 60-90 процентов кода представляют собой просто воздух из нулей пошедших на выравнивание секций по адресам кратным, если я не ошибаюсь, 4кб..
Неплохо-бы заставить компилятор уменьшить кратность...
В Ассемблере это просто, там можно просто указать линкеру, что, мол, используй выравнивание по 4 байта (это минимальный возможный вариант) и размер проги сильно уменьшается, (например "hello world"в виде messageBox линкуемый по умолчанию имеет размер 2500 байт, а с минимальным выравниванием 740 байт !!!!!!(и это полноценная виндовая прога) и тоже работает без глюков), как-бы это на дельфи реализовать?
Хотя, это тоже не предел,
можно-же выкинуть MS-DOS stub, он всё-равно не нужен, а место занимает..
Можно и еще порезать. но это уже Дельфи не под силу, я думаю.. (типа очистки IMAGE_DIRECTORY, OLD EXE/PE-заголовков и др. подобные изменения)

Обращаюсь персонально к Господину Кладову..... Раз уж вам удалось заставить Дельфи резать лишний код, может быть и над этим подумаете ?
PS: Хотя-бы удаление MS-DOS stub,,


miek   (2003-10-30 16:19:00) [7]

У встроенного асма есть такая неприятная особенность - не умеет выравнивать код.

2Legran: Никаких pusha/popa не вставляется. Сам посмотри.


Legran   (2003-10-30 13:01:00) [8]

ИМХО имеет смысл писать на асме токо глубоко вложенные циклы.
иначе такая "оптимизация" сильно снижает эффективность _НАПИСАНИЯ_ПРОГРАММЫ_, что порой важнее учитывая современные возможности техники.

А что касается вопроса по встроенным фун-ям в кол(в делпхи на самом деле), знайте процедура ВСТАВЛЕНАЯ на асме существенно не отличается от процедуры НАПИСАННОЙ на асме и подгружаемой допустим из длл, просто в делпхи выполняется инициализация и финализация для защиты данных(ака pusha/popa).


Anatoly Podgoretsky   (2003-10-29 22:52:00) [9]

Эффективность в случае примения вставок падает, из за потери в оптимизаторе


Vladimir Kladov   (2003-10-29 22:19:00) [10]

Что касаемо KOL, эффективности ассемблер не добавляет (если эффективность=скорость). Размер, правда, уменьшает. Потому как по размеру Delphi оптимизировать не умеет.


mdw   (2003-10-29 21:49:00) [11]

Возник вопрос, Что эффективне? использовать встроенный ассемблер внутри KOL-овских функций или написать процедуру целиком на Ассемблере и вызывать её

Насколько понял, вопрос о том, что эффективнее, процедура с asm-вставками, или полностью ассемблерная? Конечно полностью.
Хотя особо смысла нет, выигрыш будет небольшой, кроме отдельных случаев. В Delphi компилятор и так неплохо оптимизирует код.

Но тут возникает другой вопрос, Умеет ли дельфи переводить свой код напямую в Ассемблер??

Это как? Delphi свой код переводит в исполняемый, в Ассемблер то еще зачем? Или нужно посмотреть, что получилось при компиляции? тогда CPU window.


Наверх

Титульная страница Поиск, карта сайта Написать письмо