Assemblerare

Assembler (från engelska  assembler  - assembler) - en programöversättare från text på assemblerspråk till ett program på maskinspråk .

Liksom språket självt tenderar assemblers att vara specifika för en viss arkitektur , operativsystem och syntaxvariant av språket, genom att de arbetar på maskininstruktionsminne för en viss processor. Samtidigt kan montörer vara multiplattformar eller helt universella, det vill säga de kan arbeta på olika plattformar och operativsystem. Bland montörer kan man också urskilja en grupp korsmontörer , som har förmågan att sätta ihop maskinkod och exekverbara moduler (filer) för andra arkitekturer än den arkitektur och/eller operativsystem som montören själv arbetar i (till exempel översättning av ett program för en mikrokontroller av en assembler som körs på en dator ).

Många moderna assemblerare är makrosammansättare (av grekiskan μάκρος  - large, extensiv), det vill säga makroprocessorer baserade på assemblerspråk [1] . Förutom makron, utför assemblers andra direktiv under översättningen , vars uppsättning inte beror på hårdvaruplattformen för vilken programmet är översatt, utan på översättaren själv.

Montering kanske inte är det första eller sista steget på vägen mot att få en körbar programmodul. Så många kompilatorer från högnivåprogrammeringsspråk producerar resultatet i form av ett assemblerprogram, som vidarebearbetas av assemblern. I sin tur kanske resultatet av monteringen inte är en körbar fil, utan en objektmodul som innehåller separata block av maskinkod och programdata, från vilken (eller från flera objektmoduler) en körbar fil kan erhållas senare med hjälp av en länkare (länkare) .

Till skillnad från att kompilera program på högnivåspråk är assemblering en mer eller mindre entydig och reversibel process, eftersom varje mnemonik i assemblerspråk motsvarar en maskininstruktion, medan i högnivåspråk varje uttryck kan konverteras till ett stort antal olika instruktioner (manövrering, motsatsen till montering kallas demontering ). Översättning av monteringsprogram kallas ibland även för kompilering.

x86-arkitektur

Assemblers för DOS

De mest kända montörerna för DOS- operativsystemet var Borland Turbo Assembler ( TASM ), Microsoft Macro Assembler ( MASM ) och Watcom Assembler (WASM). Också en gång var den enkla montören A86 populär.

Windows

