Assembler vs Compiler
По принцип компилаторът е компютърна програма, която чете програма, написана на един език, който се нарича източник и го превежда на друг език, който се нарича целевия език. Традиционно езикът на източник е език на високо ниво като C ++, а целевият език е език на ниско ниво, като език за сглобяване. Съществуват обаче компилатори, които могат да конвертират изходна програма, написана на асемблиращ език, и да я преобразуват в машинен код или обектов код. Асемблерите са такива инструменти. И в крайна сметка и асемблерите, и компилаторите произвеждат код, който може да бъде директно изпълнен на машина.
Какво е компилатор?
Компилаторът е компютърна програма, която чете програма, написана на един език, който се нарича източник и го превежда на друг език, който се нарича целевия език. Най-често изходният език е език на високо ниво, а целевият език е език на ниско ниво. Така че, като цяло компилаторите могат да се разглеждат като преводачи, които превеждат от един език на друг. В допълнение компилаторите извършват някои оптимизации на кода. Типичният компилатор е съставен от няколко основни компонента. Първият компонент е скенерът (известен още като лексикален анализатор). Scanner чете програмата и я преобразува в низ от символи. Вторият компонент е парсера. Той преобразува низ от маркери в дърво на разбор (или абстрактно синтаксично дърво), което улавя синтактичната структура на програмата. Следващ компонент са семантичните процедури, които интерпретират семантиката на синтактичната структура. Следват това оптимизациите на кода и генерирането на окончателен код.
Какво е Асемблер?
Assembler е софтуер или инструмент, който превежда езика на сборката в машинен код. Така че, асемблерът е тип компилатор и изходният код е написан на езика за сглобяване. Сглобяването е език, който може да се чете от хора, но обикновено има отношение към едно към съответния машинен код. Следователно се казва, че асемблерът извършва изоморфен (едно към едно картографиране) превод. Разширените асемблери предоставят допълнителни функции, които поддържат процеса на разработване на програми и отстраняване на грешки. Например, типът асемблери, наречени макросглобяващи устройства, осигурява макроустройство.
Каква е разликата между Assembler и Compiler?
Компилаторът е компютърна програма, която чете програма, написана на един език и я превежда на друг език, докато асемблерът може да се счита за специален тип компилатор, който превежда само езика на сборник в машинен код. Компилаторите обикновено произвеждат машинен изпълним код директно от език на високо ниво, но асемблерите произвеждат обект код, който може да се наложи да се свърже с помощта на линкерни програми, за да работи на машина. Тъй като езикът на сглобяване има едно към едно картографиране с машинен код, асемблер може да се използва за създаване на код, който работи много ефективно за случаи, в които производителността е много важна (например графични двигатели, вградени системи с ограничени хардуерни ресурси в сравнение с личен компютър като микровълни, перални и др.).