Skillnaden mellan Compiler och Assembler

Författare: Laura McKinney
Skapelsedatum: 1 April 2021
Uppdatera Datum: 11 Maj 2024
Anonim
Архитектура ЭВМ | Основы Операционных Систем 04 | Ассемблер
Video: Архитектура ЭВМ | Основы Операционных Систем 04 | Ассемблер

Innehåll


Compiler och Assembler spelar en viktig roll i genomförandet av ett program. Vissa kompilatorer genererar direkt den körbara koden i stället för monteringskoden. Kompilatorn tar den förbehandlade källkoden och översätter den till monteringskoden. Monteraren tar monteringskoden från kompilatorn och översätter den till den flyttbara maskinkoden. I den här artikeln har jag diskuterat skillnaderna mellan kompilator och monterare med hjälp av jämförelsediagram som visas nedan, titta bara.

  1. Jämförelsediagram
  2. Definition
  3. Viktiga skillnader
  4. Slutsats

Jämförelsediagram

Grund för jämförelseKompilator Assemblerare
GrundläggandeGenererar samlingsspråkkoden eller direkt den körbara koden.Genererar den flyttbara maskinkoden.
InmatningFörbehandlad källkod.Samlingens språkkod.
Faser / passSammanställningsfaserna är lexikal analysator, syntaxanalysator, semantisk analysator, mellanliggande kodgenerering, kodoptimering, kodgenerering.Assembler gör två pass över den givna ingången.
ProduktionMonteringskoden som genereras av kompilatorn är en mnemonic version av maskinkoden.Den flyttbara maskinkoden som genereras av en monterare representeras av binär kod.


Definition av Compiler

De kompilator är ett datorprogram som läser programmet skrivet på ett källspråk, översätter det till motsvarande assembleringsspråk och vidarebefordrar monteringsspråkoden till Assemblerare. Medan översättningen av källkoden till monteringskod rapporterar kompilatorn också fel i källkoden till sin användare.

Kompilatorer klassificeras också som enkelpass, multi-pass, load-and-go, felsökning och optimering. Klassificering sker på grundval av vilken funktion en kompilator utför och hur den har konstruerats. Trots dessa komplexiteter förblir kompilatorns grundläggande uppgift densamma.

Sammanställningen utförs i två delar, analysdel och syntesdel. De analysdel bryter källkoden i beståndsdelar och bildar den mellanliggande representationen av källkoden. De syntesdel bildar målkoden från mellanrepresentationen.


Sammanställningen utförs i följande faser:

Lexikal analysator, syntaxanalysator, semantisk analysator, mellanliggande kodgenerator, kodoptimerare, kodgenerator, symboltabell och felhanterare.

  • De lexikal analysator läser tecken i källkoden och grupperar dem i strömmar av symboler. Varje token representerar den logiska sekvensen för tecken som nyckelord, identifierare, operatörer. Karaktersekvensen som bildar ett symbol kallas lexeme.
  • De syntaxanalysator analyserar tokenet erhållet från lexikal analysator och grupperar symboler till en hierarkisk struktur.
  • De semantisk analysator kontrollerar källkoden för någon semantiskt fel.
  • Mellankodgenerator genererar mellanrepresentation av källkoden
  • De kodoptimerare optimerar den mellanliggande koden till snabbare maskinkod.
  • De kod generator slutligen genererar målkoden som är en flyttbar maskinkod eller monteringskod.
  • De symbol bord är en datastruktur som innehåller posten för varje identifierare i källkoden.
  • Felhanterare upptäcker felet i varje fas och hanterar dessa fel.

Definition av Assembler

Vissa kompilatorer utför uppgiften att montera och generera direkt en flyttbar maskinkod istället för monteringskod, som vidare överförs direkt till länkaren / lastaren. De assemblerare tar som ingång monteringskoden genererad av kompilatorn och översätter den till flyttbar maskinkod.

Låt oss se hur maskinkoden skiljer sig från monteringskoden. Monteringskod är mnemoteknisk version av maskinkod. Det betyder att den i monteringskoden använder namn för att representera operationer och till och med ger namn till minnesadresserna. Å andra sidan, maskinkod användningar binära koder för representation av operationer och minnesadresser.

Till och med den enklaste formen av montering utförs två pass över ingången. De första pass upptäcker alla identifierare i monteringskoden som anger lagringsplats och lagra dem i symbol bord (utom kompilatorsymboltabell). De lagringsplats tilldelas till identifieraren som stöter på i första passet.

I andra passet, skannas ingången igen, och den här gången operationskod är översatt in i en sekvens av bitar som representerar den operationen i maskinkoden. Det andra passet översätter också identifierare in i adresser definieras i symboltabellen. Således genererar det andra passet flyttbar maskinkod.

  1. Den viktigaste skillnaden mellan kompilator och monterare är att kompilator genererar monteringskod och vissa kompilatorer kan också direkt generera körbar kod medan, assemblerare genererar flyttbar maskinkod.
  2. Kompilatorn tar som ingång förbehandlad kod genereras av preprocessor. Å andra sidan tar monteraren monteringskod som inmatning.
  3. Sammanställningen sker i två faser analysfas och syntesfas. I analysfasen går ingången lexikal analysator, syntaxanalysator, semantisk analysator Syntesanalysen sker via mellanliggande kodgenerator, kodoptimerare, kodgenerator. Å andra sidan passerar monteraren ingången igenom två faser. Den första fasen detekterar identifierarna och tilldelar adresser till dem i den andra fasen översättningskodet till binär kod.
  4. Monteringskoden som genereras av kompilatorn är en mnemonic version av maskinkod. Emellertid är den flyttbara maskinkoden som genereras av monteraren en binär flyttbar kod.

Slutsats:

Monteraren kanske inte krävs eftersom vissa kompilatorer direkt genererar körbar kod. Om assembler används kräver det länkare att länka alla inbyggda bibliotek till biblioteksfunktioner som används i källkoden.