ComputersProgramming

Broadcaster - yog ... Hom compilers. Hloov thiab tshaj tawm hauv xov cov kev pab cuam

Programs, raws li zoo li cov neeg txhais lus los ntawm ib tug lus mus rau lwm lub xav tau ib tug neeg txhais lus los yog txhais lus.

tswv yim

Qhov kev pab cuam yog ib tug kwm sawv cev ntawm suav: kuv → P → P (i). Ib tug neeg txhais lus yog ib qhov kev pab cuam uas yog txhab khoom mus rau lub tswv yim kev pab cuam P thiab ib co tswv yim x. Nws ua rau ntawm P x: Kuv (P, x) = P (x). Lub fact tias muaj no tsuas muaj ib tus neeg txhais lus yog peev xwm ntawm kev ua tau tag nrho cov tau cov kev pab cuam (uas yuav tsum tau sawv cev nyob rau hauv lub formal system) yog ib tug heev no: thiab tseem ceeb foundations Turing.

Lub processor yog ib tug neeg txhais lus ntawm cov kev pab cuam nyob rau hauv lub tshuab hom lus. Feem ntau kim heev rau sau cov neeg txhais lus rau high-qib lus, ces lawv txhais mus rau hauv ib daim ntawv uas yog yooj yim los txhais lus.

Qee yam ntawm txhais muaj coj txawv txawv heev npe:

  • Lub assembler translates ua ke lus cov kev pab cuam mus rau hauv lub tshuab hom lus.
  • Lub compiler translates ib tug high-theem cov lus mus rau ib tug txo lus.

Broadcaster - yog ib qho kev pab uas yuav siv sij hawm li cov tswv yim ntaub ntawv qhov kev pab cuam nyob rau hauv ib co lus S thiab ua T kev pab cuam nyob rau hauv xws li ib tug txoj kev uas nkawd ob leeg muaj tib lub semantics: P → X → Q. Yog li ntawd, ∀x. P (x) = Q (x).

Yog hais tias tshaj tawm hauv xov rau tag nrho cov kev pab cuam mus rau hauv ib yam dab tsi interpretable, nws yog hu ua ib tug muab tso ua ke ua ntej tiav, los yog AOT muab tso ua ke. AOT compiler yuav siv tau nyob rau hauv series, lub tom kawg uas yog feem ntau assembler, piv txwv li:

Lub qhov code compiler → (txhais lus) → → los ua ke code assembler (compiler) → → CPU tshuab code (txhais lus).

Ua hauj lwm los yog dynamic muab tso ua ke tshwm sim yog tias qhov kev pab cuam yog tshaj tawm hauv xov, thaum tua los ntawm lwm yam yav tas los tso ua ke ib feem. JIT-compilers nco ntsoov dab tsi lawv twb ua li ntawd raws li tsis mus rov hais dua cov qhov code dua thiab dua. Lawv muaj peev xwm txawm tsim adaptive muab tso ua ke thiab recompilation raws li tus cwj pwm ntawm qhov kev pab cuam tiav ib puag ncig.

Muaj ntau hom lus pub rau txim tuag code ntawm compile lub sij hawm thiab sau cov tshiab code ntawm runtime.

translation theem

Tshaj tawm hauv xov muaj cov kauj ruam ntawm cais thiab synthesizing:

Lub qhov code analyzer → → → conceptual sawv cev generator (synthesizer) → Target code.

Qhov no yog vim cov yog vim li cas:

  • Muaj lwm yam qauv no yog tsis haum. Lo lus translation tsuas tsis ua hauj lwm.
  • Zoo kev daws teebmeem engineering: Yog hais tias koj xav mus sau txhais rau M thiab N qhov lus tsom xav sau xwb M + N yooj yim cov kev pab cuam (polukompilyatorov) es M × N complex (tag nrho cov ntawm txhais).

