Assembler (din engleză assembler - assembler) - un traducător de program din text în limbaj de asamblare într-un program în limbaj mașină .
La fel ca limbajul în sine, asamblatorii tind să fie specifici unei anumite arhitecturi , unui sistem de operare și unei variante de sintaxă a limbajului, prin aceea că funcționează pe mnemonicii de instrucțiuni ale mașinii unui anumit procesor. În același timp, asamblatorii pot fi multiplatform sau complet universali, adică pot lucra pe diferite platforme și sisteme de operare. Printre asamblatori, se poate distinge și un grup de asamblatori încrucișați , care au capacitatea de a asambla codul mașinii și module executabile (fișiere) pentru alte arhitecturi decât arhitectura și/sau sistemul de operare în care lucrează asamblatorul însuși (de exemplu, traducerea de un program pentru un microcontroler de către un asamblator care rulează pe un computer ).
Mulți asamblatori moderni sunt macro -asambleri (din grecescul μάκρος - mare, extins), adică macroprocesoare bazate pe limbajul de asamblare [1] . Pe lângă macrocomenzi, asamblatorii execută alte directive în timpul traducerii , al căror set nu depinde de platforma hardware pentru care este tradus programul, ci de traducătorul însuși.
Asamblarea poate să nu fie primul sau ultimul pas pe calea spre obținerea unui modul de program executabil. Deci, multe compilatoare din limbaje de programare de nivel înalt produc rezultatul sub forma unui program în limbaj de asamblare, care este procesat în continuare de către asamblator. La rândul său, rezultatul asamblarii poate să nu fie un executabil, ci un modul obiect care conține blocuri separate de cod mașină și date de program, din care (sau din mai multe module obiect) un fișier executabil poate fi obținut ulterior folosind un linker (linker) .
Spre deosebire de compilarea programelor în limbaje de nivel înalt , asamblarea este un proces mai mult sau mai puțin clar și reversibil, deoarece în limbajul de asamblare fiecare mnemonic corespunde unei instrucțiuni de mașină, în timp ce în limbajele de nivel înalt fiecare expresie poate fi convertită într-un număr mare de instrucțiuni diferite (funcționare, reversul asamblarii se numește dezasamblare ). Traducerea programelor de asamblare este uneori numită și compilare.
Cei mai cunoscuți asamblatori pentru sistemul de operare DOS au fost Borland Turbo Assembler ( TASM ), Microsoft Macro Assembler ( MASM ) și Watcom Assembler (WASM). De asemenea, la un moment dat, asamblatorul simplu A86 a fost popular.
Odată cu apariția sistemului de operare Windows, a apărut o extensie TASM numită TASM 5+ (un pachet neoficial creat de o persoană cu porecla neonovd'), care a făcut posibilă crearea de programe care să ruleze în mediul Windows. Cea mai recentă versiune cunoscută a TASM este 5.3, care acceptă instrucțiuni MMX și este în prezent inclusă în Turbo C++ Explorer . Dar oficial dezvoltarea programului este complet oprită. Compilatorul a primit cea mai recentă dezvoltare datorită mediului modern de dezvoltare TASM Visual. Mediul este neoficial, dar cu ajutorul lui, lucrul cu compilatorul este mult simplificat.
Microsoft își menține produsul numit Microsoft Macro Assembler . Continuă să evolueze până în prezent, cu cele mai recente versiuni incluse în DDK -uri . Dar versiunea programului care vizează crearea de programe pentru DOS nu este în curs de dezvoltare. În plus, Stephen Hutchesson a creat un pachet de programare MASM numit „MASM32”.
Sistemul de operare GNU include pachetul binutils , care include asamblatorul GAS (GNU Assembler) folosind sintaxa AT&T , spre deosebire de majoritatea celorlalți asamblatori populari care folosesc sintaxa Intel (acceptat începând cu versiunea 2.10).
Există, de asemenea, un proiect de asamblare deschis, ale cărui versiuni sunt disponibile pentru diverse sisteme de operare și care vă permite să obțineți fișiere obiect pentru aceste sisteme. Acest asamblator se numește NASM (Netwide Assembler).
Yasm este o versiune rescrisă a NASM, licențiată de la zero sub licența BSD (cu unele excepții).
asamblator plat (fasm) este un asamblator tânăr sub o licență BSD modificată pentru a interzice relicențiarea (inclusiv sub GNU GPL ). Există versiuni pentru KolibriOS , Linux , DOS și Windows ; folosește sintaxa Intel și acceptă instrucțiuni x86-64 .
MCS-51 ( Intel 8051 ) este o arhitectură clasică de microcontroler. Pentru aceasta, există un cross-assembler ASM51, lansat de MetaLink Corporation .
În plus, multe companii de software, precum IAR sau Keil, și-au trimis versiunile de asamblare. În unele cazuri, utilizarea acestor asamblatoare este mai eficientă datorită unui set convenabil de directive și a prezenței unui mediu de programare care combină un asamblator profesionist și limbajul de programare C, un depanator și un manager de proiect software.
În prezent, există 4 compilatoare Atmel pentru AVR ( AVRStudio 3, AVRStudio 4, AVRStudio 5 și AVRStudio 6, AVRStudio 7).
În cadrul proiectului AVR-GCC (aka WinAVR ), există un compilator avr-as (acesta este GNU ca asamblator portat pentru AVR de la GCC ).
Există, de asemenea, un compilator minimalist și gratuit avra [2] .
Compilatoare plătite: IAR (EWAVR), CodeVisionAVR, Imagecraft. Aceste compilatoare acceptă Assembler și C, iar IAR acceptă și C++.
Există un compilator din limbajul BASIC - BASCOM, de asemenea plătit.
Pentru procesoarele ARM, există o gamă destul de largă de compilatoare, a căror implementare internă depinde direct de producătorul procesorului ARM dat sau de dezvoltatorul IDE-ului pentru lucrul cu procesoarele ARM. Compilatorul oficial ARM, direct de la compania ARM , este ARM Compiler 6 , care este inclus în DS-5 Development Studio IDE și acceptă compilarea programelor C și C++ .
Compilatorii de la furnizorii de procesoare ARM și dezvoltatorii de lanțuri de instrumente ARM:
Furnizor IDE | Compilator | Limbi acceptate | Termeni de utilizare |
---|---|---|---|
Keil mVision | MDK-ARM | C / C++ /Asamblator | Shareware (nu mai mult de 32 kb) |
Banc de lucru încorporat IAR | Compilatorul IAR | C / C++ /Asamblator | Comercial |
COIDE | compilator gcc. | C / C++ /Asamblator. | Gratuit/Comercial |
adevărat studio | Compilatorul GCC precompilat. | C / C++ /Asamblator | Gratuit/Comercial |
Mediul de dezvoltare lansat de Microchip Technology pentru crearea, editarea și depanarea programelor pentru microcontrolere din familia PIC este MPLAB . Mediul include traducători din limbajul de asamblare MPASM și ASM30 pentru diferite familii de microcontrolere PIC. Versiunile moderne ale MPLAB X IDE sunt multiplatformă și funcționează sub diferite sisteme de operare pentru computere. Mediul este distribuit gratuit.
Setul de instrumente de dezvoltare software PowerPC de la IBM include un asamblator pentru PowerPC .
Este un succesor al asamblatorului flat assembler (fasm) cu o sintaxă similară, dar spre deosebire de fasm, nu este legat de nicio arhitectură de procesor. Paradigma sa este formarea de fișiere de ieșire de orice formate și cu cod de mașină prin intermediul macro-urilor pentru orice arhitectură de procesor. Pe lângă macrocomenzi, fasmg conține așa-numitul. Instrucțiunile CALM (literal, „instrucțiuni de asamblare compilate asemănătoare macro”) sunt instrucțiuni de mașină virtuală de asamblare nativă, echivalente cu macrocomenzi, care sunt convertite în bytecode de către traducător. Arhitectura acestor instrucțiuni CALM poate fi considerată arhitectura „nativă” a asamblatorului fasmg. Kitul include seturi de instrucțiuni CALM pentru emularea suportului pentru instrucțiuni de arhitectură x86, x64, 8052, AVR; Dezvoltatorul poate descrie seturi de instrucțiuni CALM pentru a suporta orice altă arhitectură, suportă orice formate de fișiere de ieșire. Variațiile de traducător sunt disponibile pentru Mac OS , Linux și Windows [3] [4] [5] .
limbaj de asamblare | |
---|---|
IDE | |
Traducători | |
Formate de sintaxă |
Microcontrolere | ||||||||
---|---|---|---|---|---|---|---|---|
Arhitectură |
| |||||||
Producătorii |
| |||||||
Componente | ||||||||
Periferie | ||||||||
Interfețe | ||||||||
OS | ||||||||
Programare |
|
Limbaje de programare | |
---|---|
|