Erinevus koostaja ja monteerija vahel

Autor: Laura McKinney
Loomise Kuupäev: 1 Aprill 2021
Värskenduse Kuupäev: 12 Mai 2024
Anonim
Erinevus koostaja ja monteerija vahel - Tehnoloogia
Erinevus koostaja ja monteerija vahel - Tehnoloogia

Sisu


Kompilaatoril ja monteerijal on oluline roll programmi täitmisel. Mõned kompilaatorid genereerivad koostuskoodi asemel otse käivitatava koodi. Kompilaator võtab eeltöödeldud lähtekoodi ja tõlgib selle koostuskoodiks. Monteerija võtab koostajalt kokku monteerimiskoodi ja tõlgib selle ümberpaigutatavaks masinkoodiks. Selles artiklis olen allpool näidatud võrdlusdiagrammi abil arutanud kompilaatori ja monteerija erinevusi, piisab, kui vaadata.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm

Võrdluse alusKoostaja Monteerija
PõhilineGenereerib koostikeele koodi või otse käivitatava koodi.Genereerib ümberpaigutatava masinkoodi.
SisendEeltöödeldud lähtekood.Assamblee keele kood.
Faasid / läbibKompileerimise faasid on leksikaalne analüsaator, süntaksianalüsaator, semantiline analüsaator, vahepealne koodi genereerimine, koodi optimeerimine, koodi genereerimine.Monteerija teeb antud sisendist kaks korda mööda.
VäljundKompilaatori genereeritud koostuskood on masinkoodi mnemooniline versioon.Monteerija genereeritud ümberpaigutatav masinkood on tähistatud kahendkoodiga.


Kompilaatori määratlus

koostaja on arvutiprogramm, mis loeb lähtekeeles kirjutatud programmi, tõlgib selle ekvivalendiks montaažikeel ja edastab montaažikeele koodi Monteerija. Lähtekoodi tõlkimisel kogukoodiks teatab kompilaator ka viga lähtekoodis selle kasutajale.

Koostajad klassifitseeritakse ka järgmistesse kategooriatesse: ühekäigulised, mitmekäigulised, laadivad ja lähevad, silumine ja optimeerimine. Klassifitseerimine toimub selle põhjal, millist funktsiooni kompilaator täidab ja kuidas see on üles ehitatud. Nendele keerukustele vaatamata jääb kompilaatori põhiülesanne samaks.

Kompileerimine toimub kahes osas, analüüsi osa ja sünteesi osa. analüüsi osa jaotab lähtekoodi koostisosadeks ja moodustab lähtekoodi vaheesituse. sünteesi osa moodustab vaheesindusest sihtkoodi.


Kompileerimine toimub järgmistes etappides:

Leksiline analüsaator, süntaksianalüsaator, semantiline analüsaator, vahepealne koodigeneraator, koodide optimeerija, koodigeneraator, sümbolitabel ja veakäsitleja.

  • leksikaalne analüsaator loeb lähtekoodi märgid ja rühmitab need tokkide voog. Iga märk tähistab loogilist märgide jada nagu märksõna, identifikaatorid, operaatorid. Märgisektsiooni, mis moodustab märgi, nimetatakse lexeme.
  • süntaksianalüsaator sõelub leksikaalsest analüsaatorist saadud märgi ja rühmitab žetoonid a-ks hierarhiline struktuur.
  • semantiline analüsaator kontrollib lähtekoodi olemasolu semantiline viga.
  • Vahekoodigeneraator genereerib vaheesindus lähtekoodi
  • koodi optimeerija optimeerib vahekoodi kiiremini töötavaks masinkoodiks.
  • koodigeneraator genereerib lõpuks sihtkoodi, mis on a ümberpaigutatav masina kood või komplekteerimiskood.
  • sümbolitabel on andmestruktuur, mis sisaldab lähtekoodi iga identifikaatori kirjet.
  • Veakäitleja tuvastab vea igas faasis ja tegeleb nende vigadega.

Monteerija määratlus

Mõned kompilaatorid täidavad monteerija ülesannet ja genereerivad monteerimiskoodi asemel otse ümberpaigutatava masinkoodi, mis edastatakse otse linkerile / laadurile. monteerija võtab sisendina kompilaatori genereeritud koostuskoodi ja teisendab selle ümberpaigutatav masina kood.

Vaatame, kuidas masinkood erineb koostuskoodist. Assamblee kood on mnemooniline masinkoodi versioon. See tähendab, et koostuskood kasutab toimingute tähistamiseks nimesid ja see annab mäluaadressidele isegi nimesid. Teiselt poolt, masina kood kasutab binaarsed koodid operatsioonide ja mäluaadresside esitamiseks.

Esineb isegi kõige lihtsam vorm koostaja kaks läbimist üle sisendi. esimene läbimine tuvastab kõik tunnused kogumiskoodis, mis tähistab salvestuskohta ja salvestage need kausta sümbolitabel (va kompilaatorite sümboltabel). mälu asukoht on määratud esimesel läbimisel tuvastatud identifikaatorini.

in teine ​​läbimine, skannitakse sisend uuesti ja seekord operatsiooni kood on tõlgitud sisse a bittide jada esindavad seda operatsiooni masinkoodis. Teine läbib ka tõlget tunnused sisse aadressid määratletud sümbolitabelis. Seega genereerib teine ​​käik ümberpaigutatav masina kood.

  1. Peamine erinevus kompilaatori ja koostaja vahel on see, et koostaja genereerib koostamiskoodi ja mõned kompilaatorid saavad ka otseselt käivitatava koodi genereerida, samas kui monteerija genereerib ümberpaigutatava masinkoodi.
  2. Kompilaator võtab sisendina eeltöödeldud kood loodud eeltöötleja poolt. Teisest küljest võtab kokkupanija koost kood sisendina.
  3. Kompileerimine toimub kahes faasis, mis on analüüsi faas ja sünteesi faas. Analüüsi faasis läbitakse sisend leksikaalne analüsaator, süntaksianalüsaator, semantiline analüsaator seevastu sünteesi analüüs toimub kaudu vahekoodigeneraator, koodide optimeerija, koodigeneraator. Teisest küljest laseb kokkupanija sisendi läbi kaks faasi. Esimene faas tuvastab identifikaatorid ja neile eraldatud aadressid teises faasis teisendatakse koostuskood kahendkoodiks.
  4. Kompilaatori genereeritud koostuskood on a mnemooniline versioon masinkoodi. Monteerija genereeritud ümberpaigutatav masinkood on aga a binaarne ümberpaigutatav kood.

Järeldus:

Monteerijat ei pruugita nõuda, kuna mõned kompilaatorid genereerivad otse käivitatava koodi. Kui kasutatakse komplekteerijat, on vaja linker kõigi sisseehitatud teekide linkimiseks lähtekoodis kasutatavate teegi funktsioonidega.