Kompyuta, Mapulogalamu
Kuulutsa - ndi ... Mitundu ya ankalemba. Sinthani ndi mapulogalamu Kuwulutsa
Mapulogalamu, komanso anthu kumasulira ndi zinenero wina wotanthauzira kapena womasulira.
mfundo zofunika
Pulogalamuyi chifaniziro zinenero kuwerengetsera: i → P → P (i). Wotanthauzira ndi dongosolo lomwe umaperekedwa kwa pulogalamu athandizira P ndi ena × athandizira. Iwo amachita pa P ×: I (P, x) = P (x). Mfundo yakuti pali womasulira mmodzi yekha angathe kuchita mapulogalamu onse kotheka (sipangakhalenso akuimira mu dongosolo ofunda) ndi chachikulu kwambiri ndi chidwi anapeza Turing.
The purosesa ndi wotanthauzira wa mapologalamu chinenero makina. Nthawi zambiri zodula kulemba omasulira m'zinenero waudindo, kotero iwo kumasulira mu mawonekedwe kuti N'chapafupi kuti amasulire.
Ena yonse ya omasulira ndi maina zachilendo:
- The assembler anamasuliridwa mapulogalamu chinenero msonkhano mu chinenero makina.
- The kompayila anamasuliridwa chinenero waudindo chinenero m'munsi.
Kuulutsa - ndi pulogalamu imene Amakhala ndi deta athandizira pulogalamu mu chinenero S zipange T pulogalamu mu njira yakuti iwo onse ndi manenedwe yemweyo: P → X → Q. Ndiko kuti, ∀x. P (x) = Q (x).
Ngati wailesi pulogalamuyi mu chinachake interpretable, umatchedwa yachokera asanapachikidwe, kapena AOT yachokera. AOT kompayila angagwiritsidwe ntchito zino, yotsirizira imene nthawi zambiri assembler Mwachitsanzo:
Gwero malamulo kompayila → (womasulira) → → msonkhano malamulo assembler (kompayila) → → CPU makina malamulo (womasulira).
Sikuyenda kapena zazikulu buku kumachitika ngati pulogalamu ukufalitsidwa, pamene anaphedwa ndi zina gawo poyamba analemba. JIT-ankalemba kukumbukira zimene kale kuti kubwereza gwero malamulo mobwerezabwereza. Iwo akhoza ngakhale kubala dziphunzitsiranso yachokera ndi recompilation potengera makhalidwe a chilengedwe pulogalamu kuphedwa.
m'zinenero zambiri kulola kuti akapereke kachidindo pa nthawi kulemba ndi kulemba malamulo atsopano pa pulogalamu yowongolera.
siteji yomasulira
Kuwulutsa limapangidwa mapazi a kusanthula synthesizing:
Gwero malamulo chowunikira → → → cilamulo chifaniziro jenereta (synthesizer) → chandamale code.
Ichi ndi chifukwa zifukwa izi:
- njira ina iliyonse si abwino. Mawu kumasulira si ntchito.
- Good zomangamanga njira: ngati inu mukufuna kulemba omasulira m'zinenero M ndipo N gwero akulimbana mungachite kulemba kokha M + N mapulogalamu chosavuta (polukompilyatorov) osati M × N zovuta (okwana omasulira).
Komabe, mu kuchita, lingaliro cilamulo kwa mwakamodzi limaonetseratu zokwanira ndi mphamvu zokwanira kuphimba iliyonse akanakhalapo gwero ndi chandamale zinenero. Pamene ena anali kufika pafupi izi.
ankalemba Real kudutsa magawo ambiri. Polenga kompayila anu sayenera kubwereza ntchito mwakhama kuti anthu achita kulenga zithunzi ndi magudumu. Mukhoza kumasulira m'chinenero chanu mwachindunji mu JavaScript kapena C ndi mwayi pa alipo JavaScript-injini ndi C kompayila kuchita mpumulo. Mukhozanso ntchito alipo chifaniziro wapakatikati ndi makina enieni.
mbiri womasulira
Kuulutsa - ndi pulogalamu kapena hardware, zimene zikuphatikizapo zinenero zitatu: gwero lake, kopita ndipo m'munsi. Iwo akhoza kulembedwa mu T-mawonekedwe, kuwayika choyambirira kumanzere, chabwino ndi chandamale m'munsi m'munsimu.
Pali mitundu itatu ya ankalemba:
- Kuulutsa - ndi samokompilyator ngati limafanana ndi chinenero zofunika gwero.
- Kompayila amene zikhudze chinenero cha Momwe Ziriri Pano, wotchedwa samorezidentnym.
- Kuulutsa - mtanda-kompayila, ngati akulimbana ndi zofunika m'zinenero zosiyanasiyana.
Kodi zimenezi n'zofunika?
Ngakhale ngati inu konse kupanga kompayila weniweni, amadziŵa bwino sayansi ya chilengedwe, chifukwa lingaliro ntchito Mwaichi ntchito m'mayiko osiyanasiyana, mwachitsanzo:
- masanjidwe lemba;
- mafunso chinenero kuti zinasokoneza makompyuta;
- zotsogola kompyuta zomangamanga;
- zowombetsa mkota mavuto kukhathamiritsa;
- GUIs;
- zinenero malembedwe;
- opha;
- makina pafupifupi;
- Machine yomasulira.
Komanso, ngati inu mukufuna kulemba preprocessors, linkers, loaders, debuggers ndi profilers upite muzonse mofanana pamene akulemba kompayila.
Mungaphunzirenso bwanji kulemba mapulogalamu bwino, chilengedwere wa womasulira chinenero kumabweretsa kumvetsetsa intricacies ake ndi ambiguities. Kuphunzira mfundo za wailesi imaperekanso inu kukhala bwino chinenero mlengi. Choncho chiyani kuli kofunika kudziwa mmene phompho chinenero ngati sangathe akuyendera bwino?
luso mabuku
kompayila luso chimakwirira m'madera osiyanasiyana a sayansi kompyuta:
- chiphunzitso mwamwambo chabe chinenero: galamala, parsing, computability;
- zomangamanga kompyuta. malangizo akanema, RISC kapena CISC, pipelined processing pakati wotchi m'zinthu, etc;
- mfundo zokhudza zinenero mapulogalamu Mwachitsanzo, kuchita ulamuliro zinayendera, makonzedwe kuphedwa, iteration, recursion zinchito kuwonongeka, modularity, kalunzanitsidwe, pambuyo-mapulogalamu, anamvetsa zonse kum'mwera mitundu, zidindo, mtundu linanena bungwe, prototypes, annotations, otaya, monads, mailboxes, kupitiriza , wildcards, akuti zonse, kupeza ndalama kukumbukira, ngati cholowa polymorphism, zoikamo mode, ndi zina zotero etc..
- zinenero zodabwitsa komanso makina pafupifupi;
- ma aligorivimu ndi deta nyumba: mawu zonse, parsing ma aligorivimu, zithunzi ma aligorivimu, wamphamvu mapulogalamu, maphunziro;
- mapulogalamu zinenero: malembedwe, manenedwe (malo amodzi ndi zazikulu), kuthandiza paradigms (structural, OOP zinchito lomveka, okwana, kufanana, pambuyo-mapulogalamu);
- chilengedwe mapulogalamu (ankalemba, kawirikawiri waukulu ndi zovuta): kutanthauzira, caching, componentize, API-polumikizira, kachiwiri ntchito, kalunzanitsidwe.
kompayila kapangidwe
Ena mwa mavuto nawo mu chitukuko cha womasulira weniweni:
- Mavuto ndi chinenero gwero. N'zosavuta kulemba izo? Kodi pali preprocessor? Kodi mitundu ya? Kodi pali laibulale?
- Grouping kompayila mipita: osakwatira kapena Mipikisano njira?
- Mlingo wa kukhathamiritsa ankafuna. Fast ndi wodetsedwa mapulogalamu Kuwulutsa ndi kukhathamiritsa pang'ono kapena ayi akhoza kukhala zachibadwa. Pa-kukhathamiritsa kompayila pang'onopang'ono, koma bwino kachidindo pa pulogalamu yowongolera kungakhale zedi.
- Mlingo chofunika wa kudziwika zolakwa. Kodi womasulira ndimangoima pa zolakwa woyamba? Pamene ayenera kusiya? Kaya kukhulupirira kompayila zolakwa malangizo?
- Kupezeka kwa zipangizo. Ngati m'chinenero choyambirira si yaing'ono kwambiri, sikana ndi jenereta analyzers zifunika. Palinso magudumu, malamulo magudumu, koma iwo siali choncho wamba.
- Mtundu wa chandamale code ku kupangidwa. Anasankha kwa oyera wodzilemekeza kapena pafupifupi makina code. Kapena kulemba monga kulowa gawo kuti amalenga otchuka wapakatikati chifaniziro monga LLVM, RTL, kapena JVM. Kapena kumasulira choyambirira gwero m'buku C kapena JavaScript.
- Mtundu wa chandamale code. Mukhoza kusankha chinenero msonkhano, kunyamulika makina code, makina malamulo kukumbukira fano.
- Retargeting. Pamene ya magudumu zabwino chimodzi polowera gawo. Pachifukwa chimenechi ndi bwino kuti jenereta wina Muzifunsa ziwalo zambiri.
kompayila Zomangamanga: zigawo
Awa ndi akuluakulu zinchito zigawo za kompayila kuti amapanga malamulo mbadwa (ngati pulogalamu linanena bungwe ndi pulogalamu mu C kapena makina pafupifupi musachite magawo ambiri):
- Pulogalamu athandizira (otaya zizindikiro) zimalowa ndi sikana (lexical chowunikira), amene otembenuka mu mtsinje wa mphatso.
- Parser (parser) kumanga umodzi umboni malembedwe mtengo.
- Zamalankhulidwe chowunikira linawola mfundo zamalankhulidwe ndi limafufuza mfundo mtengo chifukwa cha mphulupulu. Chifukwa cha zimenezi, anamanga zamalankhulidwe Zithunzi - umboni malembedwe mtengo ndi katundu zina ndi maulalo anakhazikitsa.
- Wapakatikati malamulo jenereta amanga otaya Zithunzi (tuples yagawidwa mmagawo yaikulu).
- Machine-palokha malamulo optimizer amachititsa onse m'deralo (mkati unit m'munsi) ndi padziko lonse (ku zokhumudwitsa zonse) kukhathamiritsa kwenikweni otsala mwa zofunika kuchita. Kumachepetsa malamulo kuthetsa ndipo zimatithandiza kuwerengetsera lapansi. Chifukwa ndi kusinthidwa otaya Zithunzi.
- Jenereta chimamanga chandamale malamulo midadada zofunika mu rectilinear kufala ulamuliro code, kulenga chinthu file assembler pafupifupi akaundula (mwina operewera).
- Machine amadalira optimizer, linker allocates kukumbukira pakati akaundula ndi kuvumbitsira akukonzekera magulu. Iwo amachita pulogalamu kutembenuka mu chinenero msonkhano pa msonkhano umenewu ndi ntchito bwino pipelining.
Komanso, ntchito ya subsystem woyang'anira zolakwa kudziwika ndi matebulo chizindikiro.
kusanthula Lexical (chindodo)
The sikana otembenuka otchulidwa mtsinje gwero mu mtsinje wa mphatso, kuchotsa whitespace, ndemanga komanso kukweza macros.
Zitsulo zofufuzira zidazo zambiri amakumana ndi mavuto, monga kapena kuganizira choncho, masamba wophwanya mzere ndi ndemanga ophatikizidwa.
Zolakwika zimene zingachitike pa chindodo, wotchedwa lexical ndipo zikuphatikiza:
- otchulidwa kuti simuli zilembo;
- owonjezera chiwerengero cha anthu otchulidwa mu mawu kapena mzere;
- osati chatsekedwa chizindikiro kapena chingwe zenizeni
- mapeto a file ndemanga.
Parsing (parsing)
The parser otembenuka ndondomeko ya zizindikiro mu umboni mtengo malembedwe. Aliyense mfundo mu mtengo kusungidwa chinthu ndi minda dzina lake, ambiri mwa iwo okha mtengo mfundo. Apa palibe m'zinthu. Pamene munakonza parser m'pofunika kulabadira mlingo wa kuchulukitsa kwa galamala (LL kapena LR) ndi kupeza ngati pali malangizo alionse disambiguation. M'zinenero pafupifupi amafuna kusanthula zamalankhulidwe.
Zolakwa opezeka pa nthawi imeneyi amatchedwa malembedwe. Mwachitsanzo:
- K = 5 * (7 - Y;
- J = / 5;
- 56 = × 4.
kusanthula zamalankhulidwe
Pa kusanthula zamalankhulidwe kufufuza permissibility malamulo ndi mbali kugwirizana pakati pa mtengo kuwerenga (kulola maina Buku kulowetsa ntchito kutembenuza mtundu silinatchulidwe, ndi zina zotero. D.) Pakuti kupanga Zithunzi zamalankhulidwe.
Mwachionekere, gulu la lagamula malamulo zinenero zosiyanasiyana osiyana. Ngati inu kulemba zinenero Java ngati, ankalemba akhoza kupeza:
- angapo variable kulengeza mwa ukulu;
- mawu onena kuti variable pamaso kulengeza ake;
- otchula dzina la undeclared;
- siudzalandilidwa ngathi lamulo la ufulu setifiketi;
- kwambiri kapena osakwanira chiwerengero cha mfundo ndi njira kuitana;
- mtundu mismatch.
m'badwo
Wapakatikati malamulo m'badwo umabala otaya Zithunzi wapangidwa tuples, yagawidwa mmagawo zofunika.
kachidindo m'badwo umabala weniweni makina code. Mu ankalemba mwambo wa RISC-makina pa sitepe yoyamba, inu kulenga assembler ndi chiwerengero wopandamalire wa akaundula pafupifupi. Pakuti CISC-makina mwina sizidzachitika.
Similar articles
Trending Now