Mavrica
JIT emulator za ZX Spectrum, ki teče neposredno na izvirni strojni opremi Iskra Delta Partner. Osnovna JIT infrastruktura je implementirana in deluje; projekt je v aktivnem razvoju.
Kaj je Mavrica
Mavrica je emulator za ZX Spectrum, napisan v celoti v Z80 zbirnem jeziku in zasnovan za izvajanje na realni strojni opremi Iskra Delta Partner. Cilj projekta je zagotoviti, da programska oprema, napisana za Spectrum, teče na sistemu Partner brez emulacije v emulatorju.
Namesto klasičnega interpretiranja ukazov Mavrica uporablja tehniko JIT (just-in-time): gostujočo kodo identificira po blokih, jih prevede ob prvem izvajanju in pri tem prestreže skoke ter krmilni tok.
JIT pristop
Emulator identificira osnovne bloke gostujoče kode in zamenja izhodne točke blokov z ukazom RST 38h. Ob zadetku te pasti se prestreže krmilni tok, zabeleži meje bloka, in izvajanje preide na naslednji blok — ki se prevede sproti, če še ni bil obdelan.
Prevedeni bloki se hranijo v tabeli, ki omogoča hitro zaznavanje skokov v že obdelana področja. Bloki se po potrebi razširijo ali združijo, da se zmanjša poraba pomnilnika.
Stanje razvoja
Osnovna JIT infrastruktura je implementirana: inicializacija metapodatkov, prevajanje blokov, past RST 38h in emulacija krmilnega toka (pogojni in brezpogojni skoki, klici, povratki). Projekt je v aktivnem razvoju; vhodno-izhodno prestreganice, emulacija zaslona in virtualizacija prekinitev so načrtovane v naslednji fazi.