Вправи до розділу 1.1.

Вправа 1.1.1: В чому різниця між компілятором та інтерпретатором?

Спільною характеристикою компілятора та інтерпретатора є виведення легко доступної для розуміння людини форми джерельного коду в природній для цифрової логіки машинний код. Тобто, процес перекладу. Проте, інтерпретатор буде перекладати джерельний код твердження за твердженням, паралельно з виконанням програми. У такий спосіб можна досягти кращих показників в процесі відлагодження програми. А основною особливістю компілятора є отримання машинного коду ще до початку виконання програми. Таким чином зменшується інтервал між отриманням вхідних даних від користувача та підрахуванням вихідних.

Вправа 1.1.2: В чому переваги (а) компілятора над інтерпретатором (б) інтерпретатора над компілятором?

Компілятор:

Інтерпретатор:

Вправа 1.1.3: Які переваги системи обробки мови, в якій компілятор видає мову асемблера, замість машинного коду?

Просто читати машинний код лише з точки зору транзисторів. А для ознайомлення з послідовністю обробки даних мова асемблера є непоганим компромісом між джерельним кодом мовою високого рівня та машинним кодом. Переписати написану мовою високого рівня програму на мову асемблера помітно простіше. В свою чергу, відлагодження написаної машинним кодом програми є складним завданням для більшості людей.

Вправа 1.1.4: Такий компілятор, який перекладає мову високого рівня на іншу мову високого рівня називається транскомпілятором (англ. S2S compiler). В чому полягають переваги використання C в якості цільової мови для компілятора?

Мова C є невеликою і не потребує багатьох сторінок документації для покриття її можливостей в повному обсязі. Ця мова розроблена бути суттєво інтегрованою до архітектури цільових процесорів і надає безпосередній доступ до пам'яті. Саме через це вона є особливою в порівнянні з визначенням мови високого рівня і настільки поширена в розробці драйверів для пристроїв, операційних систем.

Вправа 1.1.5: Опишіть деякі завдання, які асемблер має виконувати.

Основним завданням асемблера є отримання в якості вхідних даних програми мовою асемблера та видачею на виході зрозумілого для потрібної архітектури машинного коду. Але в залежності від середовища можуть бути присутні реалізованими і багато інших додаткових можливостей. Починаючи від простих маніпуляцій текстом і закінчуючи більш складними (включаючи такі, які є унікальними для взятого набору інструкцій).