Поскольку производители микросхем добавляют новые функции, инструкции и т. Д. К новым микросхемам, нужны ли нам более новые версии компиляторов соответственно для использования этих новых инструкций и функций микросхемы? Также означает ли это, что языку программирования также нужны новые коды операций, синтаксис и т. Д. Для использования новых функций чипа?
Оправдывает ли эволюция микропроцессоров эволюцию компиляторов и языковых стандартов?
Ответы (2)
Да, новые аппаратные функции отражены в языковых расширениях и на новых языках. Например, просмотрите различные векторные расширения для C и C ++, которые отражают доступность инструкций SIMD, и новые производные языки параллельного программирования данных, такие как CUDA и OpenCL.
Если оборудование значительно отличается от других, вполне вероятно, что для него потребуется собственный, другой язык программирования, см. Поздние транспьютеры и их язык Оккама.
Компиляторы, которые компилируются в машинный код (не в виртуальную машину), могут нуждаться в изменении в любое время, когда изменяется его целевая архитектура (хотя в идеале все изменения должны быть обратно совместимыми, так что дополнения просто означают, что возможны новые оптимизации, но старые компиляторы все равно будут работать) .
Языки программирования не нужно менять, но могут, если желательная функция стала возможной благодаря изменению возможностей машины. Если только под "языками программирования" вы не подразумеваете ассемблер / машинный язык, то в этом случае, вероятно, следует (но не обязательно) добавить индивидуальную микросхему-инструкцию к сборке / машинной инструкции.
Обратите внимание на все "могущества". Скорее всего, эти изменения невидимы для вас, если вы не работаете в ассемблере, машинном коде, дизайне компилятора или языке программирования. В противном случае беспокоиться об этих вещах - пустая трата времени.