3. MSIL

Spustíme-li aplikaci o jejíž provádění se stará CLR, hovoříme o řízeném kódu. Pokud je spuštěna aplikace která není napsaná pro prostředí .NET, nebo se výhod řízeného kódu explicitně zřekneme, je kód neřízený. Ne všechny jazyky umí generovat řízený kód. Příkladem jazyka s absolutní volností je jazyk C++.

Výsledkem kompilátoru jazyka schopného generovat řízený kód je MSIL - MicroSoft Intermediate Language. MSIL je procesorově nezávislý jazyk podobný assembleru. Oproti asembleru je však mnohem vyspělejší. Umí pracovat s objekty, volat virtuální metody, pracovat s prvky pole nebo zpracovávat výjimky. Důvodem pro zavedení tohoto jazyka je snaha o jednoduché přenášení existujícího kódu mezi různými platformami. V současné době neexistuje procesor, na kterém by šlo provádět instrukce MSIL, proto CLR před vlastním spuštěním kompiluje (pomocí JIT kompilátoru) MSIL instrukce do nativního kódu na dané, konkrétní platformě. Hlavní výhodou použití intermediárního jazyka je platformní nezávislost.

3.1. JIT Kompilátor

Obecně se používají se tři druhy JIT kompilátorů.

  1. Provádějící překlad v době instalace – pak se již podstatě nejedná o JIT kompilátor. Výhodou je odstranění zpoždění, které samotný překlad způsobuje.

  2. Skutečný JIT překladač – před samotným spuštěním je aplikace přeložena do nativního kódu dané platformy. Výsledek je srovnatelný s produktem konvenčního překladače. Nevýhodou je zpoždění při zavádění aplikace do operační paměti a zpomalení započatí jejího vykonávání.

  3. Ekonomický JIT překladač – provádí partikulární překlad programu. Jsou překládány jen ty části, které jsou zrovna potřeba. Hlavní výhodou jsou menší paměťové nároky.