Cos'è il JIT? In che modo le regole di Apple frenano gli emulatori di giochi per iPhone

Concetti chiave

  • La compilazione JIT è fondamentale per le prestazioni dell'emulatore, ma Apple la limita per motivi di sicurezza.
  • Gli emulatori utilizzano JIT per ottimizzare le prestazioni ricompilando il codice al volo.
  • Le limitazioni di Apple potrebbero cambiare, ma per ora gli utenti dell'emulatore devono attendere o prendere in considerazione il jailbreak.

Mentre Apple sembra aver aperto le porte quando si tratta di app di emulazione su iPhone, iPad e Apple TV, potresti aver notato che alcuni sistemi mancano vistosamente dal menu. C'è una buona probabilità che ciò sia dovuto a una funzionalità specifica nota come "JIT" la compilazione è limitata dalle regole dell'App Store.

Che cos'è JIT?

La compilazione JIT è l'abbreviazione di "Just In Time" compilazione. La compilazione è il processo di trasformazione del codice di programmazione in codice macchina. Puoi scrivere qualcosa, ad esempio, in codice C e quindi compilarlo per qualsiasi sistema, sia che si tratti di una CPU x86 come si trova sulla maggior parte dei computer Windows o di una CPU ARM come si trova su telefoni cellulari e tablet.

La compilazione JIT, a differenza della compilazione anticipata, presenta numerosi vantaggi, non ultimo dei quali l'adattabilità a ciò che sta accadendo attualmente sul computer e a ciò che l'utente chiede al programma di fare.

Perché gli emulatori hanno bisogno di JIT?

Gli sviluppatori di emulatori hanno scoperto che l'approccio JIT consente loro di raggiungere livelli di prestazioni ed efficienza altrimenti impossibili. Utilizzando la tecnica JIT, il codice CPU emulato dal sistema originale può essere ricompilato al volo in codice nativo per il sistema host di destinazione. Una volta che il codice è stato ricompilato, può essere memorizzato nella cache e utilizzato la prossima volta che viene effettuata la stessa chiamata senza doverlo compilare nuovamente.

Sydney Louw Butler/Geek delle istruzioni

Utilizzando il metodo JIT, è possibile creare codice automodificante, che è diventato un approccio comune nell'emulazione dei videogiochi. Ciò è necessario in alcuni sistemi perché molti sistemi più vecchi, in particolare quelli basati su cartuccia, caricavano il codice dalla cartuccia in modo dinamico e apparentemente arbitrario in base allo stato esatto del gioco. JIT consente la gestione essenzialmente in tempo reale di questo approccio. JIT consente inoltre all'emulatore di ottimizzare il codice ricompilato per sfruttare il più possibile il sistema host.

Non sono un programmatore, ma anche dal mio punto di vista, JIT sembra uno strumento estremamente potente quando applicato al difficile problema dell'emulazione, in base a ciò che ho letto.

Perché Apple non consente JIT?

Sfortunatamente, un altro tipo di software che può fare un ottimo uso del JIT e del codice automodificante è il malware. Se un'app può generare ed eseguire codice durante il suo runtime, ciò apre la porta a tutti i tipi di imbrogli. Pertanto, compilare tutto il codice in anticipo rende molto più semplice garantire che il codice sia sicuro. Probabilmente Apple non vuole avere una situazione in cui un'app cambia il suo comportamento dopo essere stata approvata. Qualcosa che non può accadere se il codice precompilato è statico.

L'effetto a catena è che il software che si basa su un ricompilatore JIT per funzionare a velocità utilizzabili ha vinto& Non sarà approvato per l'App Store. Questo è il motivo addotto per l'assenza del popolare emulatore Dolphin.

Naturalmente esiste un'alternativa al ricompilatore JIT, chiamato “interprete”, ma questo è molte volte più lento del metodo JIT. Quindi, anche se funzionerebbe, sarebbe ingiocabile. O dovremo aspettare fino all'iPhone 30 per far funzionare l'interprete abbastanza velocemente, oppure dobbiamo sperare che Apple allenti un po' le sue restrizioni.

Le cose potrebbero ancora cambiare

Siamo agli inizi per la scena dell'emulazione sull'App Store mainstream. Apple potrebbe ancora decidere di allentare questo requisito per gli emulatori o di adattare le proprie politiche per garantire un livello adeguato di sicurezza per queste app. Questo sarà probabilmente qualcosa che ha funzionato tra coloro che approvano le app e coloro che le sviluppano.

Naturalmente, questo problema non esiste per coloro che eseguono il jailbreak dei propri dispositivi, il che consente loro di eseguire il sideload di qualsiasi codice desiderino. Tuttavia, non consiglierei a nessuno di farlo senza una ragione terribilmente buona, e per la maggior parte delle persone gli svantaggi del jailbreak semplicemente non valgono la possibilità di giocare a giochi retrò sui propri i-device.


Posted

in

by

Tags:

Comments

Leave a Reply