Különbség a fordító és az összeszerelő között

Szerző: Laura McKinney
A Teremtés Dátuma: 1 Április 2021
Frissítés Dátuma: 7 Lehet 2024
Anonim
Különbség a fordító és az összeszerelő között - Technológia
Különbség a fordító és az összeszerelő között - Technológia

Tartalom


A fordító és az összeszerelő fontos szerepet játszik egy program végrehajtásában. Néhány fordító közvetlenül a végrehajtható kódot generálja az összeszerelési kód helyett. A fordító veszi az előfeldolgozott forráskódot, és lefordítja azt a szerelési kódra. Az összeszerelő az összeállítási kódot átveszi a fordítóról, és lefordítja azt az áthelyezhető gépi kódra. Ebben a cikkben az alább bemutatott összehasonlító táblázat segítségével tárgyaltam a fordító és az összeszerelő közötti különbségeket, csak vessünk egy pillantást.

  1. Összehasonlító táblázat
  2. Meghatározás
  3. Főbb különbségek
  4. Következtetés

Összehasonlító táblázat

Az összehasonlítás alapjaFordítóprogram Szerelő
AlapvetőGenerálja az összeszerelési nyelv kódját vagy közvetlenül a végrehajtható kódot.Generálja az áthelyezhető gépi kódot.
BemenetElőfeldolgozott forráskód.Az összeszerelés nyelvi kódja.
Fázisok / áthaladásokAz összeállítási fázisok lexikai elemző, szintaxis elemző, szemantikai analizátor, közbenső kód generálás, kód optimalizálás, kód generálás.Az összeszerelő két átadást hajt végre az adott bemenet felett.
kibocsátásA fordító által generált szerelési kód a gépi kód mnemonikus változata.Az összeszerelő által generált áthelyezhető gépi kódot bináris kód képviseli.


A fordító meghatározása

Az fordítóprogram egy számítógépes program, amely elolvassa a forrásnyelven írt programot, és ezzel egyenértékűvé fordítja Assembly nyelv és továbbítja az összeszerelési nyelv kódját a Szerelő. Míg a forráskód fordítása a mondatkódra, a fordító a hiba a felhasználó számára a forráskódban.

A fordítókat szintén egyszeri, többutas, betöltési és indulási, hibakeresési és optimalizálási lehetőségek. A besorolást annak alapján végezzük, hogy milyen funkciót hajt végre a fordító és hogyan építettük fel. Ezen összetettségek ellenére a fordító alapfeladata változatlan.


Az összeállítás két részből áll, elemzési rész és szintézis rész. Az elemzési rész a forráskódot részekre bontja, és a forráskód köztes ábrázolását képezi. Az szintézis rész a közbenső ábrázolásból képezi a célkódot.

Az összeállítást a következő szakaszokban hajtjuk végre:

Lexical analizátor, szintaxis elemző, szemantikai analizátor, közbenső kódgenerátor, kódoptimalizáló, kódgenerátor, szimbólumtábla és hibakezelő.

  • Az lexical analizátor beolvassa a forráskód karaktereit és csoportosítja azokat a zsetonfolyamok. Mindegyik jogkivonat a karakterek logikai sorozatát képviseli, például kulcsszó, azonosítók, operátorok. A karakter sorozatot, amely egy tokent képez, nevezzük lexéma.
  • Az szintaxis-elemző elemzi a lexikai elemző készülékből nyert tokent, és a tokeneket egy a hierarchikus struktúra.
  • Az szemantikai analizátor ellenőrzi a forráskódot szemantikai hiba.
  • Köztes kódgenerátor generálja a közbenső reprezentáció a forráskód
  • Az kódoptimalizáló optimalizálja a közbenső kódot a gyorsabban futó gépkódra.
  • Az kódgenerátor végül generálja a célkódot, amely a áthelyezhető gépkód vagy szerelési kód.
  • Az szimbólum tábla egy olyan adatszerkezet, amely a forráskódban szereplő minden azonosító rekordját tartalmazza.
  • Hibakezelő felismeri a hibát az egyes fázisokban, és kezeli azokat.

Az összeszerelő meghatározása

Néhány fordító elvégzi az összeszerelő feladatát, és közvetlenül létrehoz egy áthelyezhető gépi kódot az összeszerelési kód helyett, amelyet tovább továbbít a linker / betöltőhöz. Az szerelő inputként veszi a fordító által generált összeszerelési kódot, és lefordítja azt áthelyezhető gépkód.

Nézzük meg, hogy a gépkód különbözik az összeszerelési kódtól. Szerelési kód az a emlékezeterősítő gépi kód verziója. Ez azt jelenti, hogy az összeszerelési kód neveket használ a műveletek ábrázolására, és még neveket ad a memória címeknek. Másrészt a gépi kód felhasználások bináris kódok a műveletek és a memóriacímek ábrázolására.

Még az összeszerelő legegyszerűbb formája is teljesít két lépés a bemenet felett. Az első lépés felismeri az összes azonosítók a tárolási helyet jelölő összeszerelési kódban, és tárolja őket a szimbólum tábla (a fordító szimbólumtáblázat kivételével). Az a tárolási hely hozzá van rendelve az első lépésben előforduló azonosítóhoz.

Ban,-ben második lépés, a bemenetet újra beolvassa és ezúttal a működési kód vannak lefordított ba be bitek sorrendje képviseli ezt a műveletet a gépi kódban. A második lépés szintén fordítja azonosítók ba,-be címek a szimbólumtáblázatban meghatározva. Így a második lépés generálja a áthelyezhető gépkód.

  1. A legfontosabb különbség a fordító és az összeszerelő között az, hogy a fordítóprogram összeállítási kódot generál, és néhány fordító közvetlenül végrehajtható kódot is generálhat, míg a szerelő generál egy áthelyezhető gépi kódot.
  2. A fordító veszi be a előfeldolgozott kód előfeldolgozó által generált. Másrészt az összeszerelő vesz szerelési kód bemenetként.
  3. Az összeállítás két szakaszban zajlik elemzési szakasz és szintézis fázis. Az elemzési szakaszban a bemenet megy keresztül lexikai elemző, szintaxis elemző, szemantikai analizátor míg a szintézis elemzése a következő módon történik: közbenső kódgenerátor, kódoptimalizáló, kódgenerátor. Másrészt az összeszerelő átadja a bemenetet két fázis. Az első fázis felismeri az azonosítókat és a hozzájuk rendelt címeket, a második fázisban az összeszerelési kódot bináris kódra fordítják.
  4. A fordító által generált szerelési kód a mnemonic változat gépi kód. Az összeszerelő által generált áthelyezhető gépi kód azonban a binárisan áthelyezhető kód.

Következtetés:

Lehet, hogy nem szükséges az összeszerelő, mivel egyes fordítók közvetlenül generálnak végrehajtható kódot. Az összeszerelő használatához linkerre van szükség, hogy az összes beépített könyvtárat összekapcsolja a forráskódban használt könyvtári funkciókkal.