2. Поняття "транслятор", "компілятор", "інтерпретатор", "компоновщик"
Транслятор – програма, яка перетворює програмний код, викладений на певній мові програмування, у машинний код.
Компілятор – програма, яка аналізує програмний код, проводить аналіз помилок, якщо їх не знайдено, оптимізує його, себто вирізає зайві шматки коду, або неефективні фрагменти замінює їх більш ефективними аналогами, і покращенний таким чином код передає транслятору. У сучасних системах розробки ПО компілятор та транслятор часто об’єднані в один модуль.
Інтерпретатор – програма, яка виконує програмний код, рядок за рядком перетворюючи його на льоту в машинний код за певною таблицею відповідності.
Компоновщик – програма, яка виконує зборку виконуваного модуля з одного чи кількох так званих двійкових модулів, які містять чистий машинний код, трансльований з певної мови програмування.
3. Загальний алгоритм створення програми
Загальний алгоритм можна звести до простої діаграми:
При цьому слід зазначити, що всі ці етапи розробки полегшуються за допомогою так званого "середовища інтегрованої розробки", який постачається з майже будь-якою мовою програмування. Єдиним винятком з цього правила є асемблери, які мають інтерфейс тільки командної стрічки.
Для запуску макроасемблера з використанням підказок необхідно ввести командний рядок, що містить тільки ім'я макроасемблера MASM зі специфікацією підзаголовку, якщо вона потрібна. MASM перейде в діалоговий режим і серією підказок запросить у користувача інформацію про наступні файли (відповідь полягає в наборі необхідних символів і натисканні клавіші ENTER):
1. Ім'я вихідного файлу. Якщо при відповіді не зазначене розширення, передбачається ASM.
2. Ім'я об'єктного файлу. Якщо при відповіді не зазначене розширення, передбачається OBJ. Базове ім'я об'єктного файлу за замовчуванням збігається з базовим ім'ям вихідного файлу.
3. Ім'я файлу лістинга. Якщо при відповіді не зазначене розширення, передбачається LST. Базове ім'я файлу лістинга за замовчуванням NUL.
4. Ім'я файлу перехресних посилань. Якщо при відповіді не зазначене розширення, передбачається CRF. Базове ім'я файлу лістинга за замовчуванням NUL.
Наприкінці будь-якої відповіді після символів "/" або - "," можуть бути задані опції макроасемблера.
Якщо в якій-небудь відповіді специфіковано символ ";", MASM вийде з діалогового режиму й встановить імена, що залишилися, за замовчуванням з наступного списку:
<ім'я вихідного файлу>.OBJ
NUL.LST
NUL.CRF
У будь-якій відповіді також можуть бути задані відповіді на кілька наступних підказок. У цьому випадку одна відповідь від іншого відокремлюється комами.
Для запуску MASM за допомогою командного рядка необхідно ввести командний рядок наступного виду:
MASM <ім'я вихідного файлу>[,[<ім'я об'єктного файлу>]
[,[<ім'я файлу лістинга>][,[<ім'я файлу перек. посилань>]]]]
[<опції>][;]
Символ ";" може бути специфікований у будь-якому місці командного рядка до того, як були визначені усі файли. У цьому випадку імена невизначених файлів, що залишилися, приймаються за замовчуванням із приведеного вище списку. З цього ж списку приймаються за замовчуванням імена файлів, специфікація яких у командному рядку опущена (за допомогою зайвої коми).
Якщо в командному рядку виявлена помилка, про це повідомляється через консоль, і MASM переходить у діалоговий режим.
Опції MASM можуть розташовуватися в будь-якому місці командного рядка.
Лекція 3 Порівняльна характеристика С та асемблера
1. Визначення низькорівневої мови
2. Порівняльна характеристика мов Assembler та C
3. Види асемблерів
4. Види компіляторів C
1. Визначення низькорівневої мови
Низькорівневою називається така мова, яка містить методи для звертання безпосередньо до функцій операційної системи, зокрема, збудження переривань та виклик їх функцій, периферійних пристроїв через порти введення-виведення, а також звертання безпосередньо до конкретних комірок системної пам’яті та регістрів мікропроцесора.
2. Порівняльна характеристика мов Assembler та C
Сі є мовою функцій, типів даних, операторів присвоювання і керування послідовністю обчислень. Програмуючи на Сі, ви здійснюєте звертання до функцій, і більшість функцій повертають деякі значення. Значення, що повертається функцією, будь то значення змінної чи константа, може використовуватися в операторі присвоювання, що змінює значення іншої змінної. Доповнений операторами керування послідовністю обчислень (while, for, do, switch), Сі перетворюється в мову високого рівня, що сприяє гарному стилю програмування.
Сі має невеликий набір типів даних: цілі числа, числа з комою, що плаває, бітові поля і перерахований тип. У мові Сі ви можете описати змінну типу покажчик, що зв'язується з об'єктом, який належить до будь-якого типу даних. Адресна арифметика мови Сі є чутливою до типу даних того об'єкта, з яким зв'язаний використовуваний покажчик. Дозволені також покажчики до функцій. Ви можете розширити список типів даних шляхом створення структур з ієрархічною залежністю типів даних, що входять у нього. Кожен тип даних може належати або до основного типу, або до раніше описаного структурного типу. Об'єднання нагадують структури, але визначають різні види ієрархічних залежностей, у яких дані різних типів розташовуються в пам'яті.
Допустимим є опис масивів даних різних типів, включаючи структури й об'єднання. Масиви можуть бути багатомірними.
Функції Сі є рекурсивними за замовчуванням. Ви можете, щоправда, створити функцію, що не буде рекурсивною, але сама мова по своїй природі прагне підтримувати рекурсивність і вимагає мінімальних зусиль при програмуванні рекурсій.
Програма функції мовою Сі розбивається на блоки, у кожному з яких можуть бути визначені свої власні локальні змінні. Блоки можуть вибиратися для виконання в результаті виконання оператора керування послідовністю обчислень. Блоки можуть бути вкладеними один у інший.
Змінні і функції можуть бути глобальними для програми, глобальними для вихідного модуля чи локальними для блоку, у якому вони описані. Локальні змінні можуть бути описані таким чином, що вони будуть зберігати свої значення при всіх звертаннях усередині даного блоку (статичні змінні) або ж будуть сприйматися як нові об'єкти при кожному звертанні (автоматичні змінні).
Сі дозволяє створювати програму у виді декількох вихідних модулів, що будуть транслюватися окремо. Переміщувані об'єктні модулі, що відповідають вихідним модулям, компонуються в єдиний завантажувальний модуль. Ця особливість дозволяє компілятору підтримувати об'єктні бібліотеки функцій, що багаторазово використовуються і створювати великі програми з безлічі невеликих вихідних модулів.
У мові Сі немає операторів введення/виведення, усе введення/виведення виконується за допомогою функцій. Унаслідок цієї особливості мови Сі розроблена стандартна бібліотека функцій. Існування цього стандарту і складає головну привабливість мови Сі, тому що робить програми на Сі мобільними для переносу з однієї системи на іншу.
3. Види асемблерів
Макроасемблер MASM фірми MICROSOFT асемблює програми мовою асемблера для мікропроцесорів 8086, 8088, 80186 і 80286 і створює об'єктні файли, що можуть редагуватися і виконуватися в операційній системі MS-DOS. Макроасемблер забезпечує виконання наступних функцій:
1. Аналіз вихідного тексту мовою асемблера на предмет наявності у ньому макрокоманд та макровизначень, і обробка цих конструкцій з відповідною корекцією вихідного тексту.
2. Синтаксичний аналіз отриманого тексту і виведення необхідної діагностичної інформації.
3. Формування об'єктного модуля. Сприймаючи як вхід один файл із вихідним текстом, макроасемблер може формувати до трьох вихідних файлів, як показано на рис. 2.1.
Рис. 2.1. Робота макроасемблера
Розширення імен файлів, показані на малюнку, приймаються за замовчуванням. Файл лістинга містить роздруківку вихідного тексту у відповідності зі специфікованими директивами асемблера режимами і діагностичними повідомленнями про результати синтаксичного аналізу. Ці ж повідомлення дублюються на консолі.
Файл перехресних посилань містить усі використовувані у вхідному тексті ідентифікатори. Надалі він може бути використаний утилітою CREF.
У файлі об'єктного коду формується об'єктний модуль. Цей файл не формується, якщо в тексті виявлені помилки.
... кодами сканування клавіатури (scan-коды). Код віджимання є двобайтовим: перший байт рівний F0h, а другий байт збігається з кодом натиснення. Є три рівні програмування підсистеми клавіатури: 1) на фізичному рівні (програмування портів 60h і 64h контроллера клавіатури); 2) за допомогою BIOS ( INT 09h, INT 16h ); 3) за допомогою переривання DOS ( INT 21h ). Для виконання введення даних з клаві ...
... обміну даними з ПЭВМ у процесі виконання програми користувача; 11. Вкажіть типи буферних схем, використаних в УУМС-2. Їх призначення та особливості роботи. 12. Дайте визначення адресного простору мікропроцесорної системи та розпишіть його розподіл в УУМС-2. Адресний простір УУМС складається з областей, состав яких показаний у табл.2. Варто звернути увагу, що внутрішні адресні області ...
... Сван Том. – К.: Диалектика, 1997. – 480с., ил. 7. Секреты Delphi 2: Пер. с англ./Рэй Лишнер. – К.: НИПФ «ДиаСофтЛтд.», 1996. – 800 с. ДОДАТОК ТЕКСТ ПРОГРАМИ “ВІЗУАЛЬНИЙ ОБЛІК ВХІДНИХ ДАНИХ ІНТЕРФЕЙСУ RS-232” Текст основної програми program Project1; uses Forms, MainForm in 'MainForm.pas' {Form1 Головна форма}, GraphicDiagram in 'GraphicDiagram.pas', Unit3 in 'Unit3.pas' ...
... CF (a+b+CF), і розміщує результат замість першого операнда. Обмеження на операнді такі ж, як і в команді ADD. Установлюються прапорці AF, CF, OF, FF, SF, ZF. Ця команда використовується для програмування арифметичних операцій над довгими цілими числами. ІNC a - Збільшення на 1. Команда додає 1 до значення операнда а. Операнд може знаходитися в пам'яті або в регістрі. Установлюються прапорці AF, ...
0 комментариев