Multilanguage optimizing compiler using templates in...

G - Physics – 06 – F

Patent

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

G06F 9/45 (2006.01)

Patent

CA 2081475

A compiler framework uses a generic "shell" or control and sequencing mechanism, and a generic back end (where the code generator is target-specific). The generic back end includes the functions of optimization, register and memory allocation, and code generation. The shell may be executed on various host computers, and the code generation function of the back end may be targeted for any of a number of computer architectures. A front end is tailored for each different source language, such as Cobol, Fortran, Pascal, C, C+ +, Ada, etc. The front end scans and parses the source code modules, and generates from them an intermediate language ("IL") representation of the programs expressed in the source code. This IL is constructed to represent any of the source code languages in a universal manner, so the interface between the front end and back end is of a standard format, and need not be rewritten for each language-specific front end. The IL representation generated by the front end is based upon a tuple as the elemental unit, where each tuple represents a single operation to be performed, such as a load, a store, an add, a label, a branch, etc. A data structure is created by the front end for each tuple, with fields for various necessary information. One feature of the invention is a mechanism for representing effects and dependencies in the interface between front end and back end; a tuple has an effect if it writes to memory, and has a dependency if it reads from a location which some other node may write to. A mechanism of source language is provided for describing the effects of program execution. Another feature is the use in the optimization part of the compiler of a method for analyzing induction variables, where the improvement is to use the side effects sets used to construct IDEF sets. Another feature is a mechanism for "folding constants" (referred to as K-folding or a KFOLD routine), included as one of the optimizations. A further feature is the type definition mechanism, referred to as the TD module, which provides mechanisms used by the front end and the compiler of the back end in constructing program type information to be incorporated in an object module for use by a linker or debugger. Another feature is a method for doing code generation using code templates in a multipass manner.

Une structure de compilateur utilise un système expert générique ou un mécanisme générique de commande et de séquencement, ainsi qu'un dorsal générique (le générateur de code étant spécialisé). Le dorsal générique comprend les fonctions suivantes : optimisation, affectation de registre et de mémoire, et génération de code. Le système expert générique peut tourner sur divers ordinateurs hôtes et la fonction de génération de code du dorsal peut être adaptée à diverses architectures d'ordinateur. Un frontal est adapté pour chaque source de langage différente, p. ex. Cobol, Fortran, Pascal, C, C+ +, Ada. Le frontal balaye et analyse les modules de code source et en tire une représentation en langage intermédiaire (LI) des programmes exprimés dans le code source. Ce LI est construit de façon à représenter sous une forme universelle n'importe quel des langages source, de sorte que l'interface entre le frontal et le dorsal soit en format standard et n'ait pas à être ré-écrite pour chaque frontal utilisant un langage particulier. La représentation en LI générée par le frontal a pour unité élémentaire le tuple, chaque tuple représentant une opération simple à exécuter, p. ex. charge, mémorisation, addition, étiquetage, branchement. Le frontal crée une structure de données pour chaque tuple, avec des champs pour les diverses informations nécessaires. L'invention comporte un mécanisme pour représenter des effets et des dépendances dans l'interface frontal-dorsal; un tuple a un effet s'il écrit en mémoire, et il a une dépendance s'il lit à un emplacement où un autre noeud peut écrire. Un mécanisme de langage source permet de décrire les effets de l'exécution de programmes. En outre, la partie optimisation du compilateur utilise une méthode d'analyse de variables d'induction, dont l'amélioration consiste à exploiter les ensembles d'effets secondaires utilisés pour construire des ensembles IDEF. L'invention comporte également un mécanisme de « réduction à des constantes » (appelé réduction-K ou routine KFOLD), compris dans une des optimisations. Elle comprend aussi un mécanisme de définition de type, appelé module TD, qui fournit les mécanismes utilisés par le frontal et compilateur du dorsal afin de construire de l'information de type programme à incorporer dans un module objet pour l'usage d'un relieur ou d'un débogueur. L'invention comprend aussi une méthode de génération de code au moyen de modèles de code en plusieurs passages.

LandOfFree

Say what you really think

Search LandOfFree.com for Canadian inventors and patents. Rate them and share your experience with other people.

Rating

Multilanguage optimizing compiler using templates in... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Multilanguage optimizing compiler using templates in..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Multilanguage optimizing compiler using templates in... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFCA-PAI-O-1591766

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.