Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Moduli_pitannya(1).doc
Скачиваний:
5
Добавлен:
06.12.2018
Размер:
189.95 Кб
Скачать

9. Написання програми

 Компілятор сприймає програму, написану мовою високого рівня. Текст цієї програми називається початковим кодом. Результатом роботи компілятора є об'єктний код.  Різні частини програми можуть компілюватися незалежно. Програма, яка збирає в єдине ціле незалежно відкомпільовані об'єктні модулі, називається редактором зв'язків. При цьому відбувається налаштування програми на реальні машинні адреси, з якими вона буде працювати.  Результатом роботи редактора зв'язків є програма, готова до виконання (часто вона називається завантажувальним модулем). Ця програма може бути негайно виконана, а може бути збережена на диску.  Програма, яка завантажує готову програму в оперативну пам'ять і забезпечує її запуск на виконання, називається завантажувачем. Завантажувач у найбільш типовому випадку є частиною операційної системи. Він повинен розмістити програму в оперативну пам'ять і передати їй керування (це означає встановлення програмного лічильника на першу команду програми, що виконується).  Розрізняють абсолютні і налаштовуючі завантажувачі.  Абсолютний завантажувач розміщує програму за жорстко заданими адресами. Для цього в об'єктному і завантажувальному коді повинні бути визначені конкретні адреси комірок пам'яті, з якими буде працювати програма. Налаштовуючий завантажник важче реалізувати, але він є значно більш гнучким. Він може розмістити програму в довільному місці пам'яті. При цьому в завантажувальному коді вказуються не явні адреси, а зміщення відносно початку програми.

 

Асемблери

 Слід розрізняти поняття мови асемблеру і власне асемблери.  Мовою асемблеру прийнято називати машинно-орієнтовану мову низького рівня (хоча і більш високого, ніж машинний код). Мова асемблеру має такі характерні особливості:

·                      одна команда асемблеру відповідає одній машинній команді. Певні послаблення цього принципу пов'язані з використанням макрокоманд, які на етапі підготовки програми автоматично замінюються деякою послідовністю машинних команд;

·                      на відміну від машинного коду, в мові асемблеру використовуються символічні позначення команд. Це робить програми, написані мовою асемблеру, придатними для сприйняття людиною, а сам процес програмування - більш простим і більш захищеним від помилок.

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

·                      ефективність. Компілятори з мов високого рівня не завжди генерують код, що є раціональним з точки зору швидкодії або використання пам'яті. Якщо програму зразу написати мовою асемблера, вона може стати значно більш ефективною;

·                      необхідність використання в програмах низькорівневих операцій з пам'яттю, зовнішніми пристроями і т.п. Якщо мова високого рівня не надає відповідних можливостей, програмування на асемблері залишається єдиним виходом.

 На сучасному етапі рідко хто програмує на чистому асемблері. Програми в основному пишуться мовами високого рівня; асемблер використовується для програмування лише окремих критичних операцій. Ряд мов високого рівня надають у розпорядження програміста вбудовані асемблери, які дозволяють органічно інтегрувати асемблерні фрагменти до програм, основна частина яких пишеться цими мовами.

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]