Különbség a fordító és az összeszerelő között
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.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Következtetés
Összehasonlító táblázat
Az összehasonlítás alapja | Fordí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. |
Bemenet | Előfeldolgozott forráskód. | Az összeszerelés nyelvi kódja. |
Fázisok / áthaladások | Az ö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ás | A 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.
- 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.
- 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.
- 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.
- 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.