Computer, Programming
Broadcaster - mao ... Matang sa mga nagtigom. Kinabig ug sa sibya sa mga programa
Mga programa, ingon man usab sa mga tawo sa paghubad gikan sa usa ka pinulongan ngadto sa laing gikinahanglan sa usa ka maghuhubad.
nag-unang mga konsepto
Ang programa mao ang usa ka pinulongan representasyon sa kalkulasyon: i → P → P (i). Usa ka maghuhubad mao ang usa ka programa nga naghatag sa input nga programa P ug ang uban input x. Kini naghimo sa P x: ako (P, x) = P (x). Ang kamatuoran nga adunay usa lamang ka maghuhubad mao ang makahimo sa pagbuhat sa tanan nga posible nga mga programa (nga mahimong nagrepresentar sa pormal nga sistema) mao ang usa ka kaayo nga lawom ug mahinungdanon nadiskobrehan Turing.
processor mao ang usa ka tighubad sa mga programa sa pinulongan machine. Kasagaran mahal kaayo sa pagsulat tighubad alang sa mga high-level nga mga pinulongan, mao nga sila paghubad ngadto sa usa ka porma nga mao ang mas sayon sa pagsaysay sa kahulogan.
Ang ubang mga matang sa mga maghuhubad adunay kaayo sa lain nga ngalan:
- assembler Ang naghubad sa mga programa katilingban pinulongan sa pinulongan machine.
- tighipos sa hubad sa usa ka high-level nga pinulongan ngadto sa usa ka ubos nga pinulongan.
Broadcaster - mao ang usa ka programa nga nagkinahanglan ingon nga data input sa programa sa pipila ka mga pinulongan S ug og T programa sa ingon nga paagi nga sila nga duha adunay sama nga semantiko: P → X → Q. Kana mao, ∀x. P (x) = Q (x).
Kon gisibya sa tibuok nga programa sa usa ka butang nga nagkahulogan, kini gitawag nga usa ka hinugpong sa atubangan sa pagpatay, o AOT hinugpong. AOT tighipos magamit sa sunod-sunod nga, sa ulahing sa nga mao ang kanunay nga ang assembler, alang sa panig-ingnan:
Ang source code tighipos → (maghuhubad) → → katilingban code assembler (tighipos) → → CPU machine code (tighubad).
Operational o dynamic hinugpong mahitabo kon ang programa gisibya, sa diha nga gipatay sa uban nga mga kanhi tinigum, hinipos nga bahin. JIT-tighipos paghinumdom unsa na ilang gibuhat aron dili sublion ang source code pag-usab ug pag-usab. gani sila og mapaigoigoon hinugpong ug recompilation base sa kinaiya sa programa sa pagpatay palibot.
Daghang mga pinulongan motugot sa pagpahamtang sa code sa pagtipon panahon ug sa pagtipon sa bag-ong code sa Runtime.
hubad stage
Sibya naglangkob sa mga lakang sa pag-analisar ug sa synthesizing:
Ang source code analyzer → → → konseptuwal representasyon generator (synthesizer) → Target code.
Kini mao ang tungod sa niini nga mga rason:
- Sa bisan unsa nga sa uban nga mga pamaagi dili angay. Pulong sa paghubad lamang wala magbuhat.
- Maayong engineering solusyon: kon gusto sa pagsulat maghuhubad alang sa M ug N tinubdan pinulongan target kinahanglan isulat lamang M + N yano nga mga programa (polukompilyatorov) kay sa M × A complex (kinatibuk-ang mga maghuhubad).
Apan, diha sa buhat, sa usa ka konseptuwal nga panglantaw sa usa ka kaayo nga panagsa ra makahuloganon igo ug gamhanan igo aron sa pagtabon sa matag mahunahunaan tinubdan ug target pinulongan. Samtang ang pipila nakahimo sa duol sa niini.
Tinuod nga tighipos moagi pinaagi sa daghang mga ang-ang. Kon maghimo og imong kaugalingon nga tighipos dili kinahanglan nga sublion sa tanan nga mga kahago nga ang mga tawo gibuhat sa paghimo sa mga hulagway ug mga generators. Ikaw mahimo paghubad sa imong pinulongan direkta sa JavaScript o C ug sa pagpahimulos sa kasamtangan nga JavaScript-engine ug ang C tighipos sa pagbuhat sa uban. Mahimo usab nga gamiton sa kasamtangan nga intermediate nga representasyon ug birtuwal mga makina.
rekord maghuhubad
Broadcaster - mao ang usa ka programa o hardware, nga nalambigit sa tulo ka mga pinulongan: ang tinubdan, ang destinasyon ug sa base. Sila mahimong gisulat sa usa ka T-porma, sa pagbutang sa orihinal nga wala, sa tuo ug target base sa ubos.
Adunay tulo ka mga matang sa mga nagtigom:
- Broadcaster - mao samokompilyator kon kini katumbas sa nag-unang mga tinubdan sa pinulongan.
- Tighipos nga target nga pinulongan mao ang baseline, nga gitawag samorezidentnym.
- Broadcaster - sa usa ka krus-tighipos, kon siya target ug nag-unang mga nagkalain-laing mga pinulongan.
Ngano nga kini mahinungdanon?
Bisan kon dili kamo paghimo sa usa ka tinuod nga tighipos, usa ka maayo nga kahibalo sa teknolohiya sa iyang paglalang, tungod kay ang konsepto nga gigamit alang niini nga katuyoan gigamit kaylap, alang sa panig-ingnan:
- formatting teksto;
- pangutana pinulongan sa mga database;
- abante computer arkitektura;
- kinatibuk-an pagkamalaumon mga problema;
- GUIs;
- scripting pinulongan;
- controller;
- virtual makina;
- Machine sa paghubad.
Dugang pa, kon kamo gusto sa pagsulat preprocessors, linkers, payloader, debuggers ug profilers, kamo kinahanglan gayud nga moadto sa samang mga lakang ingon sa pagsulat sa usa ka tighipos.
Ikaw mahimo usab nga makat-on sa unsa nga paagi sa pagsulat nga mas maayo nga mga programa, sukad sa paglalang sa maghuhubad alang sa pinulongan nagpasabot sa usa ka mas maayo nga pagsabut sa iyang mga intricacies ug mga pagduha-. Ang pagtuon sa mga kinatibuk-ang mga baruganan sa pagsibya nagtugot usab kaninyo nga mahimong usa ka maayo nga designer pinulongan. Busa ang importante kini kon sa unsang paagi nga bakilid sa pinulongan kon dili kini mahimong ipatuman sa epektibong paagi?
komprehensibo nga teknolohiya
tighipos teknolohiya naglangkob sa daghan nga nagkalain-laing mga dapit sa computer sa siyensiya:
- pormal nga teoriya sa pinulongan: gramatika, parsing, computability;
- computer arkitektura:. pahamatngon sets, RISC o CISC, pipelined pagproseso core orasan siklo, etc;
- konsepto sa programming mga pinulongan, alang sa panig-ingnan, sa pagbuhat sa usa ka han-ay sa pagpugong, conditional pagpatay, subli, recursion, operatiba kadugta, modularity, dungan, meta-programming, kasangkaran, kanunay sub-matang, templates, output matang, mga prototypes, nota, dagan, monads, mailboxes, padayon , wildcards, regular nga ekspresyon, transactional panumdoman, panulondon, polymorphism, setting mode, ug sa ingon sa uban pa..;
- abstract pinulongan ug birtuwal mga makina;
- algorithms ug mga data istruktura: regular nga mga ekspresyon, parsing algorithms, graphic algorithms, dinamikong programa, pagbansay-bansay;
- programming mga pinulongan: syntax, semantiko (nagahunong ug dinamikong), suporta paradigms (structural, oop, functional, makataronganon, stak, paralelismo, meta-programming);
- paglalang software (compilers, kasagaran dako ug komplikado): localization, caching, componentize, API-interface, pag-paggamit, dungan.
tighipos design
Ang pipila sa mga problema nga nasugatan sa sa pagpalambo sa sa tinuod nga maghuhubad:
- Mga problema uban sa tinubdan pinulongan. sayon sa pagtipon kini ba kini? Aduna bay usa ka preprocessor? Kon sa unsang paagi ang mga matang? Aduna bay usa ka librarya?
- Gihugpong tighipos passes: single o multi-dalan?
- Ang matang sa pagkamalaumon gitinguha. Puasa ug mahugaw nga sibya sa mga programa uban sa gamay o walay pagkamalaumon mahimong normal. Kapin sa-pagkamalaumon tighipos ang mahinay, apan mas maayo code sa Runtime mahimong bili niini.
- Ang gikinahanglan nga matang sa sayop detection. Mahimo ba sa usa ka maghuhubad lang mohunong sa unang sayop? Sa diha nga kini kinahanglan nga mohunong? Bisan sa pagsalig sa tighipos sayop pagtul-id?
- Ang anaa sa himan. Kon ang orihinal nga pinulongan dili kaayo gamay nga, ang scanner ug generator analyzers gikinahanglan. Adunay usab generators, code generator, apan sila dili kaayo komon.
- Matang sa target code nga namugna. Nga pinili nga gikan sa lunsay nga dugang o virtual machine code. O pagsulat og usa ka entry bahin nga nagmugna sa usa ka popular nga intermediate representasyon sama sa LLVM, RTL, o JVM. O sa paghimo sa usa ka hubad sa orihinal nga sa source code sa C o JavaScript.
- Ang format sa target code. nga imong mahimo sa pagpili sa usa ka katilingban nga pinulongan, usa ka madaladala nga makina code, machine code sa panumduman larawan.
- Retargeting. Sa diha nga ang hugpong sa mga generator maayo nga adunay usa ka komon nga luok nga bahin. Tungod niini nga rason nga kini mao ang labing maayo nga adunay usa ka generator alang sa input sa daghang mga bahin.
tighipos Arkitektura: components
Kini mao ang mga mayor nga operatiba nga sangkap sa usa ka tighipos nga og lumad nga code (kon ang output nga programa mao ang usa ka programa sa P o sa usa ka virtual makina, kamo kinahanglan nga dili kaayo daghan ang-ang):
- Ang input programa (dagan marka) ang gipakaon ngadto sa scanner (kadamuon analyzer), nga kinabig kini sa usa ka sapa sa mga ilhanan.
- Parser (parser) pagtukod sa usa ka abstract syntax kahoy.
- Semantiko analyzer decomposes sa semantiko impormasyon ug nagsusi sa kahoy binurotan alang sa mga sayop. Ingon sa usa ka resulta, nagtukod semantiko graph - abstract syntax kahoy uban sa dugang nga mga kabtangan ug sa mga malig-on sa mga sumpay.
- Intermediate code generator nagtukod sa usa ka dagan graph (tuples gigrupo ngadto sa nag-unang mga bloke).
- Machine-independente code optimizer nagpahigayon sa duha lokal nga (sa sulod sa yunit base) ug global (sa tanan nga mga bloke) pagkamalaumon batakan nabilin nga sa sulod sa buluhaton. Pagminus sagipo code ug mopayano sa mga kalkulasyon. Ang resulta mao ang usa ka giusab dagan graph.
- Generator nagbugkos target code nag-unang mga bloke sa usa ka rectilinear transmission sa kontrol code, pagmugna sa usa ka butang file assembler virtual rehistro (posible dili epektibo).
- Machine-nagsalig optimizer, linker naggahin handumanan tali sa mga rehistro ug naghimo sa pagplano teams. Kini nagabuhat sa programa sa pagkakabig sa katilingban nga pinulongan sa niini nga katilingban uban sa usa ka maayo nga paggamit sa pipelining.
Dugang pa, ang paggamit sa sayop detection bahin sa sistema sa manager ug simbolo lamesa.
Nga kadamuon pagtuki (gi-scan)
scanner Ang mga kinabig sa sapa tinubdan karakter sa usa ka sapa sa mga ilhanan, pagwagtang sa whitespace, mga komentaryo ug pagpalapad macros.
Scanner sagad makasugat problema, sama sa ba o dili sa pagkuha ngadto sa asoy sa kaso, kilid, linya higayon ug nalakip comments.
Mga sayop nga mahitabo sa panahon sa gi-scan, nga gitawag nga kadamuon ug naglakip sa:
- mga karakter nga dili sa alpabeto;
- sobra sa gidaghanon sa mga karakter sa usa ka pulong o linya;
- dili sa usa ka sirado nga ilhanan o sa usa ka hilo literal;
- katapusan sa file sa comment.
Parsing (parsing)
parser Ang mga kinabig sa han-ay sa mga ilhanan sa usa ka abstract syntax kahoy. Ang matag binurotan, hubag sa kahoy nga gitipigan nga ingon sa usa ka butang uban sa nga ginganlan kaumahan, sa daghan nga mga sa ilang kaugalingon sa kahoy binurotan. Sa niini nga yugto walay mga siklo. Sa diha nga sa paghimo kaninyo nga usa ka parser gikinahanglan sa pagbayad pagtagad ngadto sa ang-ang sa pagkakomplikado sa gramatika (LL o LR) ug makakaplag kon adunay bisan unsa nga mga lagda pagklaro. Ang ubang mga pinulongan nga nagkinahanglan semantiko pagtuki.
Mga sayop nga makita sa niini nga yugto gitawag syntax. Kay sa panig-ingnan:
- k = 5 * (7 - y;
- j = / 5;
- 56 = x * 4.
semantiko analysis
Atol sa semantiko pagtuki sa pagsusi sa mga permissibility sa mga lagda ug mga kauban bahin sa kahoy parse (pagtugot sa mga ngalan pakisayran pagsal-ot nga operasyon alang sa bug-os nga matang pagkakabig, ug sa ingon sa. D.) Kay pagtukod sa semantiko graph.
Tin-aw nga, ang hugpong sa mga admissibility sa mga lagda sa lain-laing mga pinulongan sa lain-laing. Kon pagtipon kaninyo sa Java-sama sa mga pinulongan, nagtigom aron sa pagpangita sa:
- daghang baryable deklarasyon sa sulod sa iyang kasangkaran;
- usa ka pakisayran ngadto sa usa ka baryable sa atubangan sa deklarasyon niini;
- paghisgot sa ngalan sa deklaradong;
- paglapas sa mga katungod sa patente;
- sobra o kulang nga gidaghanon sa mga argumento sa usa ka pamaagi nga tawag;
- matang mismatch.
kaliwatan
Intermediate code nga kaliwatan og dagan graph nga gilangkuban sa mga tuples, grupo ngadto sa nag-unang mga bloke.
code nga kaliwatan og usa ka tinuod nga machine code. Sa tradisyonal nga tighipos alang sa RISC-makina sa unang lakang, paghimo kaninyo nga usa ka assembler uban sa usa ka walay katapusan nga gidaghanon sa mga virtual rehistro. Kay CISC-makina tingali dili mahitabo.
Similar articles
Trending Now