AmakhompyuthaIzinhlelo

Umsakazeli - kuyinto ... Uhlobo compilers. Guqula nezinhlelo ukusakaza

Izinhlelo, kuhlanganise nabantu abangamhloniphi ukuhumusha kusuka kolunye ulimi eyiswa kolunye kudingeka umhumushi noma umhumushi.

imiqondo eyisisekelo

Uhlelo ukumelwa kwezilimi wokubalisisa: i → P → P (i). Umrhumutjhi wuhlelo ehlinzekwa wumnikezeli kuhlelo okokufaka P kanti ezinye x input. It wenza at P x: I (P, x) = P (x). Iqiniso lokuthi kukhona umhumushi eyodwa kuphela ongenza zonke izinhlelo kungenzeka (okungase amelwe ohlelweni esisemthethweni) kuyinto ejulile futhi okuphawulekayo ukutholakala Turing.

I processor umhumushi izinhlelo umshini ulimi. Ngokuvamile ebiza kakhulu ukubhala otolika zezilimi eliphezulu, ngakho-ke ukuhumusha kwifomu ukuthi kulula ukuhumusha.

Ezinye izinhlobo abahumushi zinamagama engajwayelekile:

  • I assembler ihumusha umhlangano izinhlelo ulimi emshinini ulimi.
  • Umhlanganisi uhumusha ulimi eliphezulu olimini aphansi.

Umsakazeli - wuhlelo kuthatha nedatha okokufaka uhlelo kwezinye S ulimi futhi ukhiqiza Uhlelo T ngendlela ukuthi kokubili engasho lutho efanayo: P → X → Q. Lokho, ∀x. P (x) = Q (x).

Uma ukusakaza lonke uhlelo into interpretable, ibizwa ngokuthi iyiqoqo ngaphambi kokubulawa, noma AOT sokuhlanganiswa. AOT yesakhi ingasetshenziswa chungechunge, lona wamuva zazo ngokuvamile yiyona assembler, isibonelo:

Ikhodi yomthombo yesakhi → (umhumushi) → → inhlangano ikhodi assembler (Umhlanganisi) ikhodi → → CPU umshini (umhumushi).

sokuhlanganiswa Operational noma ashukumisayo kwenzeka uma hlelo ukusakaza, uma ababulawa ezinye ingxenye ngaphambilini ihlanganiswe. Jit-compilers ukhumbule lokho abakwenzile kakade ukuze singathwesi ukuphinda ikhodi yomthombo kaningi. Abakwazi ukukhiqiza ngisho sokuhlanganiswa oluhambelana futhi recompilation esekelwe ukuziphatha imvelo Uhlelo kuqalisa.

izilimi amaningi avumela ezokhipha ikhodi ngesikhathi bahlanganise futhi ahlanganise ikhodi entsha at isikhathi sokusebenza.

translation esiteji

Yokusakaza inalokhu izinyathelo ehlaziya nalapho Kuhlanganisa:

Ikhodi yomthombo analyzer → → → lomqondo ukumelwa generator (synthesizer) → Target ikhodi.

Lokhu kungenxa yalezi zizathu:

  • Noma yimuphi omunye indlela asifanele. Igama translation nje akusebenzi.
  • isixazululo Good ubunjiniyela: uma ufuna ukubhala abahumushi ngoba M N umthombo izilimi okubhekiswe Akudingeki ubhale M + N izinhlelo elula kuphela (polukompilyatorov) kunokuba M × N eziyinkimbinkimbi (ingqikithi abahumushi).

Nokho, umkhuba, umbono nekutfutfuka kwelizinga kakhulu thukela ekhululekile ngokwanele kanye namandla anele ukumboza wonke omthombo target icatshangwe izilimi. Nakuba abanye bakwazi ukuba badlalele eduze lokhu.

ukudlula compilers Real ezigabeni eziningi. Lapho edala yesakhi akho ayidingi ukuphinda yawo wonke umsebenzi onzima ukuthi abantu abakwenzele ukudala izethulo kanye nama-generator. Ungakwazi ukuhumusha ngolimi lwakho ngqo ku-JavaScript noma C no ukusizakala ekhona esine-enjini kanye C yesakhi ukuba yenze konke okusele. Ungasebenzisa futhi umfanekiso ekhona Lesisemkhatsini imishini virtual.

irekhodi umhumushi

Umsakazeli - wuhlelo noma i-hardware, okwakuhilela izilimi ezintathu: umthombo, lapho uya khona futhi base. Bangakwazi Ubhalwe T-ukuma, obeka yasekuqaleni kwesokunxele, kwesokudla kanye target isizinda ngezansi.

Kukhona izinhlobo ezintathu compilers:

  • Umsakazeli - kuyinto samokompilyator uma sifana eziyisisekelo umthombo limi.
  • Umhlanganisi okuyinto ukukhomba ulimi lekufa, ngokuthi samorezidentnym.
  • Umsakazeli - esiphambanweni-yesakhi, uma okubhekiswe nezilimi ezihlukahlukene eziyisisekelo.

