Ассемблер, прощай!

Ассемблер, прощай!
Приятель, если ты соблюдаешь верность ассемблеру, а не пишешь на си - эта статья для тебя.

Почему многие пишут только на асме?

Когда-то давно это было вполне допустимо и считалось признаком мастерства. Во времена 32-битных систем это было вполне оправданно, но с приходом 64-битных, ассемблерщикам пришлось не сладко.
Разумеется, основные опкоды просто расширили DWORD до QWORD и стали занимать места на 4 байта больше. В 64-битном мире больше не нужны релоки, все относительные адреса помещаются в 4 байта!
Я постараюсь перечислить основные преимущества Си: как оказалось есть множество людей, которые не могут пересесть на новую лошадку, в силу страха неизвестного или предубеждений.
  1. Легкая компиляция как в 32 так и 64 битных файлов. Зачастую достаточно просто переключить режим сборки и если код написан правильно, он будет одинаково хорошо работать и там и там. Единственное ограничение - ассемблерные вставки, для 64 битных сборок их надо делать в отдельном файле.
  2. Больше хидеров. Каждый кто писал на асме знает - перегонять хидеры из msdn - неизбежное зло. На си они поставляются вместе с sdk или даже visual studio.
  3. Больше исходников. В силу того, что написав приложение используя только стандартную библиотеку си - оно будет кросплатформенно, исходников на си огромное множество. Больше не придется выдирать бинарные куски или переписывать алгоритмы с других языков.
  4. Классы, у Си с плюсами есть эта классная фишка. Они могут казаться чем-то подозрительным, но когда вы посмотрите как они выглядят в ассемблированном виде вы успокоитесь. Классы абсолютно не избыточны и не тормозят работу программы, но ускоряют разработку и облегчают понимание кода.
  5. Оптимизация. Коронная фишка ассемблера. Времена ms-dos давно прошли, никто не заметит лишнюю пару сотен процессорных тактов, да и ключи оптимизации компилятора позволят сильно срезать углы! На хабре обсуждалось какие ключи дают лучшую производительность, но скажу по секрету, что лучшую производительность даёт лучший алгоритм.
  6. Дебаг. Снова ставить int3 и ловить исключение в Olly? Нет, отладка в VisualStudio позволяет идти прямо по сишному коду, заглядывая в значение переменных, раскрывая вложенные структуры и даже подсматривая ассемблерный код!
  7. Скорость. Всё вышеизложенное приводит к ускорению рабочего цикла, от задумки до релиза. Ты думаешь о действительно важных вещах, а не о том какой выбрать регистр.
Для меня решающим фактором для перехода на Си и плюсы в частности послужил класс Cmem , который избавил меня от головной боли по поводу утечки памяти. Деструктор (функция вызываемая при выходе из области видимости экземпляра класса, по сути перед ret в функции) - освобождал мою память неявно и автоматически, чем полностью покорил моё сердце...

P/S Если вы тоже прошли долгий путь от "Пишу всё на ассемблере" до "Пересел на си", расскажите о нём в комментариях !
Alt text

Где кванты и ИИ становятся искусством?

На перекрестке науки и фантазии — наш канал

Подписаться

VxLab

Blog о вирусных технологиях