Мова асемблера: відмінності між версіями
[перевірена версія] | [неперевірена версія] |
Вилучено вміст Додано вміст
MrPuVo (обговорення | внесок) Функція пропозицій посилань: додано 3 посилання. Мітки: Скасовано Візуальний редактор Редагування з мобільного пристрою Редагування через мобільну версію Розширене редагування з мобільного Завдання новачку Запропоноване: додати посилання |
|||
Рядок 4:
'''Мова асемблера''' ({{lang-en|assembly language}}) — [[Низькорівнева мова програмування|мова програмування низького рівня]] для програмованої обчислювальної системи ([[мікропроцесор]]а, [[мікроконтролер]]а, [[комп'ютер]]а або іншого програмованого пристрою), в якій існує сувора відповідність між [[Оператор (програмування)|операторами]] мови та машинними командами<ref>Дудзяний І. М., Черняхівський В. В. Програмування мовою асемблера. — Львів: ЛНУ імені Івана Франка, 2002.</ref>. Асемблер також називають символічним [[машинний код|машинним кодом]] або мнемокодом.
Кожна мова асемблера специфічна для конкретної комп'ютерної архітектури. На відміну від цього, програми на [[Мова програмування|мовах програмування]] високого рівня, як правило, здатні виконуватися на декількох архітектурах, хоча вимагають специфічної для [[Апаратна комп'ютерна платформа|платформи]] [[Інтерпретатор|інтерпретації]] або [[компіляція (програмування)|компіляції]].
Програма мовою асемблера перетворюється у виконуваний машинний код за допомогою програми-[[асемблер]]а. Процес перетворення називають асемблюванням або збіркою ({{lang-en|assembly, assembling}}). У більшості випадків цей процес відбувається у два етапи: асемблювання і компонування<ref>Магда Ю. С. Ассемблер для процессоров Intel Pentium. — СПб.: Питер, 2006.</ref> ({{lang-en|linking}}).
Рядок 11:
{{main|Асемблер}}
'''Асемблер''' ({{lang-en|assembler}} — складальник) — [[комп'ютерна програма]], що генерує [[об'єктний модуль|об'єктний двійковий код]] з заданої (як правило у текстовому вигляді) послідовності машинних інструкцій. Кожна інструкція має свою ''мнемоніку'', і складається з символічної назви (наприклад, <code>MOV</code> — від {{lang-en|move}}, «перемістити»), за якою опціонально можуть слідувати операнди.
Асемблер також обчислює значення констант і здійснює [[резолвінг]] символічних імен (і, якщо потрібно, записує у об'єктний [[файл]] адреси, які потрібно модифікувати під час компонування чи завантажування програми).<ref name="Salomon">{{cite book
|author = David Salomon
|year = 1993
Рядок 22:
}}</ref> Використання символьних посилань і автоматизація обчислень адрес є однією з ключових особливостей асемблера, яка звільняє програміста від кропітких ручних обчислень (які доводилося б робити навіть при додаванні чи вилученні однієї інструкції програми). Більшість асемблерів також мають [[Макрокоманда|макрокоманди]], що дозволяють замінювати у програмі повторювані фрагменти коду викликом макроса.
У простому випадку асемблер переводить одну операцію (машинну команду з параметрами) початкової програми у відповідний машинний код (так звана трансляція «один в один»). При цьому взаємне розташування кодів інструкцій у об'єктному модулі визначається порядком операцій у початковій програмі і повністю залежить від програміста. Для розширення можливостей низькорівневого програмування асемблери можуть реалізовувати підтримку [[макрокоманда|макрокоманд]] — груп команд, що можуть вставлятися до програми потрібну кількість разів. В цьому випадку перед трансляцією проводиться заміна макрокоманд макророзширеннями — послідовностями команд на базовій мові відповідно до макроозначень. У останніх задається прототип макрокоманди зі структурою списку параметрів і процедура генерування макророзширення. [[Транслятор]], що виконує функції макрогенератора і асемблера, називається [[макроасемблер]]ом. При трансляції з мов високого рівня асемблер нерідко використовується для виконання завершальної фази трансляції.
Трансляція зазвичай вимагає двох переглядів початкової програми: при першому перегляді здійснюється [[розподіл пам'яті]] і надання значень символічним іменам; при другому — формується робоча програма у вигляді об'єктного файлу. В процесі трансляції асемблер проводить повний [[синтаксичний аналіз програм|синтаксичний контроль]] початкової програми, забезпечуючи при цьому достатньо точну діагностику помилок за місцем і характером.
|