Komepiuta, Polokalame
Faasalalau - o le ... Ituaiga o compilers. Liliu ma polokalame faasalalauga
Polokalama, e faapea foi i tagata e faaliliu mai se tasi gagana i se isi e manaomia se faamatalaupu pe faaliliu.
talitonuga faavae
O le polokalama o se faatusa gagana o le fuafuaga: i → P → P (i). O se faamatalaupu o se polokalama lea o loo tuuina atu i le sao o le polokalama P ma nisi sao x. E faia i P x: Ou (P, x) = P (x). O le mea moni o loo i ai na o le tasi faaliliu e mafai ona faatinoina uma polokalame mafai (lea e mafai ona faatusa i le faiga aloaia) o se maoae ma le taua Turing maua.
O le processor o se faamatala upu o polokalame i le gagana masini. Masani taugata tele e tusi faamatala upu mo gagana maualuluga, ina ia latou faaliliuina i se faiga lea e faigofie ona faamatalaina.
O nisi ituaiga o faaliliu ai igoa uiga ese:
- O le assembler faaliliuina polokalame gagana faapotopotoga i gagana masini.
- O le tuufaatasia faaliliuina se gagana maualuga tulaga i se gagana maualalo.
Faasalalau - o se polokalama o le e pei o faamatalaga sao o le polokalama i nisi gagana S ma fua polokalame T i se auala o le a latou maua le semantics lava uma e lua: P → X → Q. O, ∀x. P (x) = Q (x).
Afai faasalalauina le polokalama atoa i se mea interpretable, o taʻua o le tuufaatasiga i luma o le faatinoga, po o le tuufaatasiga AOT. e mafai ona faaaoga na tuufaatasia AOT i le faasologa, o le gata o lea e masani lava ona le assembler, mo se faataitaiga:
O le tuufaatasia o tulafono laiti puna → (faaliliu) → → assembler code faapotopotoga (tuufaatasia) → → code masini CPU (faamatalaupu).
Galuega faatino po o le malosi o le tuufaatasiga e tupu pe afai e faasalalauina le polokalama, pe a faatinoina e isi muamua tuufaatasia vaega. JIT-compilers manatua mea ua uma ona latou faia ina ia aua nei toe ma toe toe fai le code puna. E mafai ona latou e oo lava i maua tuufaatasiga adaptive ma recompilation e faavae i luga o le amioga o le siosiomaga faatinoga polokalama.
Le tele o gagana faatagaina e faaoo code i tuufaatasia taimi ma tuufaatasia le code fou i runtime.
faaliliuga tulaga
e aofia ai faasalalauga i laasaga o le iloiloina ma synthesizing:
O le analyzer code puna → → → afi faatusa conceptual (synthesizer) → code Taunuuga.
ua mafua ona o nei mafuaaga lenei:
- e le o talafeagai So o se isi auala. faaliliuga upu na e le o galulue.
- fofo inisinia lelei: afai e te manao e tusi faaliliu mo M ma N manaomia tusi tapulaa fuafuaina gagana puna na M + N polokalame faigofie (polukompilyatorov) nai lo M × N lavelave (atoa o faaliliu).
Ae peitai, i le faatinoga, o se vaaiga conceptual o le a lava e seasea faailoa ai lava ma mamana lava e ufiufi puna ona manatu uma ma gagana taulaʻiga. A o mafai e nisi e latalata i lenei.
compilers moni oo i le tele o vaega. Ina ua fausiaina o lau lava na tuufaatasia e le tatau ona toe faia le galuega faigata uma e tagata faia e foafoa ai faamatalaga ma le eletise. E mafai ona e faaliliu lau gagana tuusao i JavaScript po o le C ma faaaoga o lo oi ai nei JavaScript-afi ma le C tuufaatasia e faia le malologa. E mafai foi ona faaaoga e le oi ai nei sui feoloolo ma masini tafailagi.
faaliliu faamaumauga
Faasalalau - o se polokalama po o masini, lea na aofia ai gagana e tolu: o le puna, o le taunuuga ma le faavae. e mafai ona tusia i latou i se T-foliga, le tuuina o le itu tauagavale uluai, saʻo ma faavae taulaʻiga lalo.
E tolu ituaiga o compilers:
- Faasalalau - o samokompilyator pe afai e tutusa ma le gagana puna faavae.
- o le tuufaatasia lea patino mai gagana le fogaeleele, e taua o samorezidentnym.
- Faasalalau - o se satauro-tuufaatasia, pe afai e ia i tapulaa fuafuaina ma gagana eseese faavae.
Aisea e taua ai lenei mea?
E tusa lava pe e te le faia se tuufaatasia moni, o se malamalama lelei o le tekinolosi o lona foafoaga, aua o le manatu faaaoga mo lenei faamoemoe o loo faaaogaina faalauaitele, mo se faataitaiga:
- mau formatting;
- gagana faafesili e utufaamatalaga faaeletonika;
- tusiata fale komepiuta alualu i luma;
- faafitauli generalized optimization;
- GUIs;
- gagana scripting;
- e pulea;
- masini tafailagi;
- faaliliuga masini.
I le gata i lea, afai e te manao e tusi preprocessors, linkers, loaders, debuggers ma profilers, e tatau ona e alu e ala i laasaga lava e tasi pei o le taimi e tusi a tuufaatasia.
mafai foi ona e aoao i le ala e tusi polokalame lelei, talu mai le foafoaga o le faaliliu upu mo le gagana o lona uiga o se malamalamaaga sili atu o lona intricacies ma ambiguities. O le suesueina o mataupu faavae lautele o faasalalauga foi faatagaina oe e avea ma se gagana lelei mamanuina. Lea le afaina pe tifato le gagana pe afai e le mafai ona faatinoina lelei?
tekinolosi atoatoa
tuufaatasia o tekinolosi e aofia ai le tele o vaega eseese o le saienisi komepiuta:
- teori aloaia o le gagana: kalama, parsing, computability;
- tusiata fale komepiuta:. seti faatonuga, RISC po CISC, pipelined gaosi taamilosaga uati autu, ma isi;
- manatu o gagana polokalame, mo se faataitaiga, faatinoina o se pulea faasologa, faatinoga tuutuuga, iteration, recursion, decomposition faaaogaina i, modularity, synchronization, meta-polokalame, aotelega, faifai pea laiti ituaiga, faataitaiga, ituaiga galuega faatino, prototypes, faamatalaga o, tafe, monads, totonu o pusa meli, ia faaauau , wildcards, faaupuga masani, manatua transactional, tofi, polymorphism, tulaga faiga, ma isi i luga o isi..;
- gagana faamatalaga otooto ma masini tafailagi;
- algorithms ma faamatalaga fausaga: faaupuga masani, parsing algorithms, ata mananaia algorithms, polokalame maoae, aoaoga;
- polokalame gagana: syntax, semantics (static ma maoae), paradigms lagolago (fausaga, OOP, e faaaogaina i, talafeagai, e faaputu ai, paralela, meta-polokalame);
- polokalama foafoaga (compilers, e masani lava ona tele ma le lavelave): localization, caching, componentize, API-interfaces, toe faaaogaina, synchronization.
tuufaatasia mamanu
O nisi o faafitauli e fetaiai i le atinae o le faaliliu upu moni:
- Faafitauli i le gagana puna. E faigofie ona tuufaatasia ai? E i ai se preprocessor? E faapefea ona le ituaiga? E i ai se faletusi?
- Faapotopotoina oi tuufaatasia pasia: nofofua pe eseese ala?
- manao i le tulaga o le optimization. polokalame faasalalauga Anapogi ma eleelea faatasi ma le itiiti po o le leai optimization mafai ona e masani ai. a faatelegese tuufaatasia optimization-i luga, ae code lelei i runtime mafai ona aoga.
- O le tulaga manaomia o le mauaina le mea sese. E mafai ona a faaliliu upu na o le taofia i le sese muamua? Pe e tatau ona taofia? Pe e faalagolago i le faasaʻoga sese tuufaatasia?
- Le i ai o meafaigaluega. Afai e le o laiti lava le gagana muamua, o le analyzers scanner ma afi e manaomia. E eletise foi, code faaleoleo, ae e le faapea e tutusa i latou.
- Ituaiga o code sini ina ia faatupulaia. Ona filifilia mai code masini mama faaopoopoina po o tafailagi. Pe na o tusi o se vaega ulufale lea ua faia ai se faatusa vailauga lauiloa e pei o LLVM, RTL, po JVM. Po o le faia o se faaliliuga o le uluai kopi i le code puna i C po o JavaScript.
- Le faatulagaga o le code taulaʻiga. E mafai ona e filifili se gagana faapotopotoga, a code masini feaveai, masini code faatusa manatua.
- Retargeting. Ina ua le seti o eletise e lelei le i ai o se vaega vaifagaloa masani. Mo lenei mafuaaga e sili ona lelei le i ai o afi o le tasi i le sao o le tele o vaega.
tuufaatasia le tusiata fale: vaega
O nei o le vaega e faaaogaina i autu o le a tuufaatasia e faatupuina code moni (pe afai o le polokalama o le galuega faatino o se polokalama i C po o se masini tafailagi, e manaomia le tele o laasaga):
- O le polokalama o sao (tafe faailoga) ua fafagaina i le scanner (analyzer lexical), lea e liua ai i se vaitafe o faailoga.
- Parser (parser) fausiaina o se tasi laau syntax faamatalaga otooto.
- analyzer Semantic decomposes le faamatalaga semantic ma siaki le nodes laau mo mea sese. O se taunuuga, na fausia kalafi semantic - laau syntax faamatalaga otooto i meatotino faaopoopo ma le sootaga faavaeina.
- afi code vailauga fausia ai se kalafi tafe (tuples ua vaevaeina i ni poloka autu).
- Masini-tutoatasi code optimizer e faatautaia uma i le lotoifale (i totonu o le iunite faavae) ma le lalolagi (e poloka uma) optimization aupito totoe i totonu o faiga masani. Faaitiitia code lē tatau ma simplifies le fuafuaga. Le taunuuga o se kalafi tafe fesuiai.
- Afi noatia code taulaʻiga poloka faavae i se code rectilinear pulea auina atu, faia o se assembler faila mea tusi resitala tafailagi (atonu aoga).
- Masini-faalagolago optimizer, linker allocates manatua le va o tusi resitala ma faia au fuafuaga. E faatinoina le liua polokalame i le gagana faapotopotoga i lenei faapotopotoga ma a faaaogaina lelei o pipelining.
I le faaopoopo atu, o le faaaogaina o le pule subsystem mauaina sese ma laulau faailoga.
auiliiliga Lexical (faitauina o)
O le scanner liliu le tagata puna tafe i se vaitafe o faailoga, aveesea whitespace, faamatalaga ma faalauteleina macros.
e masani ona fetaiai Scanners faafitauli, e pei o le pe ina ia amanaia ai le tulaga, autafa, laina malologa ma faamatalaga ua tamau.
Mea sese e ono tulai mai i le taimi o le faitauina, na valaau lexical ma e aofia ai:
- tagata e le i le alafapeta;
- sili atu o le numera o tagata i se upu po o se laina;
- le a tapunia faailoga po o se manoa moni;
- faaiuga o le faila i le faamatalaga.
Parsing (parsing)
O le parser liliu le faasologa o faailoga i se laau syntax faamatalaga otooto. ua teuina taitasi node i le laau o le avea o se mea i le fanua e igoa, o le toatele oi latou lava le nodes laau. I lenei tulaga e leai ni taamilosaga. Afai e te faia e tatau ai a parser e gauai atu i le tulaga o le lavelave o le kalama (LL po LR) ma iloa ai pe oi ai so o se tulafono disambiguation. O nisi o gagana e manaomia auiliiliga semantic.
Mea sese o loo i lenei tulaga ua valaauina syntax. Mo se faataitaiga:
- k = 5 * (7 - y;
- j = / 5;
- 56 = x * 4.
auiliiliga semantic
I le taimi o le iloiloga semantic e siaki le permissibility o tulafono ma galulue faatasi ma vaega o le parse laau (faatagaina faasinomaga igoa faaofiina faagaoioiga mo liua atoatoa ituaiga, ma isi. D.) Mo fausia le kalafi semantic.
E manino lava, o le seti o le taliaina o tulafono i gagana eseese eseese. Afai e tuufaatasia le gagana e pei o Java, e mafai ona maua compilers:
- tautinoga ma liuliuina tele i totonu o lona tulaga;
- se faasinomaga i se ma liuliuina ao lei tautinoga;
- mau faasino i le igoa o le undeclared;
- solia o aia tatau pateni;
- numera tele po o le le lava o le finauga i se valaau auala;
- mismatch ituaiga.
tupulaga
tupulaga code vailauga maua kalafi tafe aofia tuples, vaevaeina i ni poloka faavae.
tupulaga code tuuina atu e se code masini moni. I compilers masani mo le RISC-masini i luga o le laasaga muamua, o le ae faatupuina ai se assembler ma se iu numera o tusi resitala tafailagi. Ona o le a le tupu atonu-masini CISC.
Similar articles
Trending Now