Pesquisa de site

O que é JIT? Como as regras da Apple estão impedindo os emuladores de jogos para iPhone


Principais conclusões

  • A compilação JIT é crucial para o desempenho do emulador, mas a Apple a restringe por motivos de segurança.
  • Os emuladores usam JIT para otimizar o desempenho recompilando o código dinamicamente.
  • As limitações da Apple podem mudar, mas por enquanto, os usuários do emulador devem esperar ou considerar o jailbreak.

Embora a Apple pareça ter aberto as comportas quando se trata de aplicativos emuladores no iPhone, iPad e Apple TV, você deve ter notado que certos sistemas estão visivelmente ausentes do menu. Há uma boa chance de que isso se deva ao fato de um recurso específico conhecido como compilação “JIT” ser restrito pelas regras da App Store.

O que é JIT?

Compilação JIT é a abreviação de compilação "Just In Time". Compilação é o processo de transformar código de programação em código de máquina. Você pode escrever algo, por exemplo, em código C e depois compilá-lo para qualquer sistema, seja uma CPU x86 encontrada na maioria dos computadores Windows ou uma CPU ARM encontrada em telefones celulares e tablets.

A compilação JIT, em oposição à compilação antecipada, tem inúmeras vantagens, entre elas a adaptabilidade ao que está acontecendo atualmente no computador e ao que o usuário está solicitando ao programa.

Por que os emuladores precisam do JIT?

Os desenvolvedores de emuladores descobriram que a abordagem JIT permite atingir níveis de desempenho e eficiência que de outra forma seriam impossíveis. Usando a técnica JIT, o código da CPU emulado do sistema original pode ser recompilado em código nativo para o sistema host de destino instantaneamente. Depois que esse código for recompilado, ele poderá ser armazenado em cache e usado na próxima vez que a mesma chamada for feita, sem compilar novamente.

Usando o método JIT, é possível criar código automodificável, que se tornou uma abordagem comum na emulação de videogames. Isto é necessário em alguns sistemas porque muitos sistemas mais antigos, particularmente sistemas baseados em cartucho, carregariam o código do cartucho de forma dinâmica e aparentemente arbitrária com base no estado exato do jogo. O JIT permite o tratamento dessa abordagem essencialmente em tempo real. O JIT também permite que o emulador otimize o código recompilado para aproveitar ao máximo o sistema host.

Não sou programador, mas mesmo do meu ponto de vista, o JIT parece uma ferramenta extremamente poderosa quando aplicado ao difícil problema da emulação, com base no que li.

Por que a Apple não permite o JIT?

Infelizmente, outro tipo de software que pode fazer ótimo uso do JIT e do código automodificável é o malware. Se um aplicativo pode gerar e executar código durante seu tempo de execução, isso abre a porta para todos os tipos de travessuras. Portanto, compilar todo o código com antecedência torna muito mais fácil garantir que o código seja seguro. A Apple provavelmente também não quer uma situação em que um aplicativo mude seu comportamento após ser aprovado. Algo que não pode acontecer se o código pré-compilado for estático.

O efeito indireto é que o software que depende de um recompilador JIT para funcionar em velocidades utilizáveis não será aprovado para a App Store. Esta é a razão apresentada para a ausência do popular emulador Dolphin.

Claro, existe uma alternativa ao recompilador JIT, chamado de "intérprete", mas é muitas vezes mais lento que o método JIT. Então, embora funcionasse, seria impossível de jogar. Ou teremos que esperar até o iPhone 30 para que o intérprete funcione rápido o suficiente, ou teremos que torcer para que a Apple afrouxe um pouco suas restrições.

As coisas ainda podem mudar

É o começo da cena de emulação na App Store convencional. A Apple ainda pode decidir afrouxar esse requisito para emuladores ou adaptar suas políticas para garantir um nível adequado de segurança para esses aplicativos. Provavelmente isso será algo que será resolvido entre aqueles que aprovam aplicativos e aqueles que os desenvolvem.

É claro que esse problema não existe para aqueles que fazem jailbreak em seus dispositivos, o que lhes permite fazer o sideload de qualquer código que desejarem. No entanto, eu não recomendaria a ninguém que fizesse isso sem um motivo muito bom e, para a maioria das pessoas, as desvantagens do jailbreak simplesmente não valem a pena poder jogar jogos retrô em seus dispositivos i.

Artigos relacionados