<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
		<id>http://wiki.isofts.kiev.ua/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80</id>
		<title>Асемблер - Історія редагувань</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.isofts.kiev.ua/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80"/>
		<link rel="alternate" type="text/html" href="http://wiki.isofts.kiev.ua/index.php?title=%D0%90%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80&amp;action=history"/>
		<updated>2026-04-07T12:47:28Z</updated>
		<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
		<generator>MediaWiki 1.25.3</generator>

	<entry>
		<id>http://wiki.isofts.kiev.ua/index.php?title=%D0%90%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80&amp;diff=2380&amp;oldid=prev</id>
		<title>111: Створена сторінка: '''Асе́мблер''' (англ. assembler) — комп'ютерна програма-транслятор, що призначена для генерац...</title>
		<link rel="alternate" type="text/html" href="http://wiki.isofts.kiev.ua/index.php?title=%D0%90%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80&amp;diff=2380&amp;oldid=prev"/>
				<updated>2018-02-19T16:53:59Z</updated>
		
		<summary type="html">&lt;p&gt;Створена сторінка: &amp;#039;&amp;#039;&amp;#039;Асе́мблер&amp;#039;&amp;#039;&amp;#039; (англ. assembler) — комп&amp;#039;ютерна програма-транслятор, що призначена для генерац...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;'''Асе́мблер''' (англ. assembler) — комп'ютерна програма-транслятор, що призначена для генерації машинного (двійкового) коду з символьного представлення цього коду (мови асемблера). Наприклад, текстовий рядок CLI для архітектури x86 перетворюється асемблером у двійковий код 11111010. Крім власне трансляції, багато програм-асемблерів підтримують і іншу функціональність, корисну при розробці системного і прикладного програмного забезпечення, таку як вибір формату об'єктного модуля, генерація символьної інформації (наприклад, відлагоджувальної), різноманітні директиви на зразок EXTERN чи GLOBAL, макрокоманди тощо.&lt;br /&gt;
&lt;br /&gt;
При трансляції з мов високого рівня асемблер нерідко використовується для виконання завершальної фази трансляції.&lt;br /&gt;
&lt;br /&gt;
==Історія==&lt;br /&gt;
&lt;br /&gt;
Один з перших асемблерів було створено Натаніелем Рочестером для машини IBM 701. Асемблер одразу полегшив працю першим програмістам: замість кодів машинних команд стало можливим писати програму у символьній (алфавітно-цифровій) формі, і найголовніше, відпала необхідність ручного перерахунку всіх адрес переходів при зміні програми. Асемблери 1950-х років, що носили назву автокодерів, були одними з перших, що надавали можливість означення і використання макрокоманд. Починаючи з 1960-1970-х років зростає важливість взаємодії і інтеграції програм і фрагментів на мові асемблера з модулями, написаними на мовах програмування високого рівня. Досьогодні такі програми, як асемблер і компонувальник є абсолютно необхідними інструментами при представленні нової архітектури комп'ютера чи процесора.&lt;br /&gt;
&lt;br /&gt;
==Базова трансляція==&lt;br /&gt;
&lt;br /&gt;
Найпростішим способом перетворення символьних рядків на машинні команди може бути ''пряма трансляція''. Наприклад, з кожного наступного рядка тексту:&lt;br /&gt;
 mov eax, 0F00BADh&lt;br /&gt;
 jmp eax&lt;br /&gt;
&lt;br /&gt;
асемблером для 32-розрядної архітектури x86 одразу може бути згенерований машинний код відповідної команди процесора і її аргументів (B8 AD 0B F0 00 FF E0). Якщо ж у програмі присутні команди безпосередньо переходу за мітками, алгоритм роботи асемблера ускладнюється: потрібні як мінімум два перегляди (або проходи) тексту програми. При першому перегляді здійснюється розподіл пам'яті і надання значень символічним іменам; при другому — формується об'єктний модуль. В процесі трансляції асемблер проводить повний синтаксичний контроль початкової програми (див. синтаксичний аналіз програм), забезпечуючи при цьому достатньо точну діагностику помилок за місцем і характером.&lt;br /&gt;
&lt;br /&gt;
==Розширені можливості==&lt;br /&gt;
&lt;br /&gt;
На додачу до базової трансляції, одним з найбільш вживаних механізів програм-асемблерів є макроінструкції, починаючи з найпростішої заміни тексту, і до сучасних вбудованих макропроцесорів, з доволі складними можливостями підстановки і розкриття параметрів. Наприклад, асемблери NASM і YASM реалізують власний стек макропроцесора (директиви %push і %pop, можуть здійснювати зсув переданих макрокоманді параметрів на задану кількість (%rotate), повторювати емітування послідовності команд (%rep / %endrep), здійснювати умовну трансляцію (директиви %ifdef і подібні). Пакети макрокоманд для багатих на можливості асемблерів надають програмістам навіть механізм, наближені до структурного програмування, коли програма на мові асемблера виглядає так, немов би вона містить такі сутності, як процедури і функції, локальні змінні, структури даних з можливістю символічної адресації полів, інструкції-перемикачі і тому подібне.&lt;br /&gt;
&lt;br /&gt;
Асемблер NASM (а також майже повністю сумісний YASM) реалізує підтримку одразу кількох форматів об'єктних файлів. Така можливість надзвичайно корисна при крос-компіляції, коли, наприклад, на комп'ютері з операційною системою GNU/Linux потрібно отримати об'єктний файл у форматі PE для систем типу Microsoft Windows. Можливо також задати трансляцію безпосередньо у формат двійкового коду (bin), коли потрібна відповідність «один в один» між текстом програми і згенерованим кодом.&lt;br /&gt;
&lt;br /&gt;
Надзвичайно корисною є підтримка локальних міток у процедурах. У великих програмах це дозволяє мати у кожній процедурі чи функції мітки на кшталт exit чи error, і асемблер коректно визначить адреси переходу на них в межах даної процедури.&lt;br /&gt;
&lt;br /&gt;
==Посилання==&lt;br /&gt;
[https://uk.wikipedia.org/wiki/%D0%90%D1%81%D0%B5%D0%BC%D0%B1%D0%BB%D0%B5%D1%80]&lt;/div&gt;</summary>
		<author><name>111</name></author>	</entry>

	</feed>