Другие языки программирования и технологии

Как работают языки программирования

Щас вдруг возник вопрос. А каким работаюобразом языки программирования. Каким образом какие-то сочитания букв преобразовываются в показатели: 0/1?
Компилятор преобразует текст на языке в грамматическое дерево.
Кодогенератор по грамматическому дереву генерирует машинный код.

Например.
 код:
a = b * c + d

грамматическое дерево:
=
/ \
a +
/ \
* d
/ \
b c

машинный код (в ассемблерной нотации x86):

mov eax, [b]
mov ecx, [c]
imul ecx
add eax, [d]
mov [a], eax

Здесь описан только принцип. Естественно, в реальных примерах всё сложнее. Каждая операция может быть вызовом какой-нибудь навороченной подпрограммы, которая вызывает другие подпрограммы. Вызов подпрограммы в грамматике - это тоже узел дерева, ничего сверхъестественного. Также применяются оптимизации уровня кодогенератора (инлайн, развёртка циклов, преобразование в более дешёвые инструкции, например, сдвиг вместо умножения, и т.п.) и уровня компилятора (вычисление константных поддеревьев и др.)

Существуют стандартизированные грамматические описания, например, LLVM. Можно сделать компилятор своего языка высокого уровня, который переводит его код в LLVM, а потом воспользоваться готовыми кодогенераторами из LLVM в машинные коды соответствующих платформ. И наоборот, если кто-то выводит на рынок своё железо, то он может написать кодогенераторы из LLVM в его систему команд, и тогда оно станет доступным всем языкам, имеющим компиляторы в LLVM.
ФК
Фёдор Красильников
87 571
Лучший ответ
Максим Соколов Спасибо, осталось только найти в интернете определение части вещей, которые ты сказал и все нормик
Максим Соколов Святой вы человек, отец
Коротко говоря - достаточно сложные математические преобразования, изучаемые в соответствующих разделах дискретной математики - графы, деревья, абстрактные грамматики и т.п.
Pavel Kurkin
Pavel Kurkin
61 903
Лексический анализ - преобразование коде в последовательность токенов (ключевое слово, литерал и т.д.)
Синтаксический анализ - построение дерева разбора, использование грамматик.
Семантический анализ
Оптимизация
Генерация целевого кода
Олег Найф
Олег Найф
54 575
Поищи на ютьюбе. На пальцах объяснить сложно. Долгая тема.
Zhalgas Assem Shagirovy
Zhalgas Assem Shagirovy
94 136
Максим Соколов Я щас разберусь в вещах сказанным человеком выше и уже возможно пойду смотрел на ютубчике