Board.KolibriOS.org
http://board.kolibrios.org/

Интересная статья по поводу ассемблера и компиляторов С/C++
http://board.kolibrios.org/viewtopic.php?f=6&t=1466
Page 1 of 1

Author:  Андрей Михайлович [ Thu Jul 22, 2010 10:52 pm ]
Post subject:  Интересная статья по поводу ассемблера и компиляторов С/C++

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

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

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

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

Author:  SII [ Fri Jul 23, 2010 7:20 am ]
Post subject:  Re: Интересная статья по поводу ассемблера и компиляторов С/

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

Page 1 of 1 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/