Međujezik

S Vikipedije, slobodne enciklopedije

U informatici, međujezik je jezik apstraktne mašine, dizajnirana da pomogne u analizi kompjuterskih programa. Termin dolazi od njihove upotrebe u kompilatorima, gde je izvorni kod programa preveden u formu koja više odgovara kod-poboljšanje transformacije pre nego što se koristila za generisanje objekata ili mašinskkog koda za ciljnu mašinu. Dizajn međujezika tipično se razlikuje od praktičnog mašinskog jezika na tri osnovna načina:

Popularni format za međujezik je tri-adresni kod.

Ovaj termin se takođe koristi da označi jezike koji se koriste kao posrednici nekih programskih jezika na visokom nivou, koji nemaju izlazni objekat ili kod same mašine, ali samo međujezik kao izlaz. Ovaj međujezik se podnosi na kompilatoru za takav jezik, koji tada izlazi kao završni objekat ili mašinski kod. Ovo se obično radi da olakša proces optimizacije ili da poveća verovatnoću da pomoću međujezika koji ima prevodioce za mnoge procesore i operativne sisteme, kao što su C. Jezici koji se koriste između jezika na visokom nivou i jezika niskog nivoa , kao što su asemblerski jezici.

Međuproizvod[uredi | uredi izvor]

Međuproizvod je struktura podataka koja je izgrađena od ulaznih podataka u program, i iz kog dela ili svih izlaznih podataka programa je konstruisana za uzvrat. Upotreba termina obično podrazumeva da je većina informacija prisutna u ulaz ko je zadržan od strane međuproizvoda, sa daljim napomenama ili brzih funkcija.

Kanonski primer nalazimo u većini modernih kompajlera, gde selinearni ljudski čitljiv tekst koji predstavlja program pretvara u međustrukturu graf podataka koji omogućavaju analizu protoka i re-aranžmana pre početka pravljenja liste stvarnih instrukcija procesora koji će uraditi rad. Upotreba međuproizvoda dozvoljava kompajler sistemima kao što su GNU GCC i LLVM da budu na meti mnogih različitih izvornih jezika, i da podržavaju generaciju za različite ciljne arhitekture.

Jezici[uredi | uredi izvor]

Iako nije eksplicitno dizajniran kao međujezik, C kao apstraktni asemblerski i rasprostranjeni "de facto" kao sistemski jezik u Unix-like i drugim operativnim sistemima je napravio popularni međujezik:  Eiffel, Sather, Esterel, neki dijalekti Lisp-a (Lush, Gambit), Haskell (Glasgow Haskell Compiler), Squeak's Smalltalk-subset Slang, Cython, Seed7, SystemTap, Vala, i ostali napravljeni kao međujezici. Varijante C su dizajnirane da obezbede mogućnosti C kao portabl jeziku asemblera, uključujući C-- i C međujezik.

Bilo koji jezik s ciljem za virtuelnu mašinu može smatrati međujezikom:

GNU Compiler Collection (GCC) koristi nekoliko prelaznih jezika interno da se pojednostavi prenosivost i krst kompilacije. Među ovim jezicima su

LLVM kompilatorski okvir zasnovan na LLVM IR međujeziku, koji je osnovan od strane Apple kao "bajtkod".[1][2]

ILOC međujezik [3] se koristi u nastavi na kompajler dizajnu kao običan ciljani jezik.[4]

Drugo[uredi | uredi izvor]

Ostali statički alati za analizu koristite međuproizvod.

Na primer, radare2 je kutija za alat za analizu binarne datoteke i da poništi-inženjering. On koristi prelazne jezike ESIL [5]i REIL [6] da analizira binarne datoteke.

Reference[uredi | uredi izvor]

  1. ^ „Bitcode (iOS, watchOS)”. Hacker News. 10. 6. 2015. Pristupljeno 17. 6. 2015. 
  2. ^ „LLVM Bitcode File Format”. llvm.org. Pristupljeno 17. 6. 2015. 
  3. ^ "An ILOC Simulator" Arhivirano na sajtu Wayback Machine (7. maj 2009) by W. A. Barrett 2007, paraphrasing Keith Cooper and Linda Torczon, "Engineering a Compiler", Morgan Kaufmann. . 2004. ISBN 978-1-55860-698-2.  Nedostaje ili je prazan parametar |title= (pomoć)
  4. ^ "CISC 471 Compiler Design" by Uli Kremer
  5. ^ The radare2 contributors. „ESIL”. radare2 project. Pristupljeno 17. 6. 2015. 
  6. ^ Sebastian Porst (7. 3. 2010). „The REIL language – Part I”. zynamics.com. Pristupljeno 17. 6. 2015. 

Spoljašnje veze[uredi | uredi izvor]