Patent WO-9215944-A1 (WO)
Title: Interface pour la representation des effets dans un programme compilateur optimiseur multilangage
Inventor: FAIMAN ROBERT NEIL JR
IPC: G06F9/45
Filed: 1992-02-18
Abstract: Programme compilateur 'framework', utilisant un système expert générique ou un mécanisme de régulation et de classement, et un processeur dorsal générique (dans lequel le générateur de code a un récepteur spécifique). Le processeur dorsal générique regroupe les fonctions d'optimisation, d'allocation de registre et de mémoire et de génération de code. Le système expert générique peut êtr e réalisé sur divers ordinateurs centraux et la fonction génération de code du processeur dorsal peut être ciblée en fonction de l'une quelconque de plusieurs architectures d'ordinateurs. Un processeur frontal est adapté a chacun des différents langages sources tels que le Cobolt, le Fortran, le Pascal, C, C++, Ada, etc. Ce processeur frontal balaie et analyse les modules code source puis élabore à partir de ceux-ci une représentation en langage intermédiaire ('IL') des programmes exprimés dans le code source. Ce language IL est conçu de manière à représenter l'un quelconque des langages code source de manière universelle, de telle sorte que l'interface entre le processeur frontal et le processeur dorsal se présente sous une forme standard et n'est pas besoin d'être réécrit pour chacun des processeurs frontaux à langage spécifique. La représentation IL produite par le processeur frontal est basée un nuplet en tant qu'élément de base, dans lequel chaque nuplet représente une opération unique a effectuer - charge, mise en mémoire, addition, étiquettage, branchement, etc. Une structure de données est élaborée par le processeur frontal pour chaque nuplet, avec des champs pour les diverses informations nécessaires. Une des caractéristiques de l'invention réside dans un mécanisme de représentation des effets et de dépendances dans l'interface entre le processeur frontal et le processeur dorsal; un nuplet produit un effet s'il écrit dans la mémoire et présente une dépendance s'il lit à partir d'un emplacement vers lequel un autre n÷ud peut écrire. Un mécanisme indépendant du langage source est prévu pour décrire les effets de l'exécution du programme. Une autre caractéristique réside dans l'utilisation, dans la partie optimisation du programme compilateur, d'une méthode d'analyse des variables d'induction, dans le cadre de laquelle l'amélioration consiste à utiliser les ensembles d'effets secondaires utilisés pour élaborer les ensembles IDEF. Une autre caractéristique réside dans le mécanisme de 'repliages constants' (désigné par des expressions 'K-folding ou KFOLD routine'), constituant l'une des optimisations. Une autre caractéristique réside dans le mécanisme de définition de type, autrement désigné 'module TD', qui prévoit que les mécanismes utilisés par le processeur frontal et par le programme compilateur du processeur dorsal, dans l'information type de programme de construction, doivent être incorporés dans un module objet à l'usage d'un éditeur de liens ou d'un metteur au point. Une dernière caractéristique réside dans la méthode de génération de code d'instruction basée sur des gabarits de code selon une procédure multipasse.