Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра ЕОМ
Курсовий проект
з предмету «Системне програмування»»
на тему: «Розробка системних програмних модулів та компонент систем програмування»
Завдання на курсову роботу
1. Цільова мова транслятора асемблер (iх86).
2. Для отримання виконавчого файлу на виході розробленого транслятора скористатися програмами tasm.exe і tlink.exe або tasm32.exe і tlink32.exe.
3. Мова розробки транслятора: ANSI C або C++.
4. Реалізувати оболонку або інтерфейс з командного рядка.
5. На вхід розробленого транслятора має подаватися текстовий файл, написаний на заданій мові програмування.
6. На виході розробленого транслятора мають створюватись чотири файли:
файл з повідомленнями про помилки (або про їх відсутність);
файл на мові асемблера;
об’єктний файл;
виконавчий файл.
7. Назва вхідної мови програмування утворюється від першої букви у прізвищі студента та останніх двох цифр номера його варіанту. Саме таке розширення повинні мати текстові файли, написані на цій мові програмування.
Варіант №29
Блок тіла програми :
NAME <name>;
DATA…;BODY- END
Оператор вводу – виводу:
INPUT
OUTPUT
Оператор присвоєння:
::
Оператор:
FOR –TO – DO (Паскаль)
Регістр ключових слів:
Up
Регістр ідентифікаторів:
Up-Low8 перший символ _
Операції:
арифметичні
+; -; *; DIV; MOD
порівняння
=; <>; >; <;
логічні
NOT; AND; OR
Типи даних:
INTEGER32_t
Коментар:
## ... ##
ВСТУП
Перші програми, які створювалися ще для ЕОМ першого покоління, писалися безпосередньо на мові машинних код.
Написання програм в машинних кодах стало практично неможливим у міру зростання складності алгоритмів, а, власне, і кількості команд в програмі. Розвиток апаратури обчислювальних систем також ускладнював ситуацію: написані в машинних кодах програми були абсолютно непереносні, оскільки містили не просто алгоритмічні інструкції, а безпосередньо команди конкретного процесора. З цього виходив вивід, що людина не може і не повина говорити на мові машинних команд, навіть якщо вона фахівець з обчислювальної техніки. Проте всі спроби навчити ЕОМ говорити на мовах людей не увінчалися успіхом. У зв'язку з цим весь подальший розвиток програмного забезпечення комп'ютерів нерозривно пов'язаний з виникненням і розвитком компіляторів.
Першими компіляторами були компілятори з мов асемблера або, як вони називалися, мнемокодів. Мнемокоди значно спростили процес написання програм, замінивши шістнадцятькові коди команд процесора на більш менш доступну мову мнемонічних позначень цих команд. Така інструкція була вже змістовнішою і, крім того, не була так жорстко прив'язана до типу процесора. Проте виконувати сам мнемокод (мова асемблера) жоден комп'ютер не здатний, тому виникла необхідність в створенні компілятора, що перекладає текст програми, написаний на мові асемблера, в машинні коди. Ці компілятори достатньо прості, оскільки командами асемблера є примітивні синтаксичні конструкції, кожній з яких ставиться у відповідність, як правило, одна машинна команда.
Завдання компіляції асемблерних програм ускладнилося з появою макрокоманд, які в загальному випадку повинні були бути приведені в довільне число машинних інструкцій.
Наступним етапом стало створення мов високого рівня, що є деякою проміжною ланкою між чисто формальними мовами і мовами природного спілкування людей. Від перших їм дісталася строга формалізація синтаксичних структур (пропозицій) мови, від других – значна частина словарного запасу, семантика основних конструкцій і виразів (з елементами математичних операцій, що прийшли з алгебри).
Поява мов високого рівня істотно спростила процес програмування, дозволяючи програмістові концентруватися на алгоритмі вирішуваного завдання. Покращала і ситуація з переносимістю програм. Тепер в завдання компілятора входило правильно транслювати алгоритмічні інструкції в машинні команди конкретної архітектури процесора.
Як тільки виникла масова потреба, почала розвиватися теорія формальних мов і граматик, а т...