Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Относительно эффективности встроенного ассемблера   Найти похожие ветки 

 
Deimos   (2003-10-29 20:39) [0]

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


 
Deimos   (2003-10-29 20:39) [0]

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


 
mdw ©   (2003-10-29 21:49) [1]

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

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

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

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


 
mdw ©   (2003-10-29 21:49) [1]

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

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

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

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


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

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


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

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


 
Anatoly Podgoretsky ©   (2003-10-29 22:52) [3]

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


 
Anatoly Podgoretsky ©   (2003-10-29 22:52) [3]

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


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

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

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


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

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

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


 
miek ©   (2003-10-30 16:19) [5]

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

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


 
miek ©   (2003-10-30 16:19) [5]

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

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


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

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

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


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

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


 
BorisMor ©   (2003-11-11 10:27) [11]

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


 
BorisMor ©   (2003-11-11 10:27) [11]

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



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.036 c
1-1082457212
Паша5
2004-04-20 14:33
2004.05.09
Удаление пустых строк в StringGrid


1-1082360458
k&k
2004-04-19 11:40
2004.05.09
Drag&Drop


1-1082540079
4aynik
2004-04-21 13:34
2004.05.09
Да как же открыть типиз-й файл для чтения? даже смешно :)


3-1082049671
Koba
2004-04-15 21:21
2004.05.09
Запросы


1-1082842374
hiperLogun
2004-04-25 01:32
2004.05.09
Сканирование дерева каталогов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский