Разлика между асемблер и компилатор

Разлика между асемблер и компилатор
Разлика между асемблер и компилатор

Видео: Разлика между асемблер и компилатор

Видео: Разлика между асемблер и компилатор
Видео: Чем машинный код отличается от ассемблера 2024, Ноември
Anonim

Асемблер срещу компилатор

По принцип компилаторът е компютърна програма, която чете програма, написана на един език, който се нарича изходен език, и я превежда на друг език, който се нарича целеви език. Традиционно изходният език е език от високо ниво като C++, а целевият език е език от ниско ниво като асемблерния език. Съществуват обаче компилатори, които могат да преобразуват изходна програма, написана на асемблерен език, и да я преобразуват в машинен код или обектен код. Асемблерите са такива инструменти. И така, както асемблерите, така и компилаторите в крайна сметка произвеждат код, който може да бъде директно изпълнен на машина.

Какво е компилатор?

Компилаторът е компютърна програма, която чете програма, написана на един език, който се нарича изходен език, и я превежда на друг език, който се нарича целеви език. Най-често изходният език е език от високо ниво, а целевият език е език от ниско ниво. Така че като цяло компилаторите могат да се разглеждат като транслатори, които превеждат от един език на друг. Освен това компилаторите извършват някои оптимизации на кода. Типичният компилатор се състои от няколко основни компонента. Първият компонент е скенерът (известен още като лексикален анализатор). Скенерът чете програмата и я преобразува в низ от токени. Вторият компонент е анализаторът. Той преобразува низа от токени в дърво за анализ (или абстрактно синтактично дърво), което улавя синтактичната структура на програмата. Следващият компонент са семантичните процедури, които интерпретират семантиката на синтактичната структура. Оптимизациите на кода и окончателното генериране на код следват това.

Какво е асемблер?

Assembler е софтуер или инструмент, който превежда асемблерния език в машинен код. И така, асемблерът е вид компилатор и изходният код е написан на асемблер. Асемблирането е четим от човека език, но обикновено има връзка едно към едно със съответния машинен код. Следователно се казва, че асемблерът извършва изоморфен (преобразуване едно към едно) превод. Усъвършенстваните асемблери предоставят допълнителни функции, които поддържат процесите на разработване на програми и отстраняване на грешки. Например типът асемблер, наречен макро асемблер, осигурява макросъоръжение.

Каква е разликата между асемблер и компилатор?

Компилаторът е компютърна програма, която чете програма, написана на един език, и я превежда на друг език, докато асемблерът може да се счита за специален тип компилатор, който превежда само асемблерния език в машинен код. Компилаторите обикновено произвеждат машинно изпълним код директно от език от високо ниво, но асемблерите произвеждат обектен код, който може да трябва да бъде свързан с помощта на програми за свързване, за да работи на машина. Тъй като асемблерният език има съпоставяне едно към едно с машинния код, асемблер може да се използва за създаване на код, който работи много ефективно за случаи, в които производителността е много важна (например за графични машини, вградени системи с ограничени хардуерни ресурси в сравнение с персонален компютър като микровълнови, перални и др.).

Препоръчано: