Assembler vs Compiler
Загалом компілятор - це комп’ютерна програма, яка читає програму, написану однією мовою, яку називають мовою-джерелом, і перекладає її на іншу мову, яку називають цільовою мовою. Традиційно мова-джерело була мовою високого рівня, такою як C ++, а цільова мова - мовою низького рівня, такою як мова мовлення. Однак є компілятори, які можуть перетворити вихідну програму, написану мовою складання, та перетворити її в машинний код або об'єктний код. Асемблери - це такий інструмент. Отже, і складачі, і компілятори в кінцевому рахунку виробляють код, який можна безпосередньо виконати на машині.
Що таке компілятор?
Компілятор - це комп'ютерна програма, яка читає програму, написану однією мовою, яку називають мовою-джерелом, і переводить її на іншу мову, яку називають цільовою мовою. Найчастіше мова-джерело - це мова високого рівня, а мова-мова - мова низького рівня. Так, загалом компіляторів можна розглядати як перекладачів, які перекладають з однієї мови на іншу. Крім того, компілятори виконують деякі оптимізації коду. Типовий компілятор складається з декількох основних компонентів. Перший компонент - сканер (також відомий як лексичний аналізатор). Сканер зчитує програму і перетворює її в рядок жетонів. Другий компонент - аналізатор. Він перетворює рядок лексем у дерево розбору (або абстрактне синтаксичне дерево), яке фіксує синтаксичну структуру програми. Наступним компонентом є смислові підпрограми, що інтерпретують семантику синтаксичної структури. За цим слідують оптимізація коду та генерація остаточного коду.
Що таке Асемблер?
Assembler - це програмне забезпечення або інструмент, який переводить мову складання в машинний код. Отже, ассемблер - це тип компілятора, а вихідний код написаний мовою складання. Збірка є зрозумілою для людини мовою, але вона, як правило, має відношення один до одного з відповідним машинним кодом. Тому, як кажуть, асемблер виконує ізоморфний (один на один відображення) переклад. Удосконалені асемблери надають додаткові функції, що підтримують процеси розробки програми та налагодження. Наприклад, тип асемблерів під назвою макроскладачі забезпечує макросклад.
Яка різниця між Асемблером і Компілятором?
Компілятор - це комп’ютерна програма, яка читає програму, написану однією мовою і перекладає її на іншу мову, тоді як асемблером можна вважати спеціальний тип компілятора, який переводить лише машину мови в машинний код. Компілятори зазвичай виробляють машинний виконуваний код безпосередньо з мови високого рівня, але асемблери створюють об'єктний код, який, можливо, доведеться пов’язати за допомогою програм-лінкерів для роботи на машині. Оскільки мова складання має суцільне відображення з машинним кодом, асемблер може використовуватися для створення коду, який працює дуже ефективно для випадків, коли продуктивність дуже важлива (наприклад, графічні двигуни, вбудовані системи з обмеженими апаратними ресурсами порівняно з персональним комп'ютером як мікрохвильові печі, пральні машини тощо).