Kungani kubalulekile lokhu?

Ngisho noma ungakaze wenze yesakhi Okuyınqo, ulwazi oluhle ubuchwepheshe indalo yayo, ngoba umqondo asetshenziselwe le nhloso asetshenziswa kabanzi, isibonelo:

  • kwemibhalo;
  • imibuzo ulimi ukuze yolwazi;
  • eziphambili ikhompyutha izakhiwo;
  • izinkinga nokwenza generalized;
  • GUIs;
  • izilimi amaskriphthi;
  • abalawuli;
  • imishini virtual;
  • translation Machine.

Ngaphezu kwalokho, uma ufuna ukubhala preprocessors, linkers, Loaders, debuggers futhi profilers, kumelwe uhambe ngokusebenzisa izinyathelo efanayo uma ubhala yesakhi.

Ungase futhi ufunde indlela ukubhala izinhlelo kangcono, selokhu kwasekelwa umhumushi kolimi kusho ukuqonda kangcono butholakala enqubweni eyinkimbinkimbi yayo futhi ukwakheka kwemiqondo. Ucwaningo we imigomo ejwayelekile Broadcasting futhi ikuvumela ukuba ube ulimi ezinhle umklami. Ngakho kunendaba ukuthi ulimi uma ayikwazi ukusebenziseka ngendlela emaweni?

ubuchwepheshe olunzulu

yesakhi ubuchwepheshe ihlanganisa izindawo eziningi computer science ezahlukene:

  • ithiyori letihlelekile telulwimi: lolimi, lokudlulisa, computability;
  • ikhompyutha izakhiwo:. imfundo lishona, RISC noma CISC, pipelined ukucutshungulwa core iwashi imijikelezo, njll;
  • imiqondo izilimi izinhlelo, isibonelo, kokwenza ukulawula ukulandelana, ukubulawa okunemibandela kuphindelelwa, recursion, noqhekeko obusebenzayo, modularity, ukuvumelanisa, meta-izinhlelo, ububanzi, njalo sub-zinhlobo, izifanekiso, okukhipha uhlobo, prototypes, izichasiselo, ukugeleza, monads, ebhokisini leposi, uqhubeke , wildcards, ezivamile, inkumbulo amathekisthi adlulisa imilayezo, ifa, polymorphism, izilungiselelo mode, nokunye nokunye..;
  • izilimi abstract futhi imishini virtual;
  • algorithm futhi idatha izakhiwo: izinkulumo njalo, kudluliswa algorithm, ihluzo algorithm, izinhlelo ashukumisayo, ukuqeqeshwa;
  • izilimi izinhlelo: miyalelo, engasho lutho (static futhi ashukumisayo), ukwesekwa paradigms (sakhiwo, OOP, ukusebenza, okunengqondo, inqwaba, impindamqondo, meta-izinhlelo);
  • isofthiwe yokudala (compilers, ngokuvamile ezinkulu futhi eziyinkimbinkimbi): kwasendaweni, enqolobaneni, componentize,-API-interface, kabusha ukusetshenziswa, ukuvumelanisa.

yesakhi design

Ezinye izinkinga abazalwane ababehlangabezana nazo ekuthuthukiseni umhumushi real:

  • Izinkinga ulimi lomthombo. Ingabe kube lula ukuhlanganisa ke? Ingabe ikhona preprocessor? kanjani izinhlobo? Ingabe ikhona umtapo?
  • Ukubuthelela yesakhi maqembu: olulodwa noma multi-indlela?
  • I degree of nokwenza oyifunayo. izinhlelo ukusakaza Fast nengahlanzekile nge nokwenza esincane noma abangenaso nhlobo kungaba evamile. Over-nokwenza yesakhi wehlisa, kodwa ikhodi kangcono isikhathi sokusebenza kungenzeka zinkulu.
  • Izinga edingekayo yephutha ukuthola. Ingabe umhumushi nje ayeke iphutha lokuqala? Lapho kufanele ayeke? Ukuthi uthemba ukulungiswa iphutha yesakhi?
  • Ukutholakala amathuluzi. Uma olimini lokuqala akuyona encane kakhulu, isithwebuli kanye generator analyzers ziyadingeka. Kukhona futhi ugesi, ikhodi ugesi, kodwa abawona ezivame kangaka.
  • Uhlobo Ikhodi target ukuba elakhiwe. Kukhethwe kusukela okumsulwa kulekelelwa noma virtual ikhodi umshini. Noma nje bhala ingxenye entry ukuthi kudala ukumelwa ethandwa Lesisemkhatsini ezifana LLVM, RTL, noma JVM. Noma ukwenza inguqulo yokuqala e ikhodi yomthombo in C noma i-JavaScript.
  • Ifomethi ikhodi target. Ungakhetha ulimi inhlangano, ikhodi ephathekayo umshini, ikhodi umshini inkumbulo isithombe.
  • Retargeting. Lapho iqoqo ugesi muhle ukuba ingxenye ezivamile itheku. Ngenxa yalesi sizathu-ke kuhle ukuba umuntu generator ukuze ubone okokufaka izingxenye eziningi.

