Forskjellen mellom kompilator og assembler

Forfatter: Laura McKinney
Opprettelsesdato: 1 April 2021
Oppdater Dato: 11 Kan 2024
Anonim
Архитектура ЭВМ | Основы Операционных Систем 04 | Ассемблер
Video: Архитектура ЭВМ | Основы Операционных Систем 04 | Ассемблер

Innhold


Compiler and Assembler spiller en viktig rolle i utførelsen av et program. Noen kompilatorer genererer direkte den kjørbare koden i stedet for monteringskode. Kompilatoren tar den forbehandlede kildekoden og oversetter den til monteringskoden. Montøren tar monteringskoden fra kompilatoren og oversetter den til den flyttbare maskinkoden. I denne artikkelen har jeg diskutert forskjellene mellom kompilator og samler ved hjelp av sammenligningstabell vist nedenfor, bare se.

  1. Sammenligningstabell
  2. Definisjon
  3. Viktige forskjeller
  4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningkompilatoren assembler
grunn~~POS=TRUNCGenererer samtalens språkkode eller direkte den kjørbare koden.Genererer den flyttbare maskinkoden.
InputForbehandlet kildekode.Samlingens språkkode.
Faser / beståttSamlingsfasene er leksikalsk analysator, syntaksanalysator, semantisk analysator, generering av mellomkoder, kodeoptimalisering, generering av kode.Assembler gjør to pasninger over det gitte innspillet.
ProduksjonMonteringskoden generert av kompilatoren er en mnemonic versjon av maskinkode.Den flyttbare maskinkoden generert av en samler representeres av binær kode.


Definisjon av Compiler

De kompilatoren er et dataprogram som leser programmet skrevet på et kildespråk, og oversetter det til tilsvarende forsamlingsspråk og videresender samlingens språkkode til assembler. Mens oversettelsen av kildekoden til monteringskoden rapporterer kompilatoren også feil i kildekoden til brukeren.

Kompilatorer er også klassifisert som enkelt-pass, multi-pass, load-and-go, feilsøking og optimalisering. Klassifisering gjøres på bakgrunn av hvilken funksjon en kompilator utfører og hvordan den er konstruert. Til tross for disse kompleksitetene, forblir den grunnleggende oppgaven til kompilatoren den samme.

Samlingen utføres i to deler, analysedel og syntese del. De analysedel bryter kildekoden i bestanddeler og danner den mellomliggende representasjonen av kildekoden. De syntese del danner målkoden fra mellomrepresentasjonen.


Samlingen utføres i følgende faser:

Leksikalsk analysator, syntaksanalysator, semantisk analysator, mellomliggende kodegenerator, kodeoptimerer, kodegenerator, Symboltabell og feilhåndterer.

  • De leksikalsk analysator leser tegnene i kildekoden og grupperer dem i strømmer av symboler. Hvert symbol representerer den logiske sekvensen til tegn som nøkkelord, identifikatorer, operatører. Karaktersekvensen som danner et symbol kalles Leksem.
  • De syntaksanalysator analyserer token oppnådd fra leksikalsk analysator og grupperer symboler til en hierarkisk struktur.
  • De semantisk analysator sjekker kildekoden for noen semantisk feil.
  • Mellomkodegenerator genererer mellomrepresentasjon av kildekoden
  • De kode Optimizer optimaliserer mellomkoden til raskere kjørende maskinkode.
  • De kode generator endelig genererer målkoden som er en flyttbar maskinkode eller monteringskode.
  • De symboltabell er en datastruktur som inneholder posten for hver identifikator i kildekoden.
  • Feilbehandler oppdager feilen i hver fase og håndterer disse feilene.

Definisjon av Assembler

Noen kompilatorer utfører oppgaven som assembler og genererer direkte en flyttbar maskinkode i stedet for monteringskode, som videre videreføres til linker / loader. De assembler tar som input innsamlingskoden generert av kompilatoren og oversetter den til flyttbar maskinkode.

La oss se hvordan maskinkode er forskjellig fra monteringskode. Monteringskode er den mnemonic versjon av maskinkode. Det betyr at samlingen koden bruker navn for å representere operasjoner og at den til og med gir navn til minneadressene. På den andre hender maskinkode bruker binære koder for representasjon av operasjoner og minneadresser.

Selv den enkleste formen for montering utfører to pasninger over innspillet. De første passering oppdager alle identifikatorer i monteringskoden som angir lagringssted og lagre dem i symboltabell (annet enn symboltabellen for samlere). De lagringsplass er tilordnet til identifikatoren som oppstår i første passering.

I andre pass, skannes inngangen igjen, og denne gangen operasjonskode er oversatt inn i en sekvens av biter som representerer denne operasjonen i maskinkoden. Det andre passet oversettes også identifikatorer inn i det adresser definert i symboltabellen. Dermed genererer det andre passet flyttbar maskinkode.

  1. Den viktigste forskjellen mellom kompilator og assembler er at kompilatoren genererer monteringskode, og noen kompilatorer kan også direkte generere kjørbar kode mens, assembler genererer flyttbar maskinkode.
  2. Kompilatoren tar som inngang forbehandlet kode generert av forbehandler. På den andre hånden tar samleren monteringskode som innspill.
  3. Samlingen foregår i to faser som er analysefase og syntesefase. I analysefase går innspillene gjennom leksikalsk analysator, syntaksanalysator, semantisk analysator mens synteseanalysen foregår via mellomliggende kodegenerator, kodeoptimerer, kodegenerator. På den andre hånden, passerer assembler inngangen gjennom to faser. Den første fasen oppdager identifikatorene og tildeler adresser til dem i den andre fasen montasjekoden blir oversatt til binær kode.
  4. Monteringskoden generert av kompilatoren er en mnemonic versjon av maskinkode. Imidlertid er den flyttbare maskinkoden generert av samleren en binær flyttbar kode.

Konklusjon:

Det kan hende at det ikke er behov for samleren, siden noen kompilatorer direkte genererer kjørbar kode. Hvis assembler brukes, krever det linker for å koble alle de innebygde bibliotekene til bibliotekfunksjonene som brukes i kildekoden.