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

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

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

Когда-то давно это было вполне допустимо и считалось признаком мастерства. Во времена 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
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
310K
долларов
до 18 лет
Антипов жжет
Ребёнок как убыточный
актив. Считаем честно.
Почему рожают меньше те, кто умеет считать на десять лет вперёд.

VxLab

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

FREE
100%
Кибербезопасность · Обучение
УЧИСЬ!
ИЛИ
ВЗЛОМАЮТ
Лучшие ИБ-мероприятия
и вебинары — в одном месте
ПОДПИШИСЬ
T.ME/SECWEBINARS