Samler

Assembler (fra engelsk  assembler  - assembler) - en programoversætter fra tekst på assemblersprog til et program på maskinsprog .

Ligesom selve sproget har assemblere en tendens til at være specifikke for en bestemt arkitektur , operativsystem og syntaksvariant af sproget, idet de opererer på maskininstruktionsmnemonics fra en bestemt processor. Samtidig kan assemblere være multiplatform eller helt universelle, det vil sige, at de kan arbejde på forskellige platforme og operativsystemer. Blandt assemblere kan man også skelne en gruppe af cross assemblers , som har evnen til at samle maskinkode og eksekverbare moduler (filer) til andre arkitekturer end den arkitektur og/eller operativsystem, som assembleren selv arbejder i (f.eks. oversættelse af et program til en mikrocontroller af en assembler, der kører på en computer ).

Mange moderne assemblere er makro assemblere (fra græsk μάκρος  - large, extensiv), det vil sige makroprocessorer baseret på assemblersprog [1] . Ud over makroer udfører assemblers andre direktiver under oversættelsen , hvis sæt ikke afhænger af den hardwareplatform, som programmet er oversat til, men af ​​oversætteren selv.

Montering er muligvis ikke det første eller sidste trin på vejen til at få et eksekverbart programmodul. Så mange compilere fra programmeringssprog på højt niveau producerer resultatet i form af et assemblersprogsprogram, som viderebearbejdes af assembleren. Til gengæld er resultatet af montering muligvis ikke en eksekverbar fil, men et objektmodul, der indeholder separate blokke af maskinkode og programdata, hvorfra (eller fra flere objektmoduler) en eksekverbar fil kan hentes senere ved hjælp af en linker (linker) .

I modsætning til kompilering af programmer på højniveausprog er assemblering en mere eller mindre entydig og reversibel proces, da hver mnemonic i assemblersprog svarer til én maskininstruktion, mens hvert udtryk i højniveausprog kan konverteres til et stort antal forskellige instruktioner (betjening, det omvendte af montering kaldes demontering ). Oversættelse af montageprogrammer kaldes nogle gange også kompilering.

x86 arkitektur

Assemblers til DOS

De bedst kendte samlere til DOS -operativsystemet var Borland Turbo Assembler ( TASM ), Microsoft Macro Assembler ( MASM ) og Watcom Assembler (WASM). Også på et tidspunkt var den simple assembler A86 populær.

Windows

