CoimpiutaireanPrò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

 

 

 

 

Newest

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