Мова асемблера: відмінності між версіями

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