Nyckelalternativ
- JIT-kompilering är avgörande för emulatorprestanda, men Apple begränsar det av säkerhetsskäl.
- Emulatorer använder JIT för att optimera prestanda genom att kompilera om kod i farten.
- Apples begränsningar kan ändras, men för närvarande måste emulatoranvändare vänta eller överväga att jailbreaka.
Medan Apple verkar ha öppnat slussarna när det kommer till emulatorappar på iPhone, iPad och Apple TV, kanske du har märkt att vissa system påfallande saknas i menyn. Det finns en god chans att det beror på en specifik funktion som kallas "JIT" sammanställning begränsas av App Store-regler.
Vad är JIT?
JIT-kompilering är en förkortning för "Just In Time" kompilering. Kompilering är processen att omvandla programmeringskod till maskinkod. Du kan skriva något i till exempel C-kod och sedan kompilera det för vilket system som helst, oavsett om det är en x86 CPU som finns på de flesta Windows-datorer eller en ARM CPU som finns på mobiltelefoner och surfplattor.
JIT-kompilering, till skillnad från kompilering i förväg, har många fördelar, inte minst är anpassningsförmågan till vad som för närvarande händer på datorn och vad användaren ber programmet att göra.
Varför behöver emulatorer JIT?
Utvecklarna av emulatorer har funnit att JIT-metoden låter dem uppnå nivåer av prestanda och effektivitet som annars skulle vara omöjliga. Med hjälp av JIT-tekniken kan den emulerade CPU-koden från det ursprungliga systemet kompileras om till inbyggd kod för målvärdsystemet i farten. När den koden har kompilerats om kan den cachelagras och användas nästa gång samma anrop görs utan att kompilera igen.
Sydney Louw Butler/How-To Geek stark>
Med hjälp av JIT-metoden är det möjligt att skapa självmodifierande kod, vilket har blivit ett vanligt tillvägagångssätt inom videospelsemulering. Detta är nödvändigt i vissa system eftersom många äldre system, särskilt patronbaserade system, skulle ladda kod från kassetten dynamiskt och till synes godtyckligt baserat på det exakta speltillståndet. JIT möjliggör i huvudsak realtidshantering av detta tillvägagångssätt. JIT låter också emulatorn optimera den omkompilerade koden för att dra fördel av värdsystemet så mycket som möjligt.
Jag är ingen programmerare, men även ur min synvinkel verkar JIT vara ett extremt kraftfullt verktyg när det tillämpas på det svåra problemet med emulering, baserat på vad jag har läst.
Varför tillåter inte Apple JIT?
Tyvärr är en annan typ av programvara som kan dra stor nytta av JIT och självmodifierande kod skadlig kod. Om en app kan generera och exekvera kod under sin körning, öppnar det upp dörren för alla möjliga slagsmål. Att kompilera all kod i förväg gör det mycket lättare att säkerställa att koden är säker. Apple vill sannolikt inte heller ha en situation där en app ändrar sitt beteende efter att ha godkänts. Något som inte kan hända om den förkompilerade koden är statisk.
Koncerneffekten är den programvara som förlitar sig på en JIT-omkompilator för att arbeta med användbara hastigheter. #39;inte godkännas för App Store. Detta är anledningen till frånvaron av den populära Dolphin-emulatorn.
Naturligtvis finns det ett alternativ till en JIT-omkompilator, som kallas en “tolk”, men detta är många gånger långsammare än JIT-metoden. Så även om det skulle fungera, skulle det vara ospelbart. Antingen får vi vänta till iPhone 30 för att få tolken igång tillräckligt snabbt, eller så får vi hoppas att Apple lättar på sina restriktioner lite.
Saker kan fortfarande förändras
Det är tidiga dagar för emuleringsscenen i mainstream App Store. Apple kan ännu besluta sig för att lätta på detta krav för emulatorer, eller anpassa sina policyer för att säkerställa en adekvat säkerhetsnivå för dessa appar. Detta kommer sannolikt att vara något som har lösts mellan de som godkänner appar och de som utvecklar dem.
Naturligtvis finns det här problemet inte för dem som jailbreakar sina enheter, vilket låter dem sidladda vilken kod de vill. Jag skulle dock inte rekommendera någon att göra det utan en fruktansvärt bra anledning, och för de flesta är nackdelarna med jailbreaking helt enkelt inte värda att kunna spela retrospel på sina i-enheter.
Leave a Reply
You must be logged in to post a comment.