METHOD OF CONSTRUCTING A CONSTANT-FOLDING MECHANISM IN A MULTILANGUAGE OPTIMIZING COMPILER
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...
Gespeichert in:
Hauptverfasser: | , , , , , |
---|---|
Format: | Patent |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext bestellen |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
container_end_page | |
---|---|
container_issue | |
container_start_page | |
container_title | |
container_volume | |
creator | FAIMAN, ROBERT, NEIL, JR BLICKSTEIN, DAVID, SCOTT HOBBS, STEVEN, O GROVE, RICHARD, BARRY MURPHY, DENNIS, JOSEPH DAVIDSON, CAROLINE, SWEENEY |
description | 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 independent 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.
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ér |
format | Patent |
fullrecord | <record><control><sourceid>epo_EVB</sourceid><recordid>TN_cdi_epo_espacenet_WO9215941A1</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>WO9215941A1</sourcerecordid><originalsourceid>FETCH-epo_espacenet_WO9215941A13</originalsourceid><addsrcrecordid>eNrjZIjydQ3x8HdR8HdTcPb3Cw4JCnUO8fRzV3CEcB39QnTd_H1cQEK-rs4ejn6ewb4Knn5Aed9QnxBPH0c_91BHd1cF_4AQT1_PKJA6Z3_fAE8f1yAeBta0xJziVF4ozc2g4OYa4uyhm1qQH59aXJCYnJqXWhIf7m9pZGhqaWLoaGhMhBIACvAxvg</addsrcrecordid><sourcetype>Open Access Repository</sourcetype><iscdi>true</iscdi><recordtype>patent</recordtype></control><display><type>patent</type><title>METHOD OF CONSTRUCTING A CONSTANT-FOLDING MECHANISM IN A MULTILANGUAGE OPTIMIZING COMPILER</title><source>esp@cenet</source><creator>FAIMAN, ROBERT, NEIL, JR ; BLICKSTEIN, DAVID, SCOTT ; HOBBS, STEVEN, O ; GROVE, RICHARD, BARRY ; MURPHY, DENNIS, JOSEPH ; DAVIDSON, CAROLINE, SWEENEY</creator><creatorcontrib>FAIMAN, ROBERT, NEIL, JR ; BLICKSTEIN, DAVID, SCOTT ; HOBBS, STEVEN, O ; GROVE, RICHARD, BARRY ; MURPHY, DENNIS, JOSEPH ; DAVIDSON, CAROLINE, SWEENEY</creatorcontrib><description>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 independent 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.
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 être 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'ordinateur. Un processeur frontal est adapté à chacun des différents langages source, tels que Cobolt, le Fortran, le Pascal, C, C++, Ada, etc. Ce processeur frontal balaie et analyse les modules codes sources puis élabore à partir de ceux-ci une représentation en langage intermédiaire ("IL") des programmes exprimés dans le code source. Ce langage 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'a 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 sur un nuplet en tant qu'élément de base, dans lequel chaque nuplet représente une opération unique à 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ésntation des effets et des 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 noeud peut écrire. Un mécanisme indépendant du langage source est prévu pour décrire les effets de l'exécution</description><language>eng</language><subject>CALCULATING ; COMPUTING ; COUNTING ; ELECTRIC DIGITAL DATA PROCESSING ; PHYSICS</subject><creationdate>1992</creationdate><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktohtml>$$Uhttps://worldwide.espacenet.com/publicationDetails/biblio?FT=D&date=19920917&DB=EPODOC&CC=WO&NR=9215941A1$$EHTML$$P50$$Gepo$$Hfree_for_read</linktohtml><link.rule.ids>230,308,776,881,25542,76516</link.rule.ids><linktorsrc>$$Uhttps://worldwide.espacenet.com/publicationDetails/biblio?FT=D&date=19920917&DB=EPODOC&CC=WO&NR=9215941A1$$EView_record_in_European_Patent_Office$$FView_record_in_$$GEuropean_Patent_Office$$Hfree_for_read</linktorsrc></links><search><creatorcontrib>FAIMAN, ROBERT, NEIL, JR</creatorcontrib><creatorcontrib>BLICKSTEIN, DAVID, SCOTT</creatorcontrib><creatorcontrib>HOBBS, STEVEN, O</creatorcontrib><creatorcontrib>GROVE, RICHARD, BARRY</creatorcontrib><creatorcontrib>MURPHY, DENNIS, JOSEPH</creatorcontrib><creatorcontrib>DAVIDSON, CAROLINE, SWEENEY</creatorcontrib><title>METHOD OF CONSTRUCTING A CONSTANT-FOLDING MECHANISM IN A MULTILANGUAGE OPTIMIZING COMPILER</title><description>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 independent 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.
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 être 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'ordinateur. Un processeur frontal est adapté à chacun des différents langages source, tels que Cobolt, le Fortran, le Pascal, C, C++, Ada, etc. Ce processeur frontal balaie et analyse les modules codes sources puis élabore à partir de ceux-ci une représentation en langage intermédiaire ("IL") des programmes exprimés dans le code source. Ce langage 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'a 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 sur un nuplet en tant qu'élément de base, dans lequel chaque nuplet représente une opération unique à 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ésntation des effets et des 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 noeud peut écrire. Un mécanisme indépendant du langage source est prévu pour décrire les effets de l'exécution</description><subject>CALCULATING</subject><subject>COMPUTING</subject><subject>COUNTING</subject><subject>ELECTRIC DIGITAL DATA PROCESSING</subject><subject>PHYSICS</subject><fulltext>true</fulltext><rsrctype>patent</rsrctype><creationdate>1992</creationdate><recordtype>patent</recordtype><sourceid>EVB</sourceid><recordid>eNrjZIjydQ3x8HdR8HdTcPb3Cw4JCnUO8fRzV3CEcB39QnTd_H1cQEK-rs4ejn6ewb4Knn5Aed9QnxBPH0c_91BHd1cF_4AQT1_PKJA6Z3_fAE8f1yAeBta0xJziVF4ozc2g4OYa4uyhm1qQH59aXJCYnJqXWhIf7m9pZGhqaWLoaGhMhBIACvAxvg</recordid><startdate>19920917</startdate><enddate>19920917</enddate><creator>FAIMAN, ROBERT, NEIL, JR</creator><creator>BLICKSTEIN, DAVID, SCOTT</creator><creator>HOBBS, STEVEN, O</creator><creator>GROVE, RICHARD, BARRY</creator><creator>MURPHY, DENNIS, JOSEPH</creator><creator>DAVIDSON, CAROLINE, SWEENEY</creator><scope>EVB</scope></search><sort><creationdate>19920917</creationdate><title>METHOD OF CONSTRUCTING A CONSTANT-FOLDING MECHANISM IN A MULTILANGUAGE OPTIMIZING COMPILER</title><author>FAIMAN, ROBERT, NEIL, JR ; BLICKSTEIN, DAVID, SCOTT ; HOBBS, STEVEN, O ; GROVE, RICHARD, BARRY ; MURPHY, DENNIS, JOSEPH ; DAVIDSON, CAROLINE, SWEENEY</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-epo_espacenet_WO9215941A13</frbrgroupid><rsrctype>patents</rsrctype><prefilter>patents</prefilter><language>eng</language><creationdate>1992</creationdate><topic>CALCULATING</topic><topic>COMPUTING</topic><topic>COUNTING</topic><topic>ELECTRIC DIGITAL DATA PROCESSING</topic><topic>PHYSICS</topic><toplevel>online_resources</toplevel><creatorcontrib>FAIMAN, ROBERT, NEIL, JR</creatorcontrib><creatorcontrib>BLICKSTEIN, DAVID, SCOTT</creatorcontrib><creatorcontrib>HOBBS, STEVEN, O</creatorcontrib><creatorcontrib>GROVE, RICHARD, BARRY</creatorcontrib><creatorcontrib>MURPHY, DENNIS, JOSEPH</creatorcontrib><creatorcontrib>DAVIDSON, CAROLINE, SWEENEY</creatorcontrib><collection>esp@cenet</collection></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext_linktorsrc</fulltext></delivery><addata><au>FAIMAN, ROBERT, NEIL, JR</au><au>BLICKSTEIN, DAVID, SCOTT</au><au>HOBBS, STEVEN, O</au><au>GROVE, RICHARD, BARRY</au><au>MURPHY, DENNIS, JOSEPH</au><au>DAVIDSON, CAROLINE, SWEENEY</au><format>patent</format><genre>patent</genre><ristype>GEN</ristype><title>METHOD OF CONSTRUCTING A CONSTANT-FOLDING MECHANISM IN A MULTILANGUAGE OPTIMIZING COMPILER</title><date>1992-09-17</date><risdate>1992</risdate><abstract>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 independent 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.
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 être 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'ordinateur. Un processeur frontal est adapté à chacun des différents langages source, tels que Cobolt, le Fortran, le Pascal, C, C++, Ada, etc. Ce processeur frontal balaie et analyse les modules codes sources puis élabore à partir de ceux-ci une représentation en langage intermédiaire ("IL") des programmes exprimés dans le code source. Ce langage 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'a 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 sur un nuplet en tant qu'élément de base, dans lequel chaque nuplet représente une opération unique à 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ésntation des effets et des 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 noeud peut écrire. Un mécanisme indépendant du langage source est prévu pour décrire les effets de l'exécution</abstract><oa>free_for_read</oa></addata></record> |
fulltext | fulltext_linktorsrc |
identifier | |
ispartof | |
issn | |
language | eng |
recordid | cdi_epo_espacenet_WO9215941A1 |
source | esp@cenet |
subjects | CALCULATING COMPUTING COUNTING ELECTRIC DIGITAL DATA PROCESSING PHYSICS |
title | METHOD OF CONSTRUCTING A CONSTANT-FOLDING MECHANISM IN A MULTILANGUAGE OPTIMIZING COMPILER |
url | https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-02-14T03%3A01%3A05IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-epo_EVB&rft_val_fmt=info:ofi/fmt:kev:mtx:patent&rft.genre=patent&rft.au=FAIMAN,%20ROBERT,%20NEIL,%20JR&rft.date=1992-09-17&rft_id=info:doi/&rft_dat=%3Cepo_EVB%3EWO9215941A1%3C/epo_EVB%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_id=info:pmid/&rfr_iscdi=true |