Makombiyuta, Zvirongwa
Mushamarari - ndiko ... Types ose compilers. Change uye zvirongwa nhepfenyuro
Zvirongwa, uyewo vanhu kushandura kubva mutauro mumwe vanoda muturikiri kana mushanduri.
zvinhu pfungwa
Chirongwa iri mufananidzo mitauro ine Masvomhu: i → P → P (i). Muturikiri chinhu chirongwa riri nechikoro kuti mazano chirongwa P uye vamwe chiyamuro x. It anoita pa P X: I (P, x) = P (x). Chokwadi chokuti pane mushanduri mumwe chete anokwanisa kuita zvichiita purogiramu yose (izvo zvinogona kumiririrwa mu wevakadzidza ezvinhu) chikuru kwazvo uye chinokosha kuwanikidza Turing.
The processor ndiyo muturikiri purogiramu vari muchina mutauro. zvakare Kazhinji zvinodhura kunyora vaturikiri kuti mitauro mukuru-sandara, saka mabhuku muchimiro iri nyore kududzira.
Vamwe nemhando vashanduri vane mazita chinoshamisa zvikuru:
- The assembler anoshandura gungano zvirongwa mutauro kupinda muchina mutauro.
- The compiler anoshandurwa mutauro mukuru-pamwero mumwe mutauro yakaderera.
Mushamarari - ndiko purogiramu zvinoda sezvo chiyamuro Data program mune imwe mutauro S uye pave T chirongwa nenzira kuti vose vane semantics: P → X → Q. Ndiko, ∀x. P (x) = Q (x).
Kana kutepfenyura yose chirongwa kupinda chinhu interpretable, kunonzi muunganidzwa asati aurayiwa, kana AOT muunganidzwa. AOT compiler inogona kushandiswa series, yokupedzisira iyo iri kazhinji assembler, somuenzaniso:
Kunobva Bumbiro compiler → (mushanduri) → → gungano yekubvuma assembler (compiler) → → CPU muchina yekubvuma (muturikiri).
Operational kana simba muunganidzwa kunoitika kana chirongwa iri kutepfenyura, kana vakaurayiwa nevamwe kare rakanyorwa chikamu. JIT-compilers rangarira zvavanenge akatozviita sezvo kusazvidzokorora kwaibva bumbiro zvakare uye zvakare. Vanogona kunyange kubereka adaptive muunganidzwa uye recompilation inobva maitiro purogiramu kuuraya kwezvakatipoteredza.
mitauro yakawanda kubvumira yokuuraya bumbiro panguva batanidza nguva uye vainyora bumbiro remitemo idzva panguva Runtime.
rokushandura rwakazara
DzeShona unotora tsoka pokuongorora uye synthesizing:
Kunobva Bumbiro analyzer → → → Conceptual kumiririrwa jenareta (synthesizer) → Target romutemo.
Izvi imhaka zvikonzero izvi:
- Chero mumwe nzira hakusi akakodzera. Word shanduro haushande.
- Good ouinjiniya mhinduro: kana uchida kunyora Vashanduri kuti M uye N mabviro mitauro zvakanangwa zvichifanira kunyora M + N Zvirongwa nyore chete (polukompilyatorov) pane M × N kunzwisisa (zvachose vashanduri).
Zvisinei, mune tsika, munhu Conceptual maonero kwazvo kashoma kuratidza zvakakwana uye simba zvokukwanisa kufukidza kunobva uye chipfuro ose kumboadya mitauro. Nepo vamwe vakakwanisa kuuya pedyo ichi.
compilers Real nomunyika mumatanho zhinji. Paaisika yako compiler hakudi kudzokorora basa rose rakaoma kuti vanhu vakaita kuti pave kumifananidzo uye emagetsi. Unogona kududzira mutauro wako zvakananga JavaScript kana C uye kushandisa zviripo JavaScript-injini uye C compiler kuita vamwe. Munogona kushandisa mufananidzo zvenguva raivapo uye rakapotsa michina.
rekodhi muturikiri
Mushamarari - ari chirongwa kana Hardware, raisanganisira mumitauro mitatu: panobva, ari kuenda nechigadziko. Vanogona kunyorwa mune T-chimiro, rikaisa yepakutanga kuruboshwe, kurudyi uye nemharu chawo pazasi.
Kune mhando nhatu compilers:
- Mushamarari - ndiko samokompilyator kana anoenderana inokosha kunobva mutauro.
- Compiler izvo kuvavarira mutauro ndiyo Muongororo yekutanga, inonzi samorezidentnym.
- Mushamarari - pamuchinjikwa-compiler, kana iye nangananga uye zvinokosha mitauro yakasiyana-siyana.
Nei izvi zvichikosha?
Kunyange kana iwe usambofa kugadzira compiler chaiyo, zivo mabikirwo ayo rezvisikwa, nekuti pfungwa inoshandiswa chinangwa ichi anoshandiswa nevakawanda, somuenzaniso:
- formatting chinyorwa;
- mutauro queries kuti Databases;
- yemhando kombiyuta akitekicha;
- generalized Optimization nematambudziko;
- GUIs;
- scripting mitauro;
- controllers;
- Virtual michina;
- Machine rokushandura.
Uyezve, kana uchida kunyora preprocessors, linkers, loaders, debuggers uye profilers, unofanira kuenda kuburikidza chete matanho sezvo kana kunyora compiler.
Unogonawo kudzidza kunyora zvirongwa nani, kubva pakusikwa mushanduri nokuti mutauro zvinoreva unzwisise nezvehukorokodzwa ayo uye zvakawanda. The kudzidza huripo pakati nhepfenyuro inokupai iwe kuva anogadzira mutauro wakanaka. Saka zvine basa sei pamawere mutauro kana hazvigoni chinozoiswa zvinobudirira?
nzwisisika Michina
compiler zvemichina chinofukidza nzvimbo dzakawanda dzakasiyana kombiyuta nesayenzi:
- yakarongwa Dzidziso mutauro: girama, parsing, computability;
- kombiyuta akitekicha:. murayiridzo unobatsira, RISC kana CISC, pipelined kubudiswa makirisito wachi zvinogara, etc;
- Dzidziso mapurogiramu mitauro Somuenzaniso, kuita kutevedzana kuzvidzora, zvimiso kuurayiwa, iteration, recursion, chadzo manyowa, modularity, yaunonyanya kushandisa, Meta-zvirongwa, kukura, kugara Sub-mhando, templates, goho mhando, prototypes, annotations, aibuda, monads, mailboxes, rambai , wildcards, nguva mashoko, transactional ndangariro, nhaka, polymorphism, rudzi mezviruva, uye zvichingodaro nezvimwewo..
- abstrakti mitauro uye rakapotsa michina;
- algorithms uye date ezvirevo: dzose mashoko, parsing algorithms, Graphics algorithms, guru zvirongwa, kudzidzisa;
- zvirongwa mumitauro: nemarongerwo, semantics (kunofambira mberi uye simba), rutsigiro paradigms (STRUCTURAL, OOP, chadzo, nomusoro, wemagazini, parallelism, Meta-zvirongwa);
- Zvisikwa Software (compilers, kazhinji yakakura uye kunzwisisa): localization, caching, componentize, API-interfaces, kuzodzosera kushandiswa, yaunonyanya kushandisa.
compiler patani
Zvimwe zvinetso vasangana kukura mushanduri chaiye:
- Nezvinetso mutauro kunobva. Zviri nyore kuti anyore nayo nayo? Pane imwe preprocessor? Sei mhando? Pane imwe raibhurari?
- Muzvikwata zvisina tsarukano compiler pemipata: kuroorwa kana multi-nzira?
- The mwero Optimization achida. Fast uye kuchena nhepfenyuro zvirongwa shoma kana pasina Optimization kunogona dzose. Over-Optimization compiler zvishoma, asi zviri nani remitemo pa Runtime zvingava zvakakodzera.
- The zvaida mwero kwokukanganisa vasabatwa. Anogona mushanduri chete titsaukire kukanganisa pakutanga? Kana kurega? Kana kuvimba compiler kukanganisa kururamiswa?
- Kuwanikwa zvokushandisa. Kana mutauro chepakutanga haisi chaizvo duku, kuti scanner uye jenareta analyzers zvinodiwa. Kunewo emagetsi, bumbiro emagetsi, asi havasi kudaro chakasviba.
- Mhando chipfuro remitemo kuti kunotangira. Kusarudzwa kubva wakachena vaisanganisa kana rakapotsa muchina yekubvuma. Kana chete kunyora kupinda mugove kuti pave zvenguva kumiririrwa mukurumbira akadai LLVM, RTL, kana JVM. Kana kuti shanduro chepakutanga anokonzera remitemo iri C kana JavaScript.
- Pamanyorerwo kubaya remitemo. Unogona kusarudza imwe mutauro gungano, inotakurika muchina code, muchina waiita ndangariro mufananidzo.
- Retargeting. Kana akaita emagetsi zvakanaka kuva zvakafanana Inlet mugove. Nokuda kwechikonzero ichi zvakanaka kuti mumwe jenareta kuti mazano dzakawanda.
compiler Architecture: zvinoriumba
Ndivo zvikuru dzichipfekeka zvinoumba munhu compiler kuti zvinowanisa chizvarwa remitemo (kana chirongwa goho riri chirongwa C kana rakapotsa muchina, haufaniri matanho akawanda kudaro):
- Chirongwa chiyamuro (aibuda mavanga) uchaguta munzvimbo scanner (lexical analyzer), izvo anomuchinja ndokuita norwizi zviratidzo.
- Parser (parser) kuvaka imwe husingaoneki nemarongerwo muti.
- Kupindirana kwemuvanzrira wezvirevo nemabviro analyzer uchiora ari kupindirana kwemuvanzrira wezvirevo nemabviro ruzivo uye achaongorora muti nodes kuti zvikanganiso. Somugumisiro, akavaka kupindirana kwemuvanzrira wezvirevo nemabviro girafu - abstract nemarongerwo muti Zvimwe zvivako uye yakasimbiswa Links.
- Zvenguva Bumbiro jenareta anovaka nokuyerera girafu (tuples vari mumapoka huru zvinogumbura).
- Machine-rakazvimirira remitemo optimizer anoitisa dzomuno (mukati nechigadziko chikwata) uye pasi rose (kune kutigumbura zvose) Optimization kumboda kuramba mukati purogiramu. Kunoderedza wandisa bumbiro uye huve nyore kuti Masvomhu. Zvinoguma dzakachinjwa chokubuda girafu.
- Jenareta anosunga chipfuro bumbiro zvinhu zvinogumbura mugomba rectilinear hutachiwana kudzora code, ndinosika chinhu faira assembler rakapotsa evoruzhinji (pamwewo sashanda).
- Machine-muyanzvi optimizer, linker allocates ndangariro pakati evoruzhinji uye anoita kuronga zvikwata. It anoita kutendeuka chirongwa mumutauro gungano pagungano rino kushandisa pipelining zvakanaka.
Uyezve, kushandisa kwokukanganisa vasabatwa subsystem maneja uye chiratidzo pamatafura.
Lexical kuongorora (kushanda pakuvheneka)
The scanner anomuchinja rukova panobva mabhii kupinda norwizi zviratidzo, achibvisa whitespace, mashoko uye kuwedzera macro.
Scanners kazhinji nezvinetso, zvakadai kana kwete kufunga zvakadaro, varikumahombekombe, mutsetse musisiri uye midzi mhinduro.
Zvikanganiso kuti munguva kushanda pakuvheneka, inonzi lexical uye inosanganisira:
- vatambi kuti hamusi arufabheti;
- nekumwisa uwandu vatambi neshoko kana mutsetse;
- kwete up chiratidzo kana tambo chaiwo;
- kuguma faira mune mhinduro.
Parsing (parsing)
The parser anomuchinja kuti kutevedzana kwezviitiko zviratidzo kupinda husingaoneki nemarongerwo muti. raiva pedyo nebundu rimwe nerimwe mumuti inochengeterwa sezvo chinhu pamwe ainzi minda, zvakawanda zviri pachavo muti nodes. Panguva iyi hapana zvinogara. Kana ukaronga parser zvinokosha kuti unyatsoteerera padanho kunzwisisa girama (LL kana lr) uye kuwana kana paine mitemo disambiguation. Vamwe mitauro inoda kupindirana kwemuvanzrira wezvirevo nemabviro kuongorora.
Zvikanganiso pana pachinhanho ichi vanonzi nemarongerwo. Somuenzaniso:
- K = 5 * (7 - Y;
- J = / 5;
- 56 = X 4.
kupindirana kwemuvanzrira wezvirevo nemabviro ongororo
Panguva kupindirana kwemuvanzrira wezvirevo nemabviro kuongorora kutarisa permissibility mitemo uye kuwadzana zvikamu parse muti (kubvumira bhuku mazita kuisa kushanda kuti zvakakwana mhando kutendeuka, uye zvichingodaro. D.) Nokuti achiumba kupindirana kwemuvanzrira wezvirevo nemabviro girafu.
Zviri pachena, yakatarwa pakati admissibility mitemo mumitauro yakasiyana. Kana iwe vainyora mitauro Java-zvakadai, compilers vangawana:
- mazhinji shanduka Kuzivisa mukati dzayo dzose;
- Munongedzo kuti shanduka pamberi yayo kuzivisa;
- anotaura zita undeclared;
- kukanganisa pamusoro bvumidzwa kodzero;
- kunyanyisa kana kukwana nhamba nharo nzira runhare;
- mhando mismatch.
chizvarwa
Zvenguva Bumbiro chizvarwa unobereka nokuyerera girafu rine tuples, mumapoka dzinokosha zvinogumbura.
Bumbiro chizvarwa unobereka chaiyo muchina yekubvuma. In chinyakare compilers nokuti RISC-michina iri kutanga danho, iwe pave assembler pamwe isingaperi uwandu chaivo evoruzhinji. Nokuti CISC-michina zvimwe hazvizoitiki.
Similar articles
Trending Now