Показать сообщение отдельно
Старый 01.02.2012, 18:14   #30   
Форумец
 
Аватар для Spectator
 
Сообщений: 40,049
Регистрация: 27.05.2003
Возраст: 46

Spectator вне форума Не в сети
Цитата:
Сообщение от Pengvin Посмотреть сообщение
В конечном счете знания АСМа в 21 веке нужны:
1) безусловно
2) Почему только математика? Переборные алгоритмы, шифрация/дешифрация, аудио-видео кодеки, игры и т.д.
3) Кэш - совсем не панацея. Его еще неплохо бы уметь правильно использовать для этого знание ассемблера тоже не помешает.
4) Совершенно верно, такие вещи обычно пишут на чистом C (не C++)

5) (от меня уже) Самое важное - знания АСМа нужны для того чтобы понимать как работает то что ты делаешь, и во что выльется твой код.
6) Для того чтобы эффективно оптимизировать программы как на языке высокого уровня так и непосредственно на ассемблере.
7) Исправление ошибок из ряда "это ДОЛЖНО работать, какого хрена?"

Кстати, вспомнил еще об одном применении, в список не буду включать, бо довольно специфичное. Когда я писал оболочку для винды, у меня задача была чтобы всё было очень красиво и динамично, чтобы она выдвигалась плавно, а не резко как обычная виндовая, и всякие такие красивые прибамбасы. Но при этом эта штука не должна была жрать процессор. Поскольку по сути это - погремушка, кому она нужна, если будет отнимать 10% процессорного времени в ущерб, скажем, компилятора, игры и пр.

Я стал исследовать внутренности частовызываемых виндовых функций и с удивлением обнаружил что многие, даже очень небольшие, фунции являются заглушками (stub) для других, большая часть из которых недокументирована. В некоторых были предварительные проверки параметров, в некоторых нет. Я заменил вызовы на прямые, возможно некоторые из этих stub'были нужны для совместимости с прошыми / будущими версиями винды, но у меня проект изначально был жестко заточен на конкретную операционку.

После этого программа заработала заметно быстрее, в плане того что стала меньше грузить процессор, больше 1% не было даже на "самых крутых поворотах" (вполне реально, там даже окон не было, вся отрисовка на DirectDraw). Хотя собственно ассемблерных вставок там ЕМНИП и не было.

Таким образом добавляется еще один пункт, отдельный:

8) Реверсинжиниринг операционки с целью оптимизации программы
  Ответить с цитированием