Page 1 of 1

Интересная статья по поводу ассемблера и компиляторов С/C++

Posted: Thu Jul 22, 2010 10:52 pm
by Андрей Михайлович
Наткнулся на интересную статью Криса Касперски под "интригующим" названием :mrgreen: Война миров: Ассемблер против Cи.

В статье достаточно много интересного, в том числе разбор и анализ генерируемого C-компиляторами машинного кода (рассматриваемые версии компиляторов, правда, на сегодняшний день несколько устарели).

Тем, кто не читал, рекомендую ознакомиться. Не "войны" ради, а просто ради интереса :D .

З.Ы.: написал бы в Оффтоп, но он закрыт :?:

Re: Интересная статья по поводу ассемблера и компиляторов С/

Posted: Fri Jul 23, 2010 7:20 am
by SII
Ну, я под АРМ пишу недоось по работе. Основная её часть будет на Аде (компилятор GNAT, входящий в состав GCC), на асме только первичные обработчики прерываний и т.п. вещи (они уже написаны и даже типа работают). Так вот, выяснилось, что кодогенерация у GCC отнюдь не фонтан: транслятор переставляет блоки операторов, выполняемые по условию (т.е. тела if'ов), не помнит содержимое регистров и т.п. (оптимизация что -O2, что -O3). Для интереса перепроверил, переписав небольшую подпрограммку на Си -- с тем же результатом, т.е. здесь проблема не в фронт-энде компилятора, а именно в оптимизаторе-кодогенераторе. В общем, без всякого напряга извилин при ручном программировании под АРМ 5-10% инструкций можно благополучно выкинуть. Сдаётся мне, что и под ИА-32 написать более эффективно, чем делает компилятор, позиционируемый как очень эффективный, можно без особых проблем. Другое дело, что разработка на ассемблере более трудоёмка и занимает больше времени, но разница отнюдь не в разы. У меня, например, основное время уходит на документирование и т.п. вещи, а они вообще никак не связаны с используемым языком.