Megjegyzések
- Túl tág, legalábbis a " Hogyan működik " rész. Egész könyvek íródtak erről a témáról.
- hu.wikipedia.org/wiki/Compiler a Wikipedia linkje lenne triviális találd meg, konkrétan mire kíváncsi? A kérdés elég tág ahhoz, hogy ' megkísértem, hogy megadjam az intelligens alec választ, " A fordítók lefordítják a kódokat egyik nyelvről a másikra , ", mivel ez az az általános gondolat, amelynek sok árnyalata van ezen belül, ha egyszer elkezdi vizsgálni, mit is jelent ez valójában.
- Igen és azt hiszem elég jól megválaszolták.
- A fordító működésének bármilyen magyarázata túl tág vagy túl bonyolult lesz. ' bonyolult tantárgy, és a fordítói osztályok voltak a legnehezebb számítógéppel kapcsolatos tanfolyamok, amelyeket valaha vettem.
- @David A fordítók természetesen bonyolultak, és nem lehet magyarázza el itt a működésük minden részletét. Abban azonban biztos vagyok, hogy a fordítói tanfolyam elvégzése előtt alaposan megértette, mi is az a fordító, vagy hogyan működik.
Válasz
A fordító egy olyan program, amely egy másik program forráskódját lefordítja egy programozási nyelvből futtatható kódra.
A forráskód általában magas szintű programozási nyelven található. (pl. Pascal, C, C ++, Java, Perl, C # stb.). A futtatható kód lehet olyan gépi utasítások sorozata, amelyet a CPU közvetlenül végrehajthat, vagy lehet köztes reprezentáció, amelyet egy virtuális gép értelmez (pl. Java bájtkód).
Röviden, egy fordító átalakítja a programot egy ember által olvasható formátumból géppel olvasható formátumba.
A fordító működését illetően ez valóban bonyolult. Vannak könyvek és egyetemi tanfolyamok a témáról. Megpróbálom röviden felvázolni a folyamat főbb szakaszait, de ez egy nagyon áttekintő áttekintés lesz.
- Lexing – bontsa a program szövegét “tokenekre”. A tokenek a programozási nyelv “szavai”, például azonosítók (kulcsszavak, változónevek, függvénynevek stb.) Vagy operátorok (=, *, & stb.) .
- Feldolgozás – a tokenek sorozatának átalakítása elemző fává, amely egy adatstruktúra, amely különféle nyelvi konstrukciókat képvisel: típusdeklarációk, változódeklarációk, függvénydefiníciók, ciklusok, feltételek, kifejezések stb.
- Optimalizálás – értékelje az állandó kifejezéseket, optimalizálja a fel nem használt változókat vagy az elérhetetlen kódot, ha lehetséges, bontsa ki a ciklusokat stb.
- Fordítsa le az elemző fát gépi utasításokra (vagy JVM bájtkódra).
Ismét hangsúlyozom, hogy ez egy nagyon rövid leírás. A modern fordítók nagyon okosak, következésképpen nagyon bonyolultak.
A fordító olyan számítógépes program (vagy utasításkészlet), amely egy programozási nyelven (a forrásnyelven) írt forráskódot átalakít egy másik számítógépes nyelvre (a célnyelv, gyakran bináris formában, objektumkódként ismert). A forráskód átalakításának leggyakoribb oka egy futtatható program létrehozása.
A fordítók magas szintű nyelveken kapcsolják össze a forrásprogramokat az alapul szolgáló hardverrel. A fordítónak a következőkre van szüksége: