Асемблер - це

Асемблер (від англ. 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.

Ассемблирование і компіляція

Процес трансляції програми на мові асемблера в об'єктний код прийнято називати асемблюванні. На відміну від компіляції. ассемблирование - більш-менш однозначний і оборотний процес. У мові асемблера кожної мнемонике відповідає одна машинна інструкція, в той час як в мовах програмування високого рівня за кожним виразом може ховатися велика кількість різних інструкцій. В принципі, цей поділ є досить умовним, тому іноді трансляцію ассемблерних програм також називають компіляцією.

Примітки

література