yesakhi Architecture: izingxenye

Lawa izingxenye ezinkulu obusebenzayo umhlanganisi yakha ikhodi bomdabu (uma uhlelo okukhipha uhlelo e C noma umshini virtual, udinga izigaba eziningi kangaka):

  • Uhlelo lokufaka (ukugeleza emamaki) kufakwa isithwebuli (analyzer lucebe), oguqula bayifaka umfudlana amathokheni okuqinisekisa.
  • Umhlahleli (bohlahleli) ukwakha umpheme owodwa abstract-syntax esihlahleni.
  • analyzer semantic ubola ulwazi semantic futhi ihlola ISIZINDA esihlahleni amaphutha. Ngenxa yalokho, eyakhelwe igrafu semantic - abstract-syntax isihlahla nge izakhiwo eyengeziwe kanye izixhumanisi kusungulwa.
  • ESigabeni leSisemkhatsini code generator yakha igrafu ukugeleza (tuples zihlelwe zaba amabhlogo main).
  • Machine-ezimele ikhodi esivimba uqhuba kokubili bendawo (ngaphakathi base unit) kanye global (bonke amabhulokhi) nokwenza ngokuyisisekelo ezisele phakathi onkhe. Yehlisa ikhodi eziphindaphindekayo futhi lula izibalo. Imiphumela iba yinhlanganisela yokukhandleka Ushintshe ukugeleza igrafu.
  • Generator sibopha ikhodi target ngezici eziyisisekelo zibe ikhodi rectilinear ukulawula ukudluliswa, ukudala ifayela into assembler amarejista virtual (mhlawumbe ayizwakali).
  • Umshini ancike esivimba, linker inike inkumbulo phakathi usomqulu futhi kwenza amaqembu uhlela. It wenza uhlelo ukuguqulwa emhlanganweni ulimi kulo mhlangano nge ukusetshenziswa ezinhle pipelining.

Ngaphezu kwalokho, ukusetshenziswa Iphutha ukuthola umphathi subsystem futhi uphawu amatafula.

ukuhlaziywa lucebe (ukuskena)

Isithwebuli iguqula izinhlamvu umthombo wokusakazwa ku umfudlana amathokheni, nokususa whitespace, amazwana amamakhro uyanda.

Izikena ngokuvamile uhlangabezana nezinkinga, njengokuthi noma ngabe noma cha acabangele kunjalo, imingcele, kunqamuke umugqa namazwana esishunyekiwe.

Amaphutha ezingase ezenzeka phakathi ukuskena, ngokuthi lucebe futhi zihlanganisa:

  • izinhlamvu ezingekho zamagama;
  • okwedlula inani lezinhlamvu egameni noma umugqa;
  • ayibonisi avaliwe noma yezinhlamvu ezingokoqobo;
  • ekupheleni ifayela amazwana.

Kudluliswa (lokudlulisa)

I bohlahleli oguqula ukulandelana amathokheni zibe-syntax isihlahla abstract. Ngamunye node esihlahleni lilondolozwe njengoba into Amasimu okuthiwa, iningi lazo ongeke ukwazi bona ISIZINDA esihlahleni. Kulesi sigaba azikho imijikelezo. Uma udala bohlahleli kuyadingeka ukuba banake ezingeni obulukhuni lolimi (LL noma LR) futhi uthole ukuthi zikhona yini imithetho disambiguation. Ezinye izilimi musa ledzinga kuhlatiywa semantic.

Amaphutha atholakele kulesi sigaba abizwa ngokuthi i-syntax. Ngokwesibonelo:

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

ukuhlaziywa semantic

Phakathi ukuhlaziywa semantic ukuhlola permissibility imithetho nezingxenye abakanye kwesihlahla wokuhlaziya (ngokuvumela amagama inkomba ufaka wokusebenza ngokuphelele uhlobo ukuguqulwa, nokunye. D.) Ukuze obumba igrafu semantic.

Ngokusobala, isethi admissibility imithetho ngezilimi ezahlukene ezahlukene. Uma ahlanganise izilimi Java-like, compilers ungase ukuthole:

  • isimemezelo amaningi variable ngaphakathi nobukhulu bayo;
  • ireferensi kwenombolo phambi isimemezelo yayo;
  • izinkomba igama engamenyezelwe;
  • kwamalungelo patent;
  • inombolo ngokweqile noma alanele agumenti usocingweni indlela;
  • uhlobo lokungafani.

isizukulwane

ESigabeni leSisemkhatsini ikhodi isebenze ukhiqiza ukugeleza igrafu sakhiwa tuples, zib ngezici eziyisisekelo.

Ikhodi isizukulwane ukhiqiza ikhodi real umshini. Ngo compilers tendzabuko RISC-imishini ku isinyathelo sokuqala, wena ukudala i-assembler nge isibalo esingapheliyo amarejista ebonakalayo. Ukuze CISC-imishini cishe ngeke kwenzeke.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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