Mi az a fordítóterv? Típusok, Építőeszközök, Példa
Mi az a fordító?
A fordító egy számítógépes program, amely segít a magas szintű nyelven írt forráskód alacsony szintű gépi nyelvvé alakításában. Lefordítja az egyik programozási nyelven írt kódot egy másik nyelvre anélkül, hogy megváltoztatná a kód jelentését. A fordító a végkódot is hatékonysá teszi, amely a végrehajtási időre és a memóriaterületre van optimalizálva.
A fordítási folyamat magában foglalja az alapvető fordítási mechanizmusokat és a hibaészlelést. A fordítói folyamat lexikai, szintaktikai és szemantikai elemzésen megy keresztül az előtérben, valamint kódgeneráláson és optimalizáláson a háttérben.
A fordítók jellemzői
- helyessége
- Az összeállítás sebessége
- Őrizze meg a kód helyes jelentését
- A célkód sebessége
- A legális és illegális programkonstrukciók felismerése
- Jó hibajelentés/kezelés
- Segítség a kódhibakereséshez
A fordítóprogramok típusai
Az alábbiakban felsoroljuk a különböző típusú fordítóprogramokat:
- Egymenetes fordítók
- Két Pass fordító
- Multipass fordítók
Egymenetes fordító
Az egymenetes fordítói forráskód közvetlenül gépi kóddá alakul. Például Pascal nyelv.
Két lépéses fordító
A kétmenetes fordítóprogram két részre oszlik, ti.
- Előlap: A jogi kódot az Intermediate Representation-ba (IR) képezi le.
- Hátsó vég: Az IR-t leképezi a célgépre
A kétmenetes fordítómódszer az újracélzási folyamatot is leegyszerűsíti. Több előlapot is lehetővé tesz.
Multipass fordítók
A többlépéses fordító többször feldolgozza egy program forráskódját vagy szintaktikai fáját. Egy nagy programot több kis programra osztott, és feldolgozta azokat. Több köztes kódot fejleszt. Mindezek a többszörös átmenetek az előző fázis kimenetét veszik bemenetként. Így kevesebb memóriát igényel. „Wide Compiler” néven is ismert.
A fordító feladatai
A fordító által végzett főbb feladatok a következők:
- A forrásprogramot darabokra bontja, és nyelvtani szerkezetet ír rájuk
- Lehetővé teszi a kívánt célprogram összeállítását a közbenső ábrázolásból, valamint a szimbólumtábla létrehozását
- Lefordítja a forráskódot, és észleli a benne lévő hibákat
- Az összes változó és kód tárolásának kezelése.
- Külön összeállítás támogatása
- Olvassa el, elemezze a teljes programot, és fordítsa le szemantikailag egyenértékűre
- A forráskód lefordítása objektumkódba a gép típusától függően
A fordító története
A Compiler történetének fontos mérföldköve a következő:
- A „fordító” szót először az 1950-es évek elején Grace Murray Hopper használta.
- Az első fordítót John Backum és csoportja készítette 1954 és 1957 között. IBM.
- COBOL volt az első programozási nyelv amelyet 1960-ban több platformon is összeállítottak
- A szkennelési és elemzési problémák tanulmányozását az 1960-as és 1970-es években folytatták a teljes megoldás érdekében.
A nyelvfeldolgozó rendszerek lépései
Mielőtt megismerné a fordítók fogalmát, először is meg kell értenie néhány egyéb, a fordítókkal működő eszközt.
- Előfeldolgozó: Az előfeldolgozót a fordító részének tekintjük. Ez egy olyan eszköz, amely bemenetet állít elő a Compiler számára. Makrófeldolgozással, kiegészítéssel, nyelvkiterjesztéssel stb. foglalkozik.
- Tolmács: A tolmács olyan, mint a fordító, amely a magas szintű nyelvet alacsony szintű gépi nyelvre fordítja. A fő különbség a kettő között az, hogy az értelmező soronként olvassa és alakítja át a kódot. A fordító egyszerre olvassa be a teljes kódot, és létrehozza a gépi kódot.
- Assembler: Az assembly nyelvi kódot gépileg érthető nyelvre fordítja. Az assembler kimeneti eredménye egy objektumfájl, amely gépi utasítások, valamint ezen utasítások memóriában tárolásához szükséges adatok kombinációja.
- Linker: A linker segít különböző objektumfájlok összekapcsolásában és egyesítésében végrehajtható fájl létrehozásához. Lehetséges, hogy ezeket a fájlokat külön összeszerelőkkel fordították le. A linker fő feladata az, hogy egy programban megkeresse a hívott modulokat, és megkeresse azt a memóriahelyet, ahol az összes modul tárolva van.
- loader: A betöltő az operációs rendszer része, amely végrehajtja a futtatható fájlok memóriába való betöltését és futtatását. Kiszámolja a program méretét is, amely további memóriaterületet hoz létre.
- Keresztfordító: A fordítótervezésben a keresztfordító egy olyan platform, amely segít futtatható kód létrehozásában.
- Forrásról forrásra fordító: A forrásról forrásra fordító egy kifejezés, amelyet akkor használnak, ha egy programozási nyelv forráskódját egy másik nyelv forráskódjára fordítják.
Fordító építési eszközök
A fordítókészítő eszközöket a számítógéppel kapcsolatos technológiák világszerte elterjedésével vezették be. Fordító-fordítóként, fordító-generátorként vagy fordítóként is ismertek.
Ezek az eszközök meghatározott nyelvet vagy algoritmust használnak a fordító összetevőjének megadásához és megvalósításához. Az alábbiakban a fordító-építő eszközök példáját mutatjuk be.
- Szkenner generátorok: Ez az eszköz reguláris kifejezéseket használ bemenetként. Például LEX Unixhoz Operating rendszer.
- Szintaxis-vezérelt fordítómotorok: Ezek szoftverek felajánl egy köztes kódot az elemző fa használatával. Célja, hogy egy vagy több fordítást társítson az elemzési fa minden csomópontjához.
- Elemző generátorok: Az elemző generátor egy nyelvtant használ bemenetként, és automatikusan generál forráskódot, amely egy nyelvtan segítségével képes elemezni a karakterfolyamokat.
- Automatikus kódgenerátorok: Köztes kódot vesz és gépi nyelvvé alakítja át.
- Adatfolyam-motorok: Ez az eszköz hasznos a kódoptimalizáláshoz. Itt a felhasználó szolgáltatja az információkat, és a közbülső kódot összehasonlítja bármilyen kapcsolat elemzéséhez. Adatfolyam-elemzésnek is nevezik. Segít megtudni, hogyan kerülnek át az értékek a program egyik részéből a másikba.
Miért érdemes fordítóprogramot használni?
- A fordító a teljes programot ellenőrzi, így nincsenek szintaktikai vagy szemantikai hibák.
- A végrehajtható fájlt a fordító optimalizálja, így gyorsabban fut.
- Lehetővé teszi belső struktúra létrehozását a memóriában.
- Nem szükséges ugyanazon a gépen futtatni a programot, amelyen az készült.
- A teljes program fordítása más nyelvre.
- Fájlokat generál a lemezen.
- Kapcsolja össze a fájlokat futtatható formátumba.
- Ellenőrizze a szintaktikai hibákat és az adattípusokat.
- Segít javítani a nyelvi szemantika megértését.
- Segít a nyelvi teljesítménnyel kapcsolatos problémák kezelésében.
- Lehetőség egy nem triviális programozási projektre.
- A fordító felépítéséhez használt technikák más célokra is hasznosak lehetnek.
Fordítóprogramok alkalmazása
- A fordítótervezés segíti a magas szintű programozási nyelvek teljes megvalósítását.
- Támogatja a számítógép optimalizálását Architecture Párhuzamosság.
- Gépek új memóriahierarchiájának tervezése.
- Széles körben használják programok fordítására.
- Más szoftvertermelékenységi eszközökkel együtt használva.
Összegzésként
- A fordító egy számítógépes program, amely segít a magas szintű nyelven írt forráskód alacsony szintű gépi nyelvvé alakításában.
- A fordítóprogram tervezésének néhány fontos jellemzője a helyesség, a fordítás gyorsasága, a kód helyes jelentésének megőrzése.
- A fordítók három részre oszthatók: 1) Egymenetes fordítók, 2) Kétlépéses fordítók és 3) Többlépéses fordítók.
- A „fordító” szót először Grace Murray Hopper használta az 1950-es évek elején.
- A nyelvfeldolgozó rendszer lépései a következők: előfeldolgozó, tolmács, összeállító, linker/betöltő.
- Fontos fordítókészítő eszközök: 1) szkenner generátorok, 2) szintaxis-3) irányított fordítómotorok, 4) elemző generátorok, 5) automatikus kódgenerátorok.
- A fordító fő feladata a teljes program ellenőrzése, így nincs szintaktikai vagy szemantikai hiba.