Ero kääntäjän ja kokoonpanijan välillä

Kirjoittaja: Laura McKinney
Luomispäivä: 1 Huhtikuu 2021
Päivityspäivä: 12 Saattaa 2024
Anonim
Ero kääntäjän ja kokoonpanijan välillä - Tekniikka
Ero kääntäjän ja kokoonpanijan välillä - Tekniikka

Sisältö


Kääntäjällä ja kokoonpanijalla on tärkeä rooli ohjelman toteuttamisessa. Jotkut kääntäjät tuottavat suoraan suoritettavan koodin kokoonpanokoodin sijasta. Kääntäjä ottaa esikäsitellyn lähdekoodin ja kääntää sen kokoonpanokoodiksi. Kokoonpanija ottaa kokoonpanokoodin kääntäjältä ja kääntää sen siirrettävään konekoodiin. Tässä artikkelissa olen keskustellut kääntäjän ja asentajan eroista alla olevan vertailutaulun avulla, katso vain.

  1. Vertailutaulukko
  2. Määritelmä
  3. Keskeiset erot
  4. johtopäätös

Vertailutaulukko

Vertailun perusteetkääntäjä Assembler
perustiedotLuo kokoonpanokielen koodin tai suoraan suoritettavan koodin.Luo siirrettävän konekoodin.
panosEsikäsitelty lähdekoodi.Kokoonpanon kielikoodi.
Vaiheet / läpäisytKokoonpanovaiheet ovat leksinen analysaattori, syntaksianalysaattori, semanttinen analysaattori, välikoodien luonti, koodin optimointi, koodin luonti.Kokoonpanija suorittaa kaksi siirtoa annetun syötteen yli.
ulostuloKääntäjän luoma kokoonpanokoodi on konekoodin muotoninen versio.Kokoonpanijan tuottamaa uudelleen sijoitettavaa konekoodia edustaa binaarikoodi.


Määritelmä Kääntäjä

kääntäjä on tietokoneohjelma, joka lukee lähdekielellä kirjoitetun ohjelman, kääntää sen vastaavaksi kokoonpanokieli ja välittää kokoonpanon kielikoodin Assembler. Lähdekoodin käännöksen kokoonpanokoodiksi kääntäjä raportoi myös virhe lähdekoodissa sen käyttäjälle.

Kääntäjät luokitellaan myös yksi-, moni-, siirto-, lataus- ja virheenkorjaus, virheenkorjaus ja optimointi. Luokittelu tehdään sen perusteella, minkä toiminnon kääntäjä suorittaa ja kuinka se on rakennettu. Näistä monimutkaisuuksista huolimatta kääntäjän perustehtävä pysyy samana.

Kokoonpano suoritetaan kahdessa osassa, analyysiosa ja synteesiosa. analyysiosa hajottaa lähdekoodin osatekijöiksi ja muodostaa välikoodiesityksen lähdekoodista. synteesiosa muodostaa kohdekoodin välitaajuudesta.


Kokoonpano suoritetaan seuraavissa vaiheissa:

Leksinen analysaattori, syntaksianalysaattori, semanttinen analysaattori, välikoodigeneraattori, koodin optimoija, koodigeneraattori, symbolitaulukko ja virheiden käsittelijä.

  • lexical analysaattori lukee lähdekoodin merkit ja ryhmittelee ne rahakkeita. Jokainen merkki edustaa loogista merkkijonoa kuten avainsana, tunnisteet, operaattorit. Merkkijono, joka muodostaa merkin, kutsutaan lekseemi.
  • syntaksianalysaattori jäsentää leksikaalisesta analysaattorista saadun merkinnän ja ryhmittelee merkit a: ksi hierarkinen rakenne.
  • semanttinen analysaattori tarkistaa lähdekoodin mahdollisen semanttinen virhe.
  • Välikoodigeneraattori luo väliedustus lähdekoodista
  • koodin optimoija optimoi välikoodin nopeammin käynnissä olevaksi konekoodiksi.
  • koodigeneraattori luo lopulta kohdekoodin, joka on siirrettävä konekoodi tai kokoonpanokoodi.
  • symbolitaulukko on tietorakenne, joka sisältää tietueen jokaiselle lähdekoodin tunnisteelle.
  • Virheiden käsittelijä havaitsee virheen kussakin vaiheessa ja käsittelee virheet.

Määritelmä Assembler

Jotkut kääntäjät suorittavat asentajan tehtävän ja generoivat suoraan uudelleen sijoitettavan konekoodin kokoonpanokoodin sijasta, joka välitetään edelleen suoraan linkkerille / lastaajalle. kokoaja ottaa syötteenä kääntäjän luoman kokoonpanokoodin ja kääntää sen siirrettävä konekoodi.

Katsotaanpa kuinka konekoodi eroaa kokoonpanokoodista. Kokoonpanokoodi on muistintuki konekoodin versio. Se tarkoittaa, että kokoonpanokoodi käyttää nimiä toimintojen esittämiseen ja se antaa jopa nimiä muistiosoitteille. Toisaalta konekoodi käyttötarkoitukset binaarikoodit toimintojen ja muistiosoitteiden esittämistä varten.

Jopa yksinkertaisin kokoonpanijamuoto esiintyy kaksi kulkua tulon yli. ensimmäinen läpäisy havaitsee kaikki tunnisteet kokoonpanokoodissa, joka merkitsee tallennuspaikkaa ja tallenna ne symbolitaulukko (muut kuin kääntäjien symbolitaulukko). tallennuspaikka on määritetty ensimmäisessä läpikäynnissä havaittuun tunnisteeseen.

vuonna toinen läpäisy, tulo skannataan uudelleen, ja tällä kertaa toimintakoodi olemme käännetty osaksi a bittisekvenssi edustavat kyseistä operaatiota konekoodissa. Toinen läpäisy myös tunnisteet osaksi osoitteet määritelty symbolitaulukossa. Siten toinen läpäisy generoi siirrettävä konekoodi.

  1. Tärkein ero kääntäjän ja asentajan välillä on, että kääntäjä generoi kokoonpanokoodin, ja jotkut kääntäjät voivat myös suoraan generoida suoritettavan koodin, kun taas kokoaja tuottaa siirrettävän konekoodin.
  2. Kääntäjä ottaa syötteeksi esikäsitelty koodi esiprosessorin luoma. Toisaalta kokoonpanija vie kokoonpanokoodi syötteenä.
  3. Kokoonpano tapahtuu kahdessa vaiheessa analyysivaihe ja synteesivaihe. Analyysivaiheessa syöte menee läpi leksikaalinen analysaattori, syntaksianalysaattori, semanttinen analysaattori kun taas synteesianalyysi tapahtuu välikoodigeneraattori, koodin optimoija, koodigeneraattori. Toisaalta asentaja kuljettaa tulon läpi kaksi vaihetta. Ensimmäinen vaihe tunnistaa tunnisteet ja niille osoitetut osoitteet toisessa vaiheessa kokoonpanokoodi käännetään binaarikoodiksi.
  4. Kääntäjän luoma kokoonpanokoodi on a muistomerkki konekoodia. Kokoonpanijan generoima siirrettävä konekoodi on kuitenkin a binaarinen siirrettävä koodi.

johtopäätös:

Kokoonpanijaa ei ehkä vaadita, koska jotkut kääntäjät tuottavat suoraan suoritettavan koodin. Jos käytetään asentajaa, se vaatii linkittäjän linkittämään kaikki sisäänrakennetut kirjastot lähdekoodissa käytettyihin kirjasto-toimintoihin.