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

You can leave links to different KoOS-related sites and articles here
Post Reply
User avatar
Андрей Михайлович
ex Dron2004
Posts: 67
Joined: Sun Jul 18, 2010 12:44 pm

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

Post by Андрей Михайлович »

Наткнулся на интересную статью Криса Касперски под "интригующим" названием :mrgreen: Война миров: Ассемблер против Cи.

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

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

З.Ы.: написал бы в Оффтоп, но он закрыт :?:
SII
Posts: 214
Joined: Wed Dec 26, 2007 5:09 am

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

Post by SII »

Ну, я под АРМ пишу недоось по работе. Основная её часть будет на Аде (компилятор GNAT, входящий в состав GCC), на асме только первичные обработчики прерываний и т.п. вещи (они уже написаны и даже типа работают). Так вот, выяснилось, что кодогенерация у GCC отнюдь не фонтан: транслятор переставляет блоки операторов, выполняемые по условию (т.е. тела if'ов), не помнит содержимое регистров и т.п. (оптимизация что -O2, что -O3). Для интереса перепроверил, переписав небольшую подпрограммку на Си -- с тем же результатом, т.е. здесь проблема не в фронт-энде компилятора, а именно в оптимизаторе-кодогенераторе. В общем, без всякого напряга извилин при ручном программировании под АРМ 5-10% инструкций можно благополучно выкинуть. Сдаётся мне, что и под ИА-32 написать более эффективно, чем делает компилятор, позиционируемый как очень эффективный, можно без особых проблем. Другое дело, что разработка на ассемблере более трудоёмка и занимает больше времени, но разница отнюдь не в разы. У меня, например, основное время уходит на документирование и т.п. вещи, а они вообще никак не связаны с используемым языком.
unsteadysos
Posts: 1
Joined: Thu Nov 17, 2022 10:16 am

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

Post by unsteadysos »

As long as the human programmer doesn't force the algorithm's convolutions, AWP allows for a safe reduction of 5-10% of instructions. It seems to me that coding for IA-32 is more efficient than what the compiler, advertised as highly efficient, performs. Assembler development is more time-consuming and labor-intensive, although the difference is negligible at best. For instance, I spend a considerable portion of my time on tasks that have nothing to do with the language being used but do need extensive documentation.

phrazle
Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests