Dynamická rekompilace - Dynamic recompilation
Spuštění programu |
---|
Obecné pojmy |
Typy kódu |
Kompilační strategie |
Pozoruhodné doby běhu |
|
Pozoruhodné kompilátory a řetězce nástrojů |
|
V informatice je dynamická rekompilace funkcí některých emulátorů a virtuálních počítačů , kde systém může během provádění překompilovat některou část programu . Kompilací během provádění může systém přizpůsobit generovaný kód tak, aby odrážel běhové prostředí programu, a potenciálně vytvářet efektivnější kód využíváním informací, které nejsou k dispozici tradičnímu statickému kompilátoru .
Využití
Většina dynamických rekompilátorů se používá k převodu strojového kódu mezi architekturami za běhu. To je úkol často potřebný při emulaci starších herních platforem. V ostatních případech může systém využívat dynamickou rekompilaci jako součást strategie adaptivní optimalizace k provedení reprezentace přenosného programu, jako jsou bajtové kódy Java nebo .NET Common Language Runtime . Ladicí programy s plnou rychlostí také využívají dynamickou rekompilaci, aby se snížila režie místa, která je způsobena většinou deoptimizačních technik, a další funkce, jako je dynamická migrace vláken .
Úkoly
Hlavní úkoly, které musí dynamický rekompiler provádět, jsou:
- Čtení strojového kódu ze zdrojové platformy
- Vysílání strojového kódu pro cílovou platformu
Dynamický rekompiler může také provádět některé pomocné úkoly:
- Správa mezipaměti překompilovaného kódu
- Aktualizace uplynulého počtu cyklů na platformách s registry počtu cyklů
- Správa kontroly přerušení
- Poskytování rozhraní virtualizovanému podpůrnému hardwaru, například GPU
- Optimalizace struktur kódu vyšší úrovně pro efektivní provoz na cílovém hardwaru (viz níže)
Aplikace
- Mnoho virtuálních strojů Java má dynamickou rekompilaci.
- Apple Rosetta pro Mac OS X na x86 umožňuje spuštění kódu PowerPC na architektuře x86 .
- Pozdější verze emulátoru Mac 68K používané v klasickém systému Mac OS ke spouštění kódu 680x0 na hardwaru PowerPC.
- Psyco , specializovaný kompilátor pro Python .
- Projekt HP Dynamo , příklad transparentního binárního dynamického optimalizátoru .
- DynamoRIO , open-source nástupce Dynama, který pracuje s instrukčními sadami ARM , x86-64 a IA-64 (Itanium).
- Virtual machine Vx32 zaměstnává dynamický recompilation vytvořit OS -independentní x86 architekturu karantény pro bezpečné použití zásuvných modulů .
- Microsoft Virtual PC pro Mac, používaný ke spouštění kódu x86 na PowerPC.
- FreeKEYB, mezinárodní ovladač klávesnice a konzoly DOS s mnoha vylepšeními použitelnosti, využíval samočinně se měnící kód a dynamické odstraňování mrtvého kódu k minimalizaci obrazu v paměti na základě jeho uživatelské konfigurace (vybrané funkce, jazyky, rozvržení) a aktuálního runtime prostředí (varianta OS a verze, načtené ovladače, základní hardware), automatické řešení závislostí, dynamické přemisťování a překombinování sekcí kódu na úrovni bajtů na úrovni bajtů a optimalizace opstrings na základě sémantických informací uvedených ve zdrojovém kódu, informace o přemístění generované speciálními nástroji během montáže a získané informace o profilu v době načítání.
- Předpokládá se, že funkce zpětné kompatibility Xbox 360 (tj. Běžící hry napsané pro původní Xbox ) využívá dynamickou rekompilaci.
- Apple Rosetta 2 pro Apple silicon umožňuje překlad mnoha aplikací kompilovaných pro procesory na bázi x86-64 k provedení na křemíku Apple.
Emulátory
- PCSX2 , emulátor Sony PlayStation 2 , má rekompilátor s názvem „microVU“, nástupce „SuperVU“.
- GCemu, emulátor Nintendo GameCube .
- GEM, emulátor Nintendo Game Boy pro MSX, používá optimalizační dynamický rekompilátor.
- DeSmuME, emulátor Nintendo DS , má možnost dynarec.
- Soywiz's Psp, emulátor Sony PlayStation Portable , má možnost dynarec.
- Mupen64Plus , multiplatformní emulátor Nintendo 64.
- Yabause , multiplatformní emulátor Saturnu .
Viz také
- Binární překompilovač
- Binární překlad
- Porovnání softwaru pro virtualizaci platforem
- Kompilace just-in-time
- Instrumentace (počítačové programování)