Coimpiutairean, Prògramadh
Craoladair - 'S e ... Types of trusaiche. Convert agus craoladh phrògraman
Programmes, cho math ri daoine eadar-theangachadh bhon chànan eile feum air eadar-theangair no eadar-theangair.
bun-bheachdan
Tha am prògram cànain riochdachadh àireamhachadh: i → → P P (i). An eadar-theangair 'S e prògram a tha air a sholarachadh don a' cur prògram D agus cuid a 'cur x. Tha e a 'cluich aig P x: I (P, x) = P (x). Tha gun chan eil ach aon eadar-theangair tha comasach air a 'coileanadh a h-uile comasach air prògraman (a dh'fhaodas a bhith air a riochdachadh ann an siostam foirmeil)' S e fìor domhainn agus mòr a lorg Turing.
Tha an giullachair-'S e eadar-theangair de phrògraman ann an inneal-chànan. San fharsaingeachd ro dhaor a 'sgrìobhadh airson eadar-mhìnearan àrd-ìre cànain, agus mar sin iad eadar-theangachadh gu riochd a tha nas fhasa a mhìneachadh.
Tha cuid de sheòrsaichean eadar-theangairean a tha glè neònach ainmean:
- Tha assembler eadar-theangachadh Seanadh prògraman cànain a-steach do inneal cànan.
- Tha cruinneachadh eadar-theangachadh àrd-ìre cànain do ìsle cànan.
Craoladair - 'S e prògram a tha a' gabhail a-steach dàta mar a 'phrògram ann an cuid de chànan agus a' dèanamh S T phrògram ann an leithid de dhòigh agus gu bheil iad an dà chuid tha an aon semeantaig: P → → X C. 'S e sin, ∀x. D (x) = Q (x).
Ma chraoladh air fad a 'phrògram ann an rudeigin interpretable, ainm a tha air a chruinneachadh mus bàs, no aot chruinneachadh. Aot compiler faodar a chleachdadh ann an sreath, an dàrna de a tha gu tric a 'assembler, mar eisimpleir:
Tha tùs a 'chòd ri chèile → (eadar-theangaiche) → → seanadh code assembler (compiler) → → CPU inneal code (eadar-theangair).
Obrachaidh no fiùghantach-chruinneachadh a 'tachairt ma tha am prògram a chraoladh, nuair a chur gu bàs le eile a chur ri chèile roimhe seo pàirt. JIT-trusaiche cuimhn 'am dè tha iad air a dhèanamh mar-thà mar nach ràdh a-rithist a' chòd a-rithist agus a-rithist. Faodaidh iad fiù 's a dhèanamh sùbailte-chruinneachadh agus recompilation stèidhichte air a' giùlan a 'phrògram bàs àrainneachd.
Tha mòran chànanan a cheadachadh gus gnìomh code ri chèile aig àm a chur ri chèile agus an còd ùr aig runtime.
eadar-theangachadh àrd-ùrlar
Broadcast gabhail a-steach an staidhre a 'dèanamh anailis agus a' Co-chur:
Tha a 'chòd analyzer → → → bun-bheachdail riochdachadh gineadair (synthesizer) → Targaid còd.
Tha seo air sgàth adhbharan sin:
- Sam bith eile a chleachdadh nach eil freagarrach. Word eadar-theangachadh dìreach nach eil ag obrachadh.
- Math innleadaireachd fuasgladh: ma tha sibh airson sgrìobhadh agus eadar-theangairean airson M N tùs cànain cuimsichte a leas a sgrìobhadh a-mhàin M + N sìmplidh prògraman (polukompilyatorov) seach M × N iom-fhillte (gu h-iomlan eadar-theangairean).
Ach, ann an cleachdadh, ann an bun-bheachdail sealladh glè ainneamh a chruthachail gu leòr agus cumhachdach gu leòr airson a 'còmhdach gach companaidhean tobar agus an targaid cànan. Ged a bha cuid a bha comasach air tighinn faisg air an seo.
Fìor trusaiche 'dol tro iomadh ìre. Nuair a cruthachadh agad fhèin a chur ri chèile chan eil feum a h-uile an obair chruaidh a tha daoine air a dhèanamh gus a chruthachadh riochdachaidhean agus gineadairean. 'S urrainn dhut eadar-theangachadh ann an cànain agaibh dìreach no JavaScript C agus brath a ghabhail ann an-dràsta JavaScript-einnsean agus an C compiler a dhèanamh a' chòrr. Faodaidh tu cuideachd a 'cleachdadh an eadar-mheadhanach a th' ann riochdachadh agus mas-fhìor innealan.
'chlàr-eadar-theangair
Craoladair - tha prògram no bathar-cruaidh, a tha an sàs ann an trì cànanan: an tùs, an ceann-uidhe agus a 'bhonn. Faodaidh iad a bhith sgrìobhte ann an cumadh T-, a 'cur a' chiad làimh chlì, ceart agus targaid a 'bhunait gu h-ìosal.
Tha trì seòrsachan an trusaiche:
- Craoladair - 'S e samokompilyator ma tha e co-ionann ris an bunaiteach an tùs cànan.
- A chur ri chèile a tha a 'cuimseachadh air cànan a tha bunaiteach, ris an canar samorezidentnym.
- Craoladair - tar-chur ri chèile, ma tha e a 'cuimseachadh agus bunaiteach diofar chànanan.
Carson a tha seo cudromach?
Fiù 's ma tha thu riamh mòr a dhèanamh ri chèile, deagh eòlas air an teicneòlas a' cruthachadh, a chionn 'bhun-bheachd a chleachdadh airson an adhbhair seo air a chleachdadh fad is farsaing, mar eisimpleir:
- cruth teacsa;
- cànan ceistean gus stòran-dàta;
- adhartach a 'choimpiutair ailtireachd;
- farsaing optimization duilgheadasan;
- GUIs;
- sgrìobhadh-chànanan;
- rianadairean;
- virtual innealan;
- Machine eadar-theangachadh.
A thuilleadh air sin, ma tha sibh airson sgrìobhadh preprocessors, linkers, loaders, debuggers agus profilers, feumaidh tu a dhol tro na h-aon ceuman 'sa a' sgrìobhadh ri chèile.
Faodaidh tu cuideachd ag ionnsachadh mar a sgrìobhadh na b 'fheàrr na prògraman, bhon a' cruthachadh an eadar-theangair airson a 'chànain a' ciallachadh tuigse nas fheàrr aca agus gainne ambiguities. Tha an sgrùdadh air prionnsabalan coitcheann a 'craoladh cuideachd a' leigeil leat a bhith math dealbhaiche cànan. Mar sin, chan e gu diofar ciamar a chas an cànan eile ma nach gabh a chur an gnìomh gu h-èifeachdach?
coileanta teicneòlas
compiler teicneòlas a 'còmhdach mòran diofar raointean de saidheans coimpiutaireachd:
- foirmeil teòiridh cànain: gràmar, parsadh, computability;
- coimpiutair ailtireachd: stiùireadh, seataichean RISC no CISC, pipelined giollachd prìomh gleoc baidhsagal, msaa.;
- bun-bheachdan de phrògraman cànain, mar eisimpleir, a 'dèanamh sreath smachd, air chumha gu bàs, chuairt, recursion, fuincseanach lobhadh, modularity, synchronization, meta-phrògraman, farsaingeachd, daonnan fo-sheòrsaichean, teamplaidean, toradh seòrsa, Prototypes, notaichean, sruth, monads, mailboxes, a' leantainn , wildcards, gu cunbhalach a chur an cèill, gnothachail cuimhne, oighreachd, polymorphism, modh roghainnean, agus mar sin air. msaa.;
- eas-chànanan agus mas-fhìor innealan;
- -aontaran agus dàta structaran: cunbhalach abairtean, parsadh-aontaran, grafaig-aontaran, fiùghantach phrògraman, trèanadh;
- prògraman-chànanan: sheantansan, semeantaig (socrach agus fiùghantach), taic paradigms (structarail, OOP, feumail, rianail, cruach, parallelism, meta-phrògraman);
- cruthachadh bathar-bog (trusaiche, mar as trice mòra agus iom-fhillte): localization, Tasgadh, componentize, API-nall, ath-chleachdadh, synchronization.
compiler dealbhadh
Tha cuid de na duilgheadasan a thachair ann an leasachadh an fhìor eadar-theangaiche:
- Duilgheadasan le 'an tùs a' chànain. A bheil e furasta a chur ri chèile a tha e? Bheil preprocessor? Ciamar a tha an t-seòrsa? Bheil leabharlann?
- Bhuidhneachaidh b 'compiler bealaichean: singilte no ioma-slighe?
- Tha an ìre de optimization leat. Fast agus neòghlan craolaidh phrògraman le glè bheag no gun optimization urrainn a bhith àbhaisteach. Thar-optimization compiler Bidh slaodach, ach b 'fheàrr aig an còd runtime dòcha gum b' fhiach e.
- Tha feum air ceum mearachd a lorg. Faodaidh eadar-theangair dìreach a 'stad aig a' chiad mearachd? Nuair a bu chòir stad a chur air? Co dhiubh a earbsa a chur ri chèile mearachd a cheartachadh?
- Tha cothrom air innealan. Ma chànan thùsail Chan eil e glè bheag, agus an sganair generator analyzers tha a dhìth. Tha cuideachd gineadairean, code gineadairean, ach chan eil iad cho cumanta.
- Seòrsa targaid còd a chruthachadh. A bhith air a thaghadh bho ghlan cur no air-loidhne inneal còd. No dìreach a 'sgrìobhadh an inntrigidh chuibhrionn a' cruthachadh a 'còrdadh eadar-mheadhanach riochdachadh mar LLVM, RTL, no JVM. No a 'dèanamh eadar-theangachadh de tùsail ann an chòd ann an C no JavaScript.
- Tha cruth na targaid an còd. Faodaidh tu roghnachadh seanadh cànan, ghluasadach inneal code, inneal code cuimhne ìomhaigh.
- Retargeting. Nuair a seata de gineadairean e math a bhith cumanta caolas cuibhrionn. Airson an adhbhar seo, tha e nas fheàrr a bhith aig aon gineadair airson beachdan an iomadh pàirt.
compiler Architecture: phàirtean
Tha iad seo na prìomh phàirtean de fuincseanach a chur ri chèile a tha a 'gineadh dùthchasach code (ma tha an toradh a tha am prògram a' phrògram ann an C no mas-fhìor an inneal agad, feumaidh tu nach eil cho iomadh ìre):
- Tha a-steach prògram (sruth comharran) a bhiadhadh a-steach do sganair (briathrachais analyzer), a tha ga thionndadh gu sruth de chomharran.
- Parser (parser) a 'togail aon eas-chruthach sheantansan craobh.
- Semantic analyzer decomposes an Semantic fiosrachadh agus seicichean a 'chraobh àiteachan airson mhearachdan. Mar thoradh air, a chaidh a thogail Semantic graf - eas-chruthach sheantansan craobh a bharrachd feartan agus na ceanglaichean a stèidheachadh.
- Eadar-mheadhanach code generator togail sruth Graf (tuples tha an cruinneachadh a-steach prìomh bhlocaichean).
- Machine-code optimizer neo-eisimeileach a 'dèanamh an dà chuid ionadail (taobh a-staigh ionad aonad) agus cruinneil (a h-uile blocaichean) optimization fìrinn air fhàgail taobh a-staigh an aonaid. A 'gearradh sìos air nach eil feum agus a' chòd simplifies an àireamhachadh. Tha seo a mhùthadh sruth ghraf.
- Generator cheangaileas targaid code blocaichean bunaiteach a-steach rectilinear smachd sgaoilidh code, a 'cruthachadh rud faidhl assembler virtual clàran (' s dòcha neo-èifeachdach).
- Machine-eisimeil optimizer, linker riarachadh chuimhneachan eadar clàran agus a 'dèanamh planadh sgiobaidhean. Tha e a 'cluich an iompachadh phrògram ann an coimhthional an cànan aig an t-seanadh le deagh fheum de pipelining.
A thuilleadh air sin, a 'cleachdadh na mearachd a lorg subsystem manaidsear agus samhla bùird.
Briathrachais anailis (sganaidh)
Tha an scanair converts an allt tùs caractaran ann an allt de chomharran, a thoirt air falbh whitespace, beachdan agus a 'leudachadh macros.
Scanairean gu tric a 'tighinn tarsainn air duilgheadasan, leithid bheil no nach eil a' gabhail a-steach a 'chùis, oirean, loidhne a' briseadh agus beachdan a dhaingneachadh.
Mearachdan a dh'fhaodadh tachairt nuair a sganaidh ris an canar briathrachais agus nam measg:
- caractaran nach eil ann an aibidil;
- a bharrachd air an àireamh de charactaran ann an facal no loidhne;
- Cha dùinte soidhne no sreang litireil;
- deireadh an fhaidhle am beachd ann.
Parsadh (parsadh)
Tha parser converts an t-sreath de chomharran a-steach dhan an eas-chruthach sheantansan craobh. Tha gach node anns a 'chraoibh a stòradh mar nì ainmeachadh le achaidhean, mòran dhiubh a tha iad fhèin a' chraobh àiteachan. Aig an ìre seo chan eil baidhsagal. Nuair a chruthaicheas tu parser tha riatanach gus aire gu ìre toinnteachd gràmar (LL no LR) agus faighinn a-mach co dhiubh a tha soilleireachadh riaghailtean sam bith. Nithean cànain a bhios feum Semantic mion-sgrùdadh.
Mearachdan a lorg aig an ìre seo tha an t-ainm sheantansan. Mar eisimpleir:
- k = 5 * (7 - y;
- j = / 5;
- 56 = x * 4.
Semantic mion-sgrùdadh
Rè na Semantic mion-sgrùdadh sùil air an permissibility de riaghailtean agus leas-pàirtean den parse craobh (leigeil le iomradh air ainmean inserting obrachadh airson fillte a-staigh an seòrsa iompachadh, agus mar sin air. D.) Airson an cruthachadh Semantic ghraf.
Gun teagamh, an t-seata de riaghailtean ceadachaidh ann an diofar chànanan eadar-dhealaichte. Ma tha thu a chur ri chèile an-Java mar chànanan, an trusaiche dòcha lorg:
- ioma dearbhadh caochlaideach taobh a-staigh raon;
- iomradh air caochladair mus deach a dearbhadh;
- iomraidhean an ainm an undeclared;
- bristeadh air còireachan;
- cus no gu leòr àireamh de argamaidean ann an dòigh ghairm;
- -seòrsa luaidh air dìth cothromachaidh.
ghinealach
Eadar-mheadhanach code ghinealach sruth a 'dèanamh graf a dhèanamh de tuples, buidhnean-steach blocaichean bunaiteach.
Còd a 'ghinealach a' dèanamh fìor inneal còd. Ann an trusaiche traidiseanta airson a 'RISC-innealan air a' chiad cheum, tha thu a chruthachadh assembler le àireamh neo-chrìochnach de virtual clàran. Airson CISC-innealan 's dòcha nach tachair sin.
Similar articles
Trending Now