Txawm li cas los, nyob rau hauv kev xyaum, ib tug conceptual pom ntawm ib tug heev tsuj tsawg qhia txaus thiab muaj hwj chim loj txaus los npog txhua txhua conceivable qhov twg los thiab lub hom phiaj hom lus. Hos ib txhia twb tau tuaj nyob ze rau qhov no.

Real compilers kis tau los ntawm ntau theem. Thaum tsim koj tus kheej compiler tsis tau kom rov hais dua rau tag nrho cov zog ua hauj lwm uas cov neeg tau ua li cas rau tsim duab kos tau tshwm thiab generators. Koj muaj peev xwm txhais koj cov lus ncaj qha nyob rau hauv JavaScript los yog C thiab coj kom zoo dua uas twb muaj lawm JavaScript-engine thiab lub C compiler ua tus so. Koj kuj siv tau cov uas twb muaj lawm intermediate sawv cev thiab virtual cov cav tov.

cov ntaub ntawv txhais lus

Broadcaster - yog ib qho kev pab los yog kev kho vajtse, uas muab kev koom tes cov lus uas peb: lub qhov chaw, cov lo lus uas thiab puag. Lawv yuav tsum tau sau nyob rau hauv ib tug T-puab, muab cov thawj sab laug, txoj cai thiab lub hom phiaj puag hauv qab no.

Muaj peb hom kev compilers:

  • Broadcaster - yog samokompilyator yog hais tias nws hnov tau yooj yim qhov twg los lus.
  • Compiler uas target lus yog lub hauv paus, hu ua samorezidentnym.
  • Broadcaster - ib tug ntoo khaub lig-compiler, yog hais tias nws tsom thiab yooj yim ua ntau hom lus.

Yog vim li cas yog no thiaj tseem ceeb?

Txawm hais tias koj yeej tsis ua ib tug tiag tiag compiler, ib tug paub zoo txog ntawm lub cuab yeej ntawm nws cov creation, vim hais tias lub tswvyim siv tau rau lub hom phiaj no yog siv lug, piv txwv li:

  • formatting ntawv nyeem;
  • lus queries rau databases;
  • advanced computer architecture;
  • generalized optimization teeb meem;
  • GUIs;
  • scripting lus;
  • controllers;
  • virtual tshuab;
  • Tshuab txhais lus.

Nyob rau hauv tas li ntawd, yog tias koj xav sau preprocessors, linkers, loaders, debuggers thiab profilers, koj yuav tsum mus los ntawm lub tib lub kauj ruam raws li thaum sau ntawv ib compiler.

Koj yuav tau kawm yuav ua li cas sau ntawv zoo dua cov kev pab cuam, txij thaum lub creation ntawm lub tshuab txhais lus rau cov lus txhais tau tias ib tug zoo dua kev nkag siab ntawm nws intricacies thiab ambiguities. Txoj kev tshawb no ntawm lub dav dav ntawm broadcasting kuj tso cai rau koj los ua ib tug zoo designer lus. Yog li ntawd ho tseem ceeb npaum li cas ntxhab cov lus yog hais tias nws tsis tau siv zoo?

kev technology

compiler technology npog ntau ntau cov cheeb tsam ntawm lub computer science:

  • formal kev tshawb xav ntawm cov lus: qauv sau ntawv, parsing, computability;
  • computer architecture: kev qhia poob lawm, RISC los yog CISC, pipelined ua tub ntxhais moos mus, thiab lwm yam.;
  • tswv yim ntawm kev programming lus, piv txwv li, kev ua tau zoo ib theem tswj, zwj ceeb tiav, iteration, recursion, tej decomposition, modularity, synchronization, meta-programming, tau, qhov sub-hom, templates, tso zis hom, prototypes, annotations, txaus, monads, mailboxes, ntxiv , wildcards, kev qhia, transactional nco, qub txeeg qub teg, polymorphism, hom chaw, thiab thiaj li nyob. thiab lwm yam.;
  • paub daws teeb hom lus thiab virtual cov cav tov;
  • algorithms thiab cov ntaub ntawv lug: kev kab zauv, parsing algorithms, graphics algorithms, dynamic programming, kev kawm;
  • programming lus: syntax, semantics (zoo li qub thiab dynamic), kev pab txhawb nqa paradigms (structural, OOP, haumxeeb, zajlus kom, pawg, parallelism, meta-programming);
  • creation software (compilers, feem ntau loj thiab complex): localization, caching, componentize, API-interfaces, rov siv, synchronization.

