KomepiutaPolokalame

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

 

 

 

 

Newest

Copyright © 2018 sm.delachieve.com. Theme powered by WordPress.