Med tillkomsten av Windows-operativsystemet dök det upp ett TASM-tillägg som heter TASM 5+ (ett inofficiellt paket skapat av en person med smeknamnet neonovd'), vilket gjorde det möjligt att skapa program för att köras i Windows-miljön. Den senaste kända versionen av TASM är 5.3, som stöder MMX-instruktioner, och som för närvarande ingår i Turbo C++ Explorer . Men officiellt stoppas utvecklingen av programmet helt. Kompilatorn fick sin senaste utveckling tack vare den moderna TASM Visual utvecklingsmiljön. Miljön är inofficiell, men med dess hjälp förenklas arbetet med kompilatorn avsevärt.

Microsoft underhåller sin produkt som heter Microsoft Macro Assembler . Det fortsätter att utvecklas till denna dag, med de senaste versionerna inkluderade i DDK :erna . Men versionen av programmet som syftar till att skapa program för DOS utvecklas inte. Dessutom skapade Stephen Hutchesson ett MASM-programmeringspaket som heter "MASM32".

GNU och Linux

GNU - operativsystemet inkluderar paketet binutils , som inkluderar GAS assembler (GNU Assembler) som använder AT&T-syntax , till skillnad från de flesta andra populära assemblers som använder Intel-syntax (stöds sedan version 2.10).

Bärbara montörer

Det finns också ett öppet assemblerprojekt, vars versioner finns tillgängliga för olika operativsystem, och som låter dig få objektfiler för dessa system. Denna assembler kallas NASM (Netwide Assembler).

Yasm  är en omskriven version av NASM licensierad från grunden under BSD-licensen (med vissa undantag).

flat assembler (fasm) är en ung assembler under en BSD-licens modifierad för att förbjuda omlicensiering (inklusive under GNU GPL ). Det finns versioner för KolibriOS , Linux , DOS och Windows ; använder Intel-syntax och stöder x86-64- instruktioner .

RISC-arkitekturer

MCS-51

MCS-51 ( Intel 8051 ) är en klassisk mikrokontrollerarkitektur. För det finns en cross-assembler ASM51, släppt av MetaLink Corporation .

Dessutom har många mjukvaruföretag, som IAR eller Keil, lämnat in sina assemblerversioner. I vissa fall är användningen av dessa assemblers effektivare på grund av en bekväm uppsättning direktiv och närvaron av en programmeringsmiljö som kombinerar en professionell assembler och C-programmeringsspråket, en debugger och en mjukvaruprojektledare.

AVR

Det finns för närvarande 4 Atmel-kompilatorer för AVR ( AVRStudio 3, AVRStudio 4, AVRStudio 5 och AVRStudio 6, AVRStudio 7).

Inom ramen för AVR-GCC-projektet (alias WinAVR ) finns en kompilator avr-as (detta är GNU som assembler portad för AVR från GCC ).

Det finns också en gratis minimalistisk kompilator avra [2] .

Betalda kompilatorer: IAR (EWAVR), CodeVisionAVR, Imagecraft. Dessa kompilatorer stöder Assembler och C, och IAR stöder även C++.

Det finns en kompilator från BASIC-språket - BASCOM, även betald.

ARM

För ARM-processorer finns det ett ganska brett urval av kompilatorer, vars interna implementering beror direkt på tillverkaren av den givna ARM-processorn eller utvecklaren av IDE för att arbeta med ARM-processorer. Den officiella ARM-kompilatorn, direkt från ARM-företaget , är ARM Compiler 6 , som ingår i DS-5 Development Studio IDE och stöder kompilering av C- och C++- program .
Kompilatorer från ARM-processorleverantörer och ARM-verktygskedjeutvecklare:

IDE-leverantör Kompilator Språk som stöds Villkor
Keil mVision MDK-ARM C / C++ /Assembler Shareware (högst 32 kb)
IAR Embedded Workbench IAR-kompilator C / C++ /Assembler Kommersiell
COIDE gcc kompilator. C / C++ /Assembler. Gratis/kommersiellt
riktig studio Förkompilerad GCC-kompilator. C / C++ /Assembler Gratis/kommersiellt

PIC

Utvecklingsmiljön som släppts av Microchip Technology för att skapa, redigera och felsöka program för mikrokontroller i PIC -familjen är MPLAB . Miljön inkluderar översättare från MPASM och ASM30 assemblerspråk för olika familjer av PIC-mikrokontroller. Moderna versioner av MPLAB X IDE är multiplattformar och fungerar under olika operativsystem för datorer. Mediet distribueras gratis.

AVR32

MSP430

PowerPC

IBMs The PowerPC Software Development Toolset innehåller en assembler för PowerPC .

MIPS

Assembler virtuell maskinarkitektur

fasmg assembler (CALM instruktionsarkitektur)

Den är en efterföljare till platta assembler (fasm) assembler med liknande syntax, men till skillnad från fasm är den inte knuten till någon processorarkitektur. Dess paradigm är bildandet av utdatafiler av alla format och med maskinkod med hjälp av makron för vilken processorarkitektur som helst. Förutom makron innehåller fasmg den sk. CALM-instruktioner (bokstavligen "makroliknande kompilerade monteringsinstruktioner") är inbyggda instruktioner för virtuella assemblermaskiner, motsvarande makron, som omvandlas till bytekod av kompilatorn. Arkitekturen för dessa CALM-instruktioner kan betraktas som den "infödda" arkitekturen för fasmg-montören. Satsen innehåller uppsättningar med CALM-instruktioner för att emulera stöd för x86, x64, 8052, AVR-arkitekturinstruktioner; Utvecklaren kan beskriva uppsättningar av CALM-instruktioner för att stödja alla andra arkitekturer, stödja alla utdatafilformat. Översättarvarianter är tillgängliga för Mac OS , Linux och Windows [3] [4] [5] .

Se även

Anteckningar

  1. Dictionary of Cybernetics/Ed. Akademiker V. S. Mikhalevich . - 2:a uppl. - K . : Huvudupplagan av den ukrainska sovjetiska uppslagsboken uppkallad efter M. P. Bazhan, 1989. - 751 s. - (C48). — 50 000 exemplar.  - ISBN 5-88500-008-5 .
  2. Assembler ProjectSourceForge.net
  3. Vad är flat assembler g? . Hämtad 5 oktober 2020. Arkiverad från originalet 8 oktober 2020.
  4. planmontör g. Användarmanual . Hämtad 5 oktober 2020. Arkiverad från originalet 27 augusti 2020.
  5. flat assembler g versionsinformation . Hämtad 5 oktober 2020. Arkiverad från originalet 8 oktober 2020.

Litteratur