Асе́мблер (англ. assembler) — комп'ютерна програма-транслятор, що призначена для генерації машинного (двійкового) коду з символьного представлення цього коду (мови асемблера). Наприклад, текстовий рядок CLI
для архітектури x86 перетворюється асемблером у двійковий код 11111010
. Крім власне трансляції, багато програм-асемблерів підтримують і іншу функціональність, корисну при розробці системного і прикладного програмного забезпечення, таку як вибір формату об'єктного модуля, генерація символьної інформації (наприклад, відлагоджувальної), різноманітні директиви на зразок EXTERN
чи GLOBAL
, макрокоманди тощо.
При трансляції з мов високого рівня асемблер нерідко використовується для виконання завершальної фази трансляції.
Історія
Один з перших асемблерів було створено для машини IBM 701. Асемблер одразу полегшив працю першим програмістам: замість кодів машинних команд стало можливим писати програму у символьній (алфавітно-цифровій) формі, і найголовніше, відпала необхідність ручного перерахунку всіх адрес переходів при зміні програми. Асемблери 1950-х років, що мали назву , були одними з перших, що надавали можливість означення і використання макрокоманд. Починаючи з 1960-1970-х років зростає важливість взаємодії і інтеграції програм і фрагментів мовою асемблера з модулями, написаними на мовах програмування високого рівня. До сьогодні такі програми, як асемблер і компонувальник є абсолютно необхідними інструментами при представленні нової архітектури комп'ютера чи процесора.
Базова трансляція
Найпростішим способом перетворення символьних рядків на машинні команди може бути пряма трансляція. Наприклад, з кожного наступного рядка тексту
mov eax, 0F00BADh jmp eax
асемблером для 32-розрядної архітектури x86 одразу може бути згенерований машинний код відповідної команди процесора і її аргументів (B8 AD 0B F0 00 FF E0
). Якщо ж у програмі присутні команди безпосередньо переходу за мітками, алгоритм роботи асемблера ускладнюється: потрібні як мінімум два перегляди (або проходи) тексту програми. При першому перегляді здійснюється розподіл пам'яті і надання значень символічним іменам; при другому — формується об'єктний модуль. В процесі трансляції асемблер проводить повний синтаксичний аналіз початкової програми, забезпечуючи при цьому достатньо точну діагностику помилок за місцем і характером.
Розширені можливості
На додачу до базової трансляції, одним з найбільш вживаних механізмів програм-асемблерів є макроінструкції, починаючи з найпростішої заміни тексту, і до сучасних вбудованих макропроцесорів, з доволі складними можливостями підстановки і розкриття параметрів. Наприклад, асемблери NASM і реалізують власний стек макропроцесора (директиви %push
і %pop
), можуть здійснювати зсув переданих макрокоманді параметрів на задану кількість (%rotate
), повторювати емітування послідовності команд (%rep
/ %endrep
), здійснювати умовну трансляцію (директиви %ifdef
і подібні). Пакети макрокоманд для багатих на можливості асемблерів надають програмістам навіть механізм, наближені до структурного програмування, коли програма на мові асемблера виглядає так, немов би вона містить такі сутності, як процедури і функції, локальні змінні, структури даних з можливістю символічної адресації полів, інструкції-перемикачі і тому подібне.
Асемблер NASM (а також майже повністю сумісний ) реалізує підтримку одразу кількох форматів об'єктних файлів. Така можливість надзвичайно корисна при крос-компіляції, коли, наприклад, на комп'ютері з операційною системою (GNU/Linux) потрібно отримати об'єктний файл у форматі для систем типу Microsoft Windows. Можливо також задати трансляцію безпосередньо у формат двійкового коду (bin
), коли потрібна відповідність «один в один» між текстом програми і згенерованим кодом.
Надзвичайно корисною є підтримка локальних міток у процедурах. У великих програмах це дозволяє мати у кожній процедурі чи функції мітки на кшталт exit
чи error
, і асемблер коректно визначить адреси переходу на них в межах даної процедури.
Асемблери для архітектури x86
Цей розділ потребує доповнення. (січень 2018) |
- Середовища для розробки:
- Транслятори:
- MASM - Microsoft Macro Assembler, ліцензія Microsoft EULA
- - GNU Assembler, ліцензія GNU GPL
- FASM - flat assembler, ліцензія BSD
- NASM - Netwide Assembler, ліцензія BSD
- TASM - Turbo Assembler від Borland, пропрієтарний, підтримку припинено
- - вільний асемблер на основі NASM, ліцензія BSD
- - Open Watcom Assembler, ліцензія Sybase Open Watcom Public License
- - вільний асемблер від Джеремі Гордона
Асемблери для інших архітектур
Цей розділ потребує доповнення. (січень 2018) |
- - High Level Assembler від IBM
Література
- Енциклопедія кібернетики : у 2 т. / за ред. В. М. Глушкова. — Київ : Гол. ред. Української радянської енциклопедії, 1973.
- Галисеев Геннадий Владимирович. Асемблер для Win 32. Самоучитель = Ассемблер для Win 32. Самоучитель. — М. : , 2007. — С. 368. — .
- Кіп Ірвін. Мова асемблера для процесорів Intel = Мова асемблера для процесорів Intel. — М. : «Вільямс», 2005. — С. 912. — .
Посилання
- . Архів оригіналу за 21 січня 2018. Процитовано 20 січня 2018.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Ne plutati z Movoyu asemblera U Vikipediyi ye statti pro inshi znachennya cogo termina ASM Ase mbler angl assembler komp yuterna programa translyator sho priznachena dlya generaciyi mashinnogo dvijkovogo kodu z simvolnogo predstavlennya cogo kodu movi asemblera Napriklad tekstovij ryadok CLI dlya arhitekturi x86 peretvoryuyetsya asemblerom u dvijkovij kod 11111010 Krim vlasne translyaciyi bagato program asembleriv pidtrimuyut i inshu funkcionalnist korisnu pri rozrobci sistemnogo i prikladnogo programnogo zabezpechennya taku yak vibir formatu ob yektnogo modulya generaciya simvolnoyi informaciyi napriklad vidlagodzhuvalnoyi riznomanitni direktivi na zrazok EXTERN chi GLOBAL makrokomandi tosho Pri translyaciyi z mov visokogo rivnya asembler neridko vikoristovuyetsya dlya vikonannya zavershalnoyi fazi translyaciyi IstoriyaOdin z pershih asembleriv bulo stvoreno dlya mashini IBM 701 Asembler odrazu polegshiv pracyu pershim programistam zamist kodiv mashinnih komand stalo mozhlivim pisati programu u simvolnij alfavitno cifrovij formi i najgolovnishe vidpala neobhidnist ruchnogo pererahunku vsih adres perehodiv pri zmini programi Asembleri 1950 h rokiv sho mali nazvu buli odnimi z pershih sho nadavali mozhlivist oznachennya i vikoristannya makrokomand Pochinayuchi z 1960 1970 h rokiv zrostaye vazhlivist vzayemodiyi i integraciyi program i fragmentiv movoyu asemblera z modulyami napisanimi na movah programuvannya visokogo rivnya Do sogodni taki programi yak asembler i komponuvalnik ye absolyutno neobhidnimi instrumentami pri predstavlenni novoyi arhitekturi komp yutera chi procesora Bazova translyaciyaNajprostishim sposobom peretvorennya simvolnih ryadkiv na mashinni komandi mozhe buti pryama translyaciya Napriklad z kozhnogo nastupnogo ryadka tekstu mov eax 0F00BADh jmp eax asemblerom dlya 32 rozryadnoyi arhitekturi x86 odrazu mozhe buti zgenerovanij mashinnij kod vidpovidnoyi komandi procesora i yiyi argumentiv B8 AD 0B F0 00 FF E0 Yaksho zh u programi prisutni komandi bezposeredno perehodu za mitkami algoritm roboti asemblera uskladnyuyetsya potribni yak minimum dva pereglyadi abo prohodi tekstu programi Pri pershomu pereglyadi zdijsnyuyetsya rozpodil pam yati i nadannya znachen simvolichnim imenam pri drugomu formuyetsya ob yektnij modul V procesi translyaciyi asembler provodit povnij sintaksichnij analiz pochatkovoyi programi zabezpechuyuchi pri comu dostatno tochnu diagnostiku pomilok za miscem i harakterom Rozshireni mozhlivostiDokladnishe Makroasembler Na dodachu do bazovoyi translyaciyi odnim z najbilsh vzhivanih mehanizmiv program asembleriv ye makroinstrukciyi pochinayuchi z najprostishoyi zamini tekstu i do suchasnih vbudovanih makroprocesoriv z dovoli skladnimi mozhlivostyami pidstanovki i rozkrittya parametriv Napriklad asembleri NASM i realizuyut vlasnij stek makroprocesora direktivi push i pop mozhut zdijsnyuvati zsuv peredanih makrokomandi parametriv na zadanu kilkist rotate povtoryuvati emituvannya poslidovnosti komand rep endrep zdijsnyuvati umovnu translyaciyu direktivi ifdef i podibni Paketi makrokomand dlya bagatih na mozhlivosti asembleriv nadayut programistam navit mehanizm nablizheni do strukturnogo programuvannya koli programa na movi asemblera viglyadaye tak nemov bi vona mistit taki sutnosti yak proceduri i funkciyi lokalni zminni strukturi danih z mozhlivistyu simvolichnoyi adresaciyi poliv instrukciyi peremikachi i tomu podibne Asembler NASM a takozh majzhe povnistyu sumisnij realizuye pidtrimku odrazu kilkoh formativ ob yektnih fajliv Taka mozhlivist nadzvichajno korisna pri kros kompilyaciyi koli napriklad na komp yuteri z operacijnoyu sistemoyu GNU Linux potribno otrimati ob yektnij fajl u formati dlya sistem tipu Microsoft Windows Mozhlivo takozh zadati translyaciyu bezposeredno u format dvijkovogo kodu bin koli potribna vidpovidnist odin v odin mizh tekstom programi i zgenerovanim kodom Nadzvichajno korisnoyu ye pidtrimka lokalnih mitok u procedurah U velikih programah ce dozvolyaye mati u kozhnij proceduri chi funkciyi mitki na kshtalt exit chi error i asembler korektno viznachit adresi perehodu na nih v mezhah danoyi proceduri Asembleri dlya arhitekturi x86Cej rozdil potrebuye dopovnennya sichen 2018 Seredovisha dlya rozrobki WinAsm Translyatori MASM Microsoft Macro Assembler licenziya Microsoft EULA GNU Assembler licenziya GNU GPL FASM flat assembler licenziya BSD NASM Netwide Assembler licenziya BSD TASM Turbo Assembler vid Borland propriyetarnij pidtrimku pripineno vilnij asembler na osnovi NASM licenziya BSD Open Watcom Assembler licenziya Sybase Open Watcom Public License vilnij asembler vid Dzheremi GordonaAsembleri dlya inshih arhitekturCej rozdil potrebuye dopovnennya sichen 2018 High Level Assembler vid IBMLiteraturaEnciklopediya kibernetiki u 2 t za red V M Glushkova Kiyiv Gol red Ukrayinskoyi radyanskoyi enciklopediyi 1973 Galiseev Gennadij Vladimirovich Asembler dlya Win 32 Samouchitel Assembler dlya Win 32 Samouchitel M 2007 S 368 ISBN 978 5 8459 1197 1 Kip Irvin Mova asemblera dlya procesoriv Intel Mova asemblera dlya procesoriv Intel M Vilyams 2005 S 912 ISBN 0 13 091013 9 Posilannya Arhiv originalu za 21 sichnya 2018 Procitovano 20 sichnya 2018