Je suis curieuse de savoir comment implémenter inline expansion. J'écris mon propre compilateur juste pour le plaisir et l'éducation. J'apprends beaucoup par l'exemple, donc si quelqu'un peut me fournir un algorithme qui ne m'introduit pas, cela m'aiderait beaucoup.Implémentation de l'extension inline
Je préfère en C++ mais le langage n'a pas d'importance.
La langue cible pour laquelle j'essaie d'écrire est JavaScript. Pour clarifier, je cherche des façons d'améliorer ShrinkSafe. GWT intègre les fonctions javascript, ce qui est possible. GWT effectue une initialisation avant l'exécution du code.
Quelles heuristiques dois-je utiliser? A quoi ressemblerait le code? Comment vérifier si l'expression est une expression à heure constante? –
Vous recherchez essentiellement des modèles courants tels que "PUSH Reg1; PUSH Reg2; POP Reg3; POP Reg1;" - les instructions PUSH sont ce qui reste de la configuration de l'argument appelant; les POP proviennent du prologue en ligne. Ces 4 ins peuvent être réécrits comme "MOV Reg2 -> REG3", un seul ins. Le type exact de motifs que vous trouverez dans l'optimiseur est bien sûr déterminé par le flux d'instructions émis par * votre * compilateur, donc vous êtes l'expert en la matière. – MSalters