Задать вопрос
Ответы пользователя по тегу Трансляторы
  • Хардварный компилятор?

    Hoorsh
    @Hoorsh
    Digital-специалист, веб-разработчик
    Это будет нереально трудоемко, так как код самого компилятора не такой уж и простой. Там не однотипные оптимизации, а несколько стадий разбора исходного кода: лексический анализ, синтаксический анализ, семантический, и вот только потом оптимизация и далее уже генерация машинного или байт-кода.

    Раз вы не программист, попробую на яблоках объяснить, что такое компиляция. Компилятору поступает исходный текст программы. Он сначала обрабатывает текст, превращая его в некую разобранную по косточкам последовательность элементов, ну грубо говоря находит символ плюс и записывает, что нашел символ плюса, нашел 10 пробелов и он их пропускает, так как они не несут смысловой нагрузки.

    Дальше, когда уже не нужно заниматься распознаванием что это в коде, последовательность элементов (лексем) поступает в синтаксический анализатор. То есть плоская последовательность «косточек» уже выстраивается в иерархические деревья, например, конструкция if (some) then a(); else b(); будет уже в виде дерева с веточками a() и b(), и основанием в виде some.

    После этой стадии идет проверка различных неявных правил, например, когда переменной числового типа пытаются присвоить текстовое значение и т.д. И вот когда уже все эти стадии пройдены и код относительно корректный, наступает стадия оптимизации. Удаляются бестолковые деревья, например, в if (true) then a(); else b(); конструкция else b(); никогда не выполнится и поэтому эта веточка удаляется.

    Последняя стадия генерирует машинный код. То есть «сложную» команду c := a + b транслятор преобразует в последовательность команд, понятных процессору: mov c, a; add a, b;

    И вот после этих все открытий подумайте, нужно ли такой сложный софт реализовывать в виде микросхем? Зачем, когда есть универсальные процессоры? Многие вещи, которые вы считаете хардварными, таковыми не являются. Например, мобильные телефоны раньше были более хардварными — большая часть логики была реализована через микросхемы. Сейчас же идет процесс больше софтверизации, в телефоне есть GSM-модуль, которым софт управляет сам — посылает вызовы и принимает звонки. Мобильникам сейчас даже можно сменить операционную систему! То есть когда идет процесс отказа от хардварных решений и превращения их в софтверные, вы спрашиваете о целесообразности обратного пути назад в дремучие времена?
    Ответ написан
    Комментировать