Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗКП ДЮП.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
286 Кб
Скачать
☆

1 Загальна характеристика застосування асемблера для системного програмування

1.1 Термін системне програмування безпосередньо пов'язаний з терміном системний програміст. Це програміст, що працює (що створює, відладжує, діагностує і т. п.) над системним програмним забезпеченням.

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

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

Директиви асемблера дозволяють, зокрема, включати блоки даних, задати асемблювання фрагмента програми по умові, задати значення точний, використовувати макровизначення з параметрами.

Кожна модель (або сімейство) процесорів має свій набір команд і відповідну йому мову асемблера. Найбільш популярні синтаксиси: Intel-синтаксис і AT&T-синтаксис.

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

Забезпечення максимального використання специфічних можливостей конкретної платформи, що також дозволяє створювати ефективніші програми з меншими витратами ресурсів [2].

При програмуванні на асемблері можливий безпосередній доступ до апаратури, у тому числі портів вводу-виводу, регістрів процесора.

Мова асемблера застосовується для створення драйверів устаткування і ядра операційної системи. Мова асемблера використовується для створення «прошивок» BIOS. За допомогою мови асемблера створюються компілятори і інтерпретатори мов високого рівня, а також реалізується сумісність платформ.

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

Через свою машинну орієнтацію («низького» рівня) людині в порівнянні з мовами програмування високого рівня складніше читати і розуміти програму, вона складається з дуже «дрібних» елементів - машинних команд, відповідно ускладнюється програмування і відладка, збільшується трудомісткість, велика вірогідність внесення помилок. В значній мірі зростає складність спільної розробки.

Історично можна розглядувати асемблер як друге покоління мов програмування ЕОМ (якщо першим рахувати машинний код). Недоліки асемблера, складність розробки ним великих програмних комплексів привели до появи мов третього покоління - мов програмування високого рівня (Фортран, Лісп, Кобол, Паскаль, Сі і ін.). Саме мови програмування високого рівня і їх спадкоємці в основному використовуються в даний час в індустрії інформаційних технологій. Проте, мови асемблера зберігають своє місце, славлячись їх унікальними перевагами в частці ефективності і можливості повного використання специфічних засобів конкретної платформи.

На асемблері пишуться програми або фрагменти програм, для яких критично важливі:

- швидкодія (драйвери, ігри);

- об'єм використовуваної пам'яті (завантажувальні сектори, вбудовуване (англ. embedded) програмне забезпечення, програми для мікроконтролерів і процесорів з обмеженими ресурсами, віруси, програми захисту).

З використанням програмування на асемблері проводяться:

- оптимізація критичних до швидкості ділянок програм написаних на мові високого рівня, такому як C++. Це особливо актуально для ігрових приставок, біля яких фіксована продуктивність, і для мультимедійних кодеків, які прагнуть робити менш ресурсоємними і популярнішими;

- створення операційних систем (ОС). ОС часто пишуть на Сі, мові, яка спеціально була створена для написання однієї з перших версій Unix. Апаратні залежні ділянки коду, такі, як завантажувач ОС, рівень абстрагування від апаратного забезпечення - HAL і ядро, часто пишуться на асемблері. Асемблерний коду в ядрах Windows або Linux зовсім небагато, оскільки автори прагнуть до переносимості і надійності, але проте він присутній. Деякі любительські ОС, такі, як MENUETOS, цілком написані на асемблері:

- програмування мікроконтролерів (МК) і інших вбудовуваних процесорів. На думку професора Танненбаума, розвиток МК повторює історичний розвиток комп'ютерів новітнього часу. На сьогоднішній день для програмування МК вельми часто застосовують ассемблер;

- створення драйверів. Деякі ділянки драйверів, що взаємодіють з апаратним забезпеченням, програмують на асемблері. Хоча в цілому в даний час драйвери прагнуть писати на мовах високого рівня у зв'язку з підвищеними вимогами до надійності. Надійність для драйверів грає особливу роль, оскільки в Windows NT і Linux драйвери працюють в режимі ядра. Одна помилка може привести до краху системи. Також створення антивірусів і інших захисних програм, написання трансляторів мов програмування.

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