compiler tsim

Ib co ntawm cov teeb meem ces yuav tsum nyob rau hauv txoj kev loj hlob ntawm lub tiag tiag tus neeg txhais lus:

  • Teeb meem nrog rau qhov chaw hais lus. Yog nws yooj yim mus compile nws? Puas muaj ib tug preprocessor? Yuav ua li cas yog cov hom? Puas muaj lub tsev qiv ntawv?
  • Grouping compiler dhau mus: ib los yog multi-txoj kev?
  • Lub degree ntawm optimization kev kawm. Ceev thiab tsis huv tawm cov kev pab cuam nrog me me los yog tsis muaj optimization yuav ua tau li qub. Nyob-optimization compiler yuav qeeb, tab sis zoo dua code ntawm runtime tej zaum yuav tsim nyog nws.
  • Qhov yuav tsum tau degree ntawm kev ua yuam kev nrhiav kom tau. Yuav ib tug neeg txhais cia li nres ntawm thawj yuam kev? Thaum nws yuav tsum tsis txhob? Seb puas yuav tso siab rau cov compiler yuam kev kho?
  • Lub nyob rau ntawm cov cuab yeej. Yog hais tias tus thawj hom lus tsis yog heev me me, lub scanner thiab generator analyzers yog yuav tsum tau. Tseem muaj generators, code generators, tab sis lawv yog tsis yog li ntawd ntau.
  • Hom phiaj code yuav tsum generated. Yuav xaiv los ntawm ntshiab supplemented los yog virtual tshuab code. Los yog cia li sau ib qho kev nkag feem uas tsim ib tug nrov intermediate sawv cev xws li LLVM, RTL, los yog JVM. Los yog ua ib tug neeg txhais lus ntawm cov thawj nyob rau hauv lub qhov chaws nyob rau hauv C los yog JavaScript.
  • Cov hom ntawv ntawm lub hom phiaj code. Koj muaj peev xwm xaiv ib tug los ua ke hais lus, ib tug portable tshuab code, tshuab code nco daim duab.
  • Retargeting. Thaum lub teeb ntawm generators yog zoo kom muaj ib qho inlet feem. Vim li no nws yuav zoo tshaj yog muaj ib tug generator rau lub tswv yim ntawm ntau qhov chaw.

compiler Architecture: Cheebtsam

Cov no yog cov loj haumxeeb Cheebtsam ntawm ib tug compiler uas generates haiv neeg code (yog hais tias tus tso zis qhov kev pab cuam yog ib qho kev pab nyob rau hauv C los yog ib tug virtual tshuab, koj yuav tsum tsis yog li ntawd ntau theem):

  • Lub tswv yim pab cuam (flow tias) yog noj mus rau hauv lub scanner (lexical analyzer), uas converts nws mus rau hauv ib tug kwj ntawm cov tokens.
  • Parser (parser) constructing ib paub daws teeb syntax tsob ntoo.
  • Semantic analyzer decomposes lub semantic cov ntaub ntawv thiab cov tshev mis rau tsob ntoo ntshav rau kom raug. Raws li ib tug tshwm sim, ua semantic teeb - paub daws teeb syntax tsob ntoo nrog ntxiv zog thiab cov tsim kev mus.
  • Intermediate code generator ua ib tug khiav teeb (tuples yog grouped rau hauv lub ntsiab blocks).
  • Tshuab-ywj siab code optimizer ua ob lub zos (tsis pub dhau rau lub hauv paus unit) thiab ntiaj teb no (mus rau tag nrho cov blocks) optimization yeej seem hauv txhua hnub. Reduces redundant code thiab simplifies cov lus teb. Cov no ib tug hloov flow teeb.
  • Generator uake phiaj code yooj yim blocks mus rau hauv ib tug rectilinear kis tau tus mob tswj code, tsim ib tug kwv ntaub ntawv assembler virtual sau (tejzaum nws tawg paj txi txiv).
  • Tshuab-dependent optimizer, Linker allocates nco ntawm sau thiab ua npaj pawg. Nws ua lub conversion kev pab cuam nyob rau hauv los ua ke yam lus no los ua ke nrog ib tug zoo siv ntawm pipelining.

