Сравнение Си и Ассемблера...

Здравствуйте уважаемые господа программисты, как начинающие, так и профи! У меня чисто теоретический вопрос: действительно ли эффективны/неэффективны Си-компиляторы, и насколько можно выйграть переписав программу на языке Ассемблера? Какую цену придётся заплатить за это? Заранее всех блогадарю... C уважением: Sota.
9 ответов

Смотря что писать/переписывать собираешься. Если быстродействие и размер не столь критичны, незачем самоистязанием заниматься. Если имеется ввиду не с++ былдєр, то выигрышь в размере можно и не заметить


Нет, БЭЛДЕР и не имел в виду. Меня интересует только отношение Си - Ассемблер. Выходит, что Ассемблер не такой уж и незаменимый? То есть те цели, которые им часто решают без гемороя можно решить на чистом Си? И ещё, если же всё-таки он незаменимый в каких-то областях, можете сказать в каких?


Им можно определятьнастройки железа. Дрова писать, вирусятину там всякую... Хотя это можно и на C++ сделать. Я сомневаюсь, что он такой незаменимый. О! Проги ломать! В смысле asm код корректировать...


Ну вообще я так и думал. Assembler ведь очень "приближён" к железу. Так что действительно. Ассемблер язык хакеров!


Компилеров с++ существует большое множество. У большинства мне известных очень и очень гибкие настройки компиляции кода, и серьезные оптимизаторы. Самым эффективным по кодогенерации считается Intel C++, компилер от производителей проца. Ессно, кому как не им хорошо знать архитектуру своих кремниевых продуктов. Но и заточен этот с++ под те же процессоры и архитектуру.На чем собирать свои проекты - вопрос сложности, обьема проекта и вкусов. Писать чистым ассемблером нет смысла, т.к. есть множество нюансов - очень много кода на интерфейс, возможно компоненты или библиотеки, которые будут использоваться.Компромисс (если таков необходим, например в сложных вычислительных алгоритмах, где допустим, наамного эффективнее будет с SSE, SSE2, а компилер и знать не знает о таких) - включение в сишный код асмовского, использование внешних асмовских процедур.Переписывать или нет? Аналогично тому, писать или нет - уже ответил. Самое лучшее правило - золотая середина. Без крайностей. И если это действительно нужно.


Ну вообще я так и думал. Assembler ведь очень "приближён" к железу. Так что действительно. Ассемблер язык хакеров!
Ну если совсем уж низкоуровневое программирование, оси там, загрузчики, микроконтроллеры в конце-концов, тогда и выбора особо не остаётся.


Ну насчёт облостей применения понятно. А на счёт вставки Ассемблерного кода: каким образом его вставить в С\С++ код например? Можете привести код простой программы?


Ну насчёт облостей применения понятно. А на счёт вставки Ассемблерного кода: каким образом его вставить в С\С++ код например? Можете привести код простой программы?
Вот вставка:
asm
{
 
}


Ну чтож, понятно. Всю необходимую для себя информацию я получил. Большое всем спасибо! С уважением: Sota.