Recompilation dynamique
Dans le de l'informatique, la recompilation dynamique (parfois abrégé à dynarec ) est un dispositif de quelques émulateurs et de machines virtuelles où le système peut recompile une certaine partie d'un du programme pendant l'exécution . Par la compilation pendant l'exécution, le système peut travailler le code produit pour refléter l'environnement d'exécution du programme, et peut-être produit un code plus efficace par l'exploitation de l'information qui n'est pas disponible à un compilateur statique traditionnel . Le
dans d'autres cas, un système peut utiliser la recompilation dynamique en tant qu'élément d'une stratégie de l'optimisation adaptative pour exécuter un programme portatif représentation les bytecodes d'exécution du langage commun telle que Java ou de de . Les programmes de mise au point à toute vitesse pourraient également l'utiliser pour réduire les frais généraux de l'espace encourus dans la plupart des techniques de Deoptimization , et beaucoup d'autres dispositifs tels que le dynamique filètent la migration .
Exemple
Supposer qu'un programme est lancé dans un émulateur et doit copier une corde nul-terminée . Le programme est compilé à l'origine pour un processeur très simple. Ce processeur peut seulement copier un byte à la fois, et doit faire ainsi par la première lecture il de la corde de source dans un registre , puis écriture il à partir de ce registre dans la corde de destination. Le programme original pourrait regarder n'importe quoi de pareil : lang=asm> de
L'émulateur pourrait fonctionner sur un processeur qui est semblable, mais extrêmement bon aux cordes de copie, et l'émulateur sait qu'il peut tirer profit de ceci. Il pourrait identifier l'ordre de copie de corde des instructions et décider de les récrire plus efficacement juste avant l'exécution, pour accélérer l'émulation.
Dire qu'il y a une instruction sur notre nouveau processeur appelé les movs de , spécifiquement conçus pour copier des cordes efficacement. Notre instruction théorique de movs copie 16 bytes à la fois, sans devoir les charger dans le registre C dans l'intervalle, mais s'arrêtera si elle copie des 0 bytes (qui marque l'extrémité d'une corde) et plaçait le drapeau zéro. Elle sait également que les adresses des cordes seront dedans enregistre A et B, ainsi il incrémente A et B par 16 chaque fois qu'il s'exécute, préparent pour la prochaine copie.
Notre nouveau code recompiled pourrait regarder n'importe quoi de pareil :
Il y a un avantage immédiat de vitesse simplement parce que le processeur ne doit pas charger ainsi beaucoup d'instructions de faire la même tâche, mais également parce que l'instruction de movs est susceptible d'être optimisée par le concepteur de processeur pour être plus efficace que l'ordre utilisé dans le premier exemple (par exemple il peut faire une meilleure utilisation de l'exécution parallèle dans le processeur d'incrémenter A et B tandis qu'il copie toujours des bytes).
Produits using la recompilation dynamique
Beaucoup recompilation dynamique de dispositif des machines virtuelles de de Java de . Le nouveau d'Apple Rosetta pour OS X de Mac sur x86, permet au code de PowerPC d'être couru sur l'architecture x86.
Versions postérieures de l'émulateur de Mac 68K de employé dans OS de Mac de pour courir le code du 680x0 sur le matériel de PowerPC .
Psyco , un spécialisant le compilateur pour le python .
Le projet , un exemple de dynamo de de HP d'un optimiseur dynamique binaire transparent .
La machine virtuelle du VX32 utilise la recompilation dynamique pour créer OS - sandboxes indépendants de du x86-architecture pour les connexions sûres d'application.
PC virtuel pour le Mac, utilisé pour courir le code du X86 sur PowerPC.
QEMU , un plein émulateur de système d'ouvrir-source.
On assume que largement ascendant la fonctionnalité de compatibilité du Xbox 360 (c. offensives terrestres écrites pour le original Xbox ) emploie la recompilation dynamique.
Le Dauphin-Emu, un émule de Nintendo Gamecube, a une option de dynarec.
| Random links: | Hispaniola | Tengku Intan Zaharah | Chaîne d'Aravalli | Louis Vuitton mettent en forme de tasse | ISMAI | Recompilación_dinámica |