Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как ядро языка Си влияет на архитектуру процессоров, если учесть количество написанных на нём прог и либ?

Кууча фон Юча Гуру (3938), закрыт 5 лет назад
Кроме аппаратного инкремента/декремента
Дополнен 5 лет назад
Сорри за дубль
Лучший ответ
Андрей Высший разум (425598) 5 лет назад
Никак не влияет. Случаи подгонки архитектуры процессора под ЯВУ существуют, но достаточно редки. Ни одна популярная процессорная архитектура не ориентируется на какой-то конкретный язык программирования.

А вот язык C был подогнан под архитектуру PDP-11. Так что операции инкремента/декремента перекочевали в C из ассемблера PDP.

Например, классическое C'шное копирование строк
while(*(a++) = *(b++));
реализуется в PDP-11 двумя командами процессора, занимающими в сумме 4 байта: MOVB (пересылка байта с автоинкрементом адресов) + BNE (переход, если не 0).
Кууча фон ЮчаГуру (3938) 5 лет назад
Но инкремент и декремент в итоге стал везде аппаратным и быстрее исполняется, нежели x+=1;
Разумеется, если отключить оптимизацию

Я в вопросе не случайно упомянул количество уже написанных программ и библиотек. Си стал инструментом измерения производительности де-факто. И любой производитель стремится, чтобы написанный в первую очередь на Си софт работал максимально быстро, что требует подгонку под его абстрактную машину.
Андрей Высший разум (425598) Они стали аппаратными задолго до появления C. А на Fortran написано огромное кол-во математических библиотек. И до сих пор в суперкомпьютерах Fortran используют. Потому, что за 60 лет существования языка для него были наработаны эффективный методы построения оптимизирующих компиляторов для любой архитектуры. Важна не подгонка под ЯВУ, а удобство архитектуры для построения оптимизирующих компиляторов. Например, 16-битный набор команд x86 совершенно неудобен для автоматической оптимизации кода. Потому у меня одна и та же программа, написанная на C (целочисленная 32-битная арифметика), на ДВК-3м2 (1 МГц) работала существенно быстрее, чем на IBM-PC/AT (12 МГц).
Кууча фон ЮчаГуру (3938) 5 лет назад
И хотелось бы узнать выше мнение об этом посте
https://m.habr.com/ru/company/badoo/blog/420407/

Вы тоже считаете, что разработчик из Badoo не совсем адекватен?
Андрей Высший разум (425598) Смешались в кучу кони, люди... Много демагогии и мало смысла. Например, автор "не замечает", что архитектура современных CPU - следствие их универсальности, что GPU годится для решения только очень узкого круга специализированных задач и что производительность достигается тем, что GPU потребляет многократно больше энергии, чем CPU. Указывая на "проблемы" с кэшем, автор "не вспоминает", что в PDP-11 кэш уже был. И т. д. по тексту. Мешанина совершенно не связанных между собой громких фраз, призванных создать определённое впечатление у не специалиста.
Остальные ответы
Майк Манданда (Волкодав) Оракул (53323) 5 лет назад
Никак) от слова вообще, код в конце концов читает компилятор и преобразует в машинное слово...

Это задача компиляторов чтоб приложения работали, а не железа..
Похожие вопросы