Mezijazyk

Mezijazyk (anglicky intermediate language) je v informatice speciální jazyk využívaný abstraktním počítačem, jenž pomáhá v analýze počítačového programu. Termín mezijazyk je používán u překladačů pro označení mezikroku (odtud tedy mezijazyk) před generováním cílového strojového nebo objektového kódu. Mezikód je volen s ohledem na snadnější optimalizací nebo jiných transformací za účelem zlepšení jeho některých parametrů.

V lingvistice přirozených jazyků se jako mezijazyk označuje nářečí nebo idiolekt, v němž se mísí prvky dvou či více jazyků, například při osvojování druhého jazyka nebo v lokalitách, kde se dva jazyky ovlivňují a mísí.

Charakteristika

Mezijazyk se od normálního strojového kódu liší typicky ve třech základních aspektech:

  • každá instrukce vyjadřuje právě jednu základní operaci; např. nejsou přítomny operace „shift-add“, které jsou běžné v mikroprocesorech
  • informace o řídící struktuře (anglicky control flow information) nemusí být součástí instrukční sady
  • počet dostupných registrů může být velký, dokonce nekonečný

Oblíbeným formátem pro mezijazyky je tříadresní kód.

Variací významu termínu „mezijazyk“ jsou jazyky používané jako mezijazyky některými vyššími programovacími jazyky, jejichž výstupem není objektový nebo strojový kód, ale právě pouze mezijazyk. Mezijazyk je poté zpracován vlastním překladačem, jehož výstupem je finální objektový nebo strojový kód. Mezijazyk se zde používá kvůli optimalizaci nebo získání vyšší přenositelnosti (použitím mezijazyka, pro který existují překladače pro různé procesory, architektury a operační systémy, jako např. programovací jazyk C). Jazyky, které se takto používají, spadají svou komplexností mezi vyšší programovací jazyky a nižší programovací jazyky, jako např. jazyk symbolických adres.

Jazyky

Jazyk C

Jazyk C je využíván jako mezijazyk mnoha programovacími jazyky, využívá ho např. Eiffel, Sather, Esterel, některé dialekty Lispu (Lush, Gambit), Haskell (Glasgow Haskell Compiler), C odnož Squeak Slang, ale i další. Některé varianty jazyka C byly navrženy tak, aby poskytly vlastnosti přenositelnosti jazyku symbolických adres, například C--, C Intermediate Language.[1] a Low Level Virtual Machine

Java Bytecode

Java Bytecode (od Sun Microsystems) je mezijazyk vytvořený pro potřeby Java Virtual Machine do kterého se překládají zdrojové kódy v různých jazycích pro běh na platformě Java Virtual Machine. JVM pak může provést JIT kompilaci, při níž je vytvořen strojový kód, který dosahuje vyššího výkonu.

Common Intermediate Language

Common Intermediate Language (od Microsoftu) je obdobou Java Bytecode, ale pro platformu .NET. CIL je nezávislý na hardwarové platformě.

GCC

GNU Compiler Collection (GCC) používá vnitřně hned několik mezijazyků, aby zjednodušil přenositelnost a usnadnil křížovou kompilaci. Mezi tyto jazyky patří:

  • historický Register Transfer Language (RTL)
  • stromový jazyk GENERIC
  • na SSA založený GIMPLE

Parrot Intermediate Representation

Zatímco je většina mezijazyků navržena pro podporu staticky typovaných jazyků, Parrot Intermediate Representation je navržen pro podporu dynamicky typovaných jazyků (původně Perl a Python).

Reference

  1. Archivovaná kopie. manju.cs.berkeley.edu [online]. [cit. 2009-05-17]. Dostupné v archivu pořízeném dne 2008-05-09. 

Externí odkazy

V tomto článku byl použit překlad textu z článku Intermediate language na anglické Wikipedii.