Nyob rau hauv tas li ntawd, siv ntawm kev ua yuam kev nrhiav kom tau subsystem saib xyuas thiab cim rooj.

Lexical tsom xam (PP)

Lub scanner converts tus kwj qhov chaw cim rau hauv ib tug kwj ntawm cov tokens, tshem whitespace, cov lus thiab cov expanding macros.

Scanners feem ntau ntsib teeb meem, xws li seb puas los yog tsis txhob coj mus rau hauv tus account cov ntaub ntawv, margins, kab so thiab kos cov lus.

Uas tsis uas yuav tshwm sim thaum lub sij hawm PP, hu ua lexical thiab muaj xws li:

  • cim uas tsis yog nyob rau hauv cov tsiaj ntawv;
  • tshaj ntawm tus xov tooj ntawm cov cim nyob rau hauv ib lo lus los yog kab;
  • tsis yog ib tug kaw kos npe rau los yog ib txoj hlua literal;
  • thaum xaus ntawm cov ntaub ntawv nyob rau hauv saib.

Parsing (parsing)

Lub parser converts ib theem zuj zus ntawm tokens rau hauv ib qho paub daws teeb syntax tsob ntoo. Txhua ntawm nyob rau hauv lub tsob ntoo yog muab raws li ib tug kwv nrog lub npe teb, ntau yam uas yog lawv tus kheej tsob ntoo ntshav. Rau ntawm no theem muaj muaj tsis muaj mus. Thaum koj tsim ib lub parser yog tsim nyog them sai sai mus rau theem ntawm complexity ntawm cov qauv sau ntawv (ll los yog LR) thiab nrhiav seb muaj tej yam kev cai disambiguation. Ib txhia lus tsis yuav tsum tau semantic tsom xam.

Uas tsis nyob rau ntawm no theem yog hu ua syntax. Piv txwv li:

  • k = 5 * (7 - y;
  • j = / 5;
  • 56 = x * 4.

semantic tsom xam

Thaum lub sij hawm semantic tsom xam mus xyuas lub permissibility ntawm cov kev cai thiab associate qhov chaw ntawm lub parse ntoo (uas siv cov npe inserting lag luam rau implicit hom pauv hloov, thiab hais txog. D.) Rau txoj kev ua semantic teeb.

Obviously, lub teeb ntawm admissibility ntawm cov kev cai nyob rau hauv hom lus sib txawv. Yog hais tias koj sau lub Java zoo li lus, compilers yuav nrhiav tau:

  • ntau nce mus nce los tshaj tawm nyob rau hauv nws uas;
  • ib tug siv rau ib tug nce mus nce los ua ntej nws tshaj tawm;
  • ua tim khawv rau lub npe ntawm tus undeclared;
  • kev cuam tshuam ntawm patent txoj cai;
  • ntev los tsis txaus tus naj npawb ntawm cov lus sib cav nyob rau hauv ib txoj kev hu rau;
  • hom mismatch.

tiam

Intermediate code tiam ua txaus teeb muaj li ntawm tuples, grouped rau hauv yooj yim blocks.

code tiam ua ib tug tiag tiag tshuab code. Nyob rau hauv tsoos compilers rau lub RISC-machines nyob rau hauv thawj kauj ruam, koj tsim tau ib lub assembler nrog ib tug infinite tus naj npawb ntawm virtual sau. Rau CISC-tshuab tej zaum yuav tsis tshwm sim.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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