Med fremkomsten af ​​Windows-operativsystemet dukkede en TASM-udvidelse kaldet TASM 5+ (en uofficiel pakke oprettet af en person med kaldenavnet neonovd') op, som gjorde det muligt at lave programmer til at køre i Windows-miljøet. Den seneste kendte version af TASM er 5.3, som understøtter MMX-instruktioner og er i øjeblikket inkluderet i Turbo C++ Explorer . Men officielt er udviklingen af ​​programmet helt stoppet. Compileren modtog sin seneste udvikling takket være det moderne TASM Visual udviklingsmiljø. Miljøet er uofficielt, men med dets hjælp er arbejdet med compileren meget forenklet.

Microsoft vedligeholder deres produkt kaldet Microsoft Macro Assembler . Det fortsætter med at udvikle sig den dag i dag, med de seneste versioner inkluderet i DDK'erne . Men den version af programmet, der har til formål at skabe programmer til DOS, er ikke under udvikling. Derudover oprettede Stephen Hutchesson en MASM-programmeringspakke kaldet "MASM32".

GNU og Linux

GNU -operativsystemet inkluderer binutils-pakken , som inkluderer GAS -assembler (GNU Assembler) ved hjælp af AT&T-syntaks , i modsætning til de fleste andre populære assemblere, der bruger Intel-syntaks (understøttet siden version 2.10).

Bærbare samlere

Der er også et åbent assembler-projekt, hvis versioner er tilgængelige til forskellige operativsystemer, og som giver dig mulighed for at hente objektfiler til disse systemer. Denne assembler kaldes NASM (Netwide Assembler).

Yasm  er en omskrevet version af NASM licenseret fra bunden under BSD-licensen (med nogle undtagelser).

flat assembler (fasm) er en ung assembler under en BSD-licens ændret til at forbyde genlicensering (inklusive under GNU GPL ). Der er versioner til KolibriOS , Linux , DOS og Windows ; bruger Intel-syntaks og understøtter x86-64- instruktioner .

RISC arkitekturer

MCS-51

MCS-51 ( Intel 8051 ) er en klassisk mikrocontroller-arkitektur. Til det er der en cross-assembler ASM51, udgivet af MetaLink Corporation .

Derudover indsendte mange softwarevirksomheder, såsom IAR eller Keil, deres assembler-versioner. I nogle tilfælde er brugen af ​​disse assemblere mere effektiv på grund af et praktisk sæt direktiver og tilstedeværelsen af ​​et programmeringsmiljø, der kombinerer en professionel assembler og C-programmeringssproget, en debugger og en softwareprojektleder.

AVR

Der er i øjeblikket 4 Atmel-kompilere til AVR ( AVRStudio 3, AVRStudio 4, AVRStudio 5 og AVRStudio 6, AVRStudio 7).

Inden for rammerne af AVR-GCC-projektet (aka WinAVR ), er der en compiler avr-as (dette er GNU'en som assembler porteret til AVR fra GCC ).

Der er også en gratis minimalistisk compiler avra [2] .

Betalte compilere: IAR (EWAVR), CodeVisionAVR, Imagecraft. Disse compilere understøtter Assembler og C, og IAR understøtter også C++.

Der er en compiler fra BASIC sproget - BASCOM, også betalt.

ARM

For ARM-processorer er der et ret bredt udvalg af compilere, hvis interne implementering afhænger direkte af producenten af ​​den givne ARM-processor eller udvikleren af ​​IDE til at arbejde med ARM-processorer. Den officielle ARM-kompiler, direkte fra ARM-virksomheden , er ARM Compiler 6 , som er inkluderet i DS-5 Development Studio IDE og understøtter kompilering af C- og C++- programmer .
Kompilere fra ARM-processorleverandører og ARM-værktøjskædeudviklere:

IDE udbyder Kompiler Understøttede sprog Vilkår for brug
Keil mVision MDK-ARM C / C++ /Assembler Shareware (ikke mere end 32 kb)
IAR Embedded Workbench IAR-kompiler C / C++ /Assembler Kommerciel
COIDE gcc compiler. C / C++ /Assembler. Gratis/kommerciel
ægte studie Forkompileret GCC-kompiler. C / C++ /Assembler Gratis/kommerciel

PIC

Udviklingsmiljøet frigivet af Microchip Technology til oprettelse, redigering og fejlfinding af programmer til mikrocontrollere i PIC- familien er MPLAB . Miljøet omfatter oversættere fra MPASM og ASM30 assemblersprog til forskellige familier af PIC-mikrocontrollere. Moderne versioner af MPLAB X IDE er multiplatform og fungerer under forskellige operativsystemer til computere. Mediet distribueres gratis.

AVR32

MSP430

PowerPC

IBM 's The PowerPC Software Development Toolset inkluderer en assembler til PowerPC'en .

MIPS

Assembler virtuel maskinarkitektur

fasmg assembler (CALM instruktionsarkitektur)

Det er en efterfølger til den flade assembler (fasm) assembler med en lignende syntaks, men i modsætning til fasm er den ikke bundet til nogen processorarkitektur. Dens paradigme er dannelsen af ​​outputfiler af ethvert format og med maskinkode ved hjælp af makroer til enhver processorarkitektur. Udover makroer indeholder fasmg den såkaldte. CALM-instruktioner (bogstaveligt talt "makro-lignende kompilerede monteringsinstruktioner") er native assembler virtuelle maskine-instruktioner, svarende til makroer, der konverteres til bytekode af oversætteren. Arkitekturen af ​​disse CALM instruktioner kan betragtes som den "native" arkitektur af fasmg assembler. Sættet indeholder sæt CALM-instruktioner til at emulere understøttelse af x86, x64, 8052, AVR-arkitekturinstruktioner; udvikleren kan beskrive sæt CALM-instruktioner for at understøtte enhver anden arkitektur, understøtte alle output-filformater. Oversættervarianter er tilgængelige til Mac OS , Linux og Windows [3] [4] [5] .

Se også

Noter

  1. Dictionary of Cybernetics / Ed. Akademiker V. S. Mikhalevich . - 2. udg. - K . : Hovedudgave af den ukrainske sovjetiske encyklopædi opkaldt efter M. P. Bazhan, 1989. - 751 s. - (C48). — 50.000 eksemplarer.  - ISBN 5-88500-008-5 .
  2. Assembler ProjectSourceForge.net
  3. Hvad er flat assembler g? . Hentet 5. oktober 2020. Arkiveret fra originalen 8. oktober 2020.
  4. fladmontør g. Brugermanual . Hentet 5. oktober 2020. Arkiveret fra originalen 27. august 2020.
  5. flat assembler g versionsinformation . Hentet 5. oktober 2020. Arkiveret fra originalen 8. oktober 2020.

Litteratur