Асемблер - це
Асемблер (від англ. Assembler - складальник) - комп'ютерна програма, компілятор початкового тексту програми, написаної на мові асемблера. в програму на машинній мові.
Як і сама мова (асемблера), асемблери, як правило, специфічні для конкретної архітектури. операційної системи і варіанти синтаксису мови. Разом з тим існують мультиплатформенні або зовсім універсальні (точніше, обмежено-універсальні, тому що на мові низького рівня не можна написати апаратно-незалежні програми) асемблери, які можуть працювати на різних платформах і операційних системах. Серед останніх можна також виділити групу крос-ассемблеров. здатних збирати машинний код і виконувані модулі (файли) для інших архітектур і ОС.
Ассемблирование може бути не першим і не останнім етапом на шляху отримання виконуваного модуля програми. Так, багато компілятори з мов програмування високого рівня видають результат у вигляді програми на мові асемблера, яку в подальшому обробляє асемблер. Також результатом ассемблирования може бути не здійсненний, а об'єктний модуль. містить розрізнені блоки машинного коду і даних програми, з якого (або з декількох об'єктних модулів) в подальшому за допомогою програми-компоновщика може бути скомпонований здійсненний файл.
архітектура x86
Асемблери для DOS
Найбільш відомими асемблер для операційної системи DOS були Borland Turbo Assembler (TASM), Microsoft Macro Assembler (MASM) і Watcom Assembler (WASM). Також свого часу був популярний простий асемблер A86.
При появі операційної системи Windows з'явилося розширення TASM, іменоване TASM 5+ (неофіційний пакет, створений людиною з ніком! TE), що дозволило створювати програми для виконання в середовищі Windows. Остання відома версія TASM - 5.3, що підтримує інструкції MMX, на даний момент включена в Turbo C ++ Explorer. Але офіційно розвиток програми повністю зупинено.
Microsoft підтримує свій продукт під назвою Microsoft Macro Assembler. Вона продовжує розвиватися і до цього дня, останні версії включені в набори DDK. Але версія програми, спрямована на створення програм для DOS, не розвивається. Крім того, Стівен Хатчессон створив пакет для програмування на MASM під назвою «MASM32».
GNU і GNU / Linux
До складу операційної системи GNU входить пакет binutils, що включає в себе асемблер gas (GNU Assembler), який використовує ATT-синтаксис. на відміну від більшості інших популярних ассемблеров, які використовують Intel-синтаксис (підтримується з версії 2.10).
переносяться асемблери
Також існує відкритий проект асемблера, версії якого доступні під різні операційні системи, і який дозволяє отримувати об'єктні файли для цих систем. Називається цей асемблер NASM (Netwide Assembler).
Yasm - це переписана з нуля версія NASM під ліцензією BSD (з деякими винятками).
flat assembler (fasm) - молодий асемблер під модифікованою для заборони переліцензування (в тому числі під GNU GPL) BSD-ліцензією. Є версії для KolibriOS. Linux. DOS і Windows; використовує Intel-синтаксис і підтримує інструкції x86-64.
архітектури RISC
MCS-51 (Intel 8051) - класична архітектура мікроконтролера. Для неї існує крос-асемблер ASM51, випущений корпорацією MetaLink.
Крім того, багато фірм - розробники програмного забезпечення, такі як IAR або Keil, представили свої варіанти ассемблеров. У ряді випадків застосування цих ассемблеров виявляється більш ефективним завдяки зручному набору директив і наявності середовища програмування, що об'єднує в собі професійний асемблер і мову програмування Сі, відладчик і менеджер програмних проектів.
На даний момент існують 3 компілятора виробництва Atmel (AVRStudio 3, AVRStudio 4, AVRStudio 5 і AVRStudio 6).
В рамках проекту AVR-GCC (він же WinAVR) існує компілятор avr-as (це портований під AVR асемблер GNU as з GCC).
Також існує вільний мінімалістичний компілятор avra [1].
- 8-розрядні Flash-контролера сімейства MCS-51
- 8-розрядні RISC-контролер сімейства AVR (ATtiny, ATmega, classic AVR). На даний момент сімейство classic AVR трансформовано в ATtiny і ATmega
- 8-розрядні RISC-контролер сімейства PIC (PIC10, PIC12, PIC16, PIC18)
- 16-розрядні RISC-контролер сімейства PIC (PIC24HJ / FJ, dsPIC30 / 33)
- 32-розрядні RISC-контролер сімейства PIC (PIC32) з архітектурою MIPS32 M4K
- 32-розрядні RISC-контролер сімейства AVR32 (AVR32)
- 32-розрядні RISC-контролери сімейства ARM Thumb високої продуктивності (серія AT91)
макроассемблер
Не слід плутати з MASM.
Ассемблирование і компіляція
Процес трансляції програми на мові асемблера в об'єктний код прийнято називати асемблюванні. На відміну від компіляції. ассемблирование - більш-менш однозначний і оборотний процес. У мові асемблера кожної мнемонике відповідає одна машинна інструкція, в той час як в мовах програмування високого рівня за кожним виразом може ховатися велика кількість різних інструкцій. В принципі, цей поділ є досить умовним, тому іноді трансляцію ассемблерних програм також називають компіляцією.