Le code morphing est un terme marketing pour désigner de la traduction dynamique de code. i.e. un bloc d'instructions source (genre m68k) est converti en une séquence d'instructions du processeur cible (genre x86).
Dans le cadre d'un interpréteur type "inline threaded", au lieu de générer une séquence de labels gérant une opération donnée ("direct threaded"), on copie tout simplement le code correspondant au traitement de l'opération. Ce code est statique. Par contre, il y a un assemblage dynamique de ces bouts de code.
Bien sûr, le lecteur consultera son article pour de plus amples informations. Je crois qu'Objective Caml utilise ce mode d'interprétation. Idem pour SableVM.
Sinon, il y a aussi qemu à voir, il reprend ces techniques de manière plus générale pour écrire un JIT compiler simple{,ment} mais très portable. http://fabrice.bellard.free.fr/qemu/(...)
[^] # Re: Interpréteur Java
Posté par Gwenole Beauchesne . En réponse à la dépêche GCC 3.3 est sorti. Évalué à 6.
Dans le cadre d'un interpréteur type "inline threaded", au lieu de générer une séquence de labels gérant une opération donnée ("direct threaded"), on copie tout simplement le code correspondant au traitement de l'opération. Ce code est statique. Par contre, il y a un assemblage dynamique de ces bouts de code.
Au lieu de sortir un exemple pourri à la va-vite, j'ai retrouvé un mini programme de test illustrant ces concepts.
http://www-sor.inria.fr/~piumarta/pldi98/vm.c(...)
Bien sûr, le lecteur consultera son article pour de plus amples informations. Je crois qu'Objective Caml utilise ce mode d'interprétation. Idem pour SableVM.
Sinon, il y a aussi qemu à voir, il reprend ces techniques de manière plus générale pour écrire un JIT compiler simple{,ment} mais très portable.
http://fabrice.bellard.free.fr/qemu/(...)