|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.12.2011, 03:38 | #1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Ассемблерные вставки в delphi код. Где этому научится?
Доброго времени суток!
Правильно ли считать, что ассемблерные вставки в код, будут выполнятся быстрее чем простой код? Мне не достаточно той информации об ассемблере в delphi, может есть книги которые научат(С хорошими примерами и обьяснениями) писать ASM вставки в код? |
19.12.2011, 05:04 | #2 | |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Цитата:
Мне нужно было ручками перевернуть и наложить альфа-градиент для изображения, но делать это очень быстро, т.к. вызов этого кода происходил многократно и часто. Делать это создавая новый битмап, затем переворачивать, затем градиент...или же идти по строчно с середины битмапа (уже существующего) и одновременно вычислять градиент значение и копировать его в другую строку. В итоге пройден битмап за половину времени и перевернут и сразу же наложен градиент. Такое выполнить я не смог в коде (C++ правда, но не важно), вставки ASM дали невероятный прирост в скорости и снизили нагрузку CPU. |
|
19.12.2011, 09:59 | #3 |
***
Участник клуба
Регистрация: 30.07.2007
Сообщений: 1,162
|
Изучайте просто асм. Потом достаточно будет пары примеров, чтобы использовать его в delphi.
|
19.12.2011, 10:01 | #4 | |
Форумчанин
Регистрация: 05.10.2011
Сообщений: 368
|
Цитата:
для начала надо просто изучить матчасть, и в совершенстве знать что/откуда/как/каким образом работает
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
|
|
19.12.2011, 10:34 | #5 | |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
Человек_Борща
А ведь модератор нашего (извините, если что) форума написал книгу о программировании на асме под x86. Она подойдёт? ВОВАН13 Цитата:
1. Простой-то переводится, а ассемблерный? ИМХО, экономия как раз из-за того, что ассемблерный код переводить не нужно. 2. Всем уже известно, что процессору нужны лишь команды процессора (машинные коды), а не код, пускай даже на асме. Зачем код переводить сначала в ассемблер, а затем в машинные команды, а не сделть это напрямую? Или это так организовано? Кстати, ещё вот что. Считаю, что ассемблером уместно пользоваться ещё и тогда, когда необходимо получить прямой доступ к железу. ИМХО. |
|
19.12.2011, 12:16 | #6 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Ясно.
Знающие люди, можно посоветовать хорошие книги от которых реально можно чему-то научится? Цитата:
2. Процессор ест интерпритированный байт-код, но никак не ассемблерные вставки. Откройте любой компилятор, да посмотрите весь процесс создания понятных для процессора инструкций. Ассемблерный транслировать легче и быстрее. Последний раз редактировалось Человек_Борща; 19.12.2011 в 12:23. |
|
19.12.2011, 18:17 | #8 | ||
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Само по себе переписывание кода в ассемблер не даст ничего. Более того, если у тебя нет опыта машинной оптимизации, то с вероятностью в 99,9% твой ассемблерный код будет в разы хуже кода, оптимизированного компилятором. Правила просты (при условии, что эта же задача уже не решена, aka "просто воспользуйся хорошим готовым решением"): 1. Найти узкое место профайлером. 2. Нет узких мест? -> выход. 3. Оптимизируй код на ЯВУ. 4. Проверь результат. Удовлетворён? -> выход. 5. Оцени, насколько производительность кода важнее его сопровождения. Важен хороший код? -> выход. 6. Изучи ассемблерный листинг кода, сгенерированным компилятором. 7. Видишь места для улучшения? Нет -> выход. 8. Оптимизируй ассемблерный код. 9. Проверь результат. Стало хуже? Верни код на ЯВУ. 10. Стало лучше? Удовлетворён? -> выход. 11. Не удовлетворён? Ты достиг своих пределов. Самый важный тут пункт 1. Нет смысла говорить об оптимизации, если у тебя нет способов её измерить. Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
||
19.12.2011, 18:18 | #9 | |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Цитата:
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
|
19.12.2011, 18:27 | #10 | ||
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Цитата:
мой пост полистайте. а так, напрямую в машинные коды вы все равно не переведете, так или иначе это будет через инструкции ассемблера, но итоговое ассемблирование может быть встроено в компилятор(как неотделимый процесс), а может быть отдельной ступенью, которую можно отделить(у gcc так можно например). Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ассемблерные вставки в c++ | chupchupps | Помощь студентам | 1 | 09.02.2011 11:54 |
delphi ассемблерные вставки | tanek | Помощь студентам | 8 | 19.04.2010 18:35 |
ассемблерные вставки в delphi | viperrr | Помощь студентам | 2 | 09.12.2009 22:22 |
Ассемблерные вставки в Delphi | Jupiter | Общие вопросы Delphi | 2 | 24.08.2008 16:41 |
Ассемблерные вставки | Assassin | Помощь студентам | 1 | 26.05.2008 08:19 |