NO924115D0

Multilanguage optimizing compiler using templates in multiple pass code generation.

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.

Term

No projected expiry on record.

  1. Priority
  2. Filed and published
  3. Today

97 members in 19 offices

This recordMember, by publication datePriority claim9 more offices are in the list below

Priority claims18

Priority claims
DocumentOfficeKindDate
66246191United States of AmericaA
66246491United States of AmericaA
66247791United States of AmericaA
66248391United States of AmericaA
66272591United States of AmericaA
9201252United States of AmericaW
662461
662464
662477
662483
662725
US19910662461
US19910662464
US19910662477
US19910662483
US19910662725
US9201252
WO1992US01252

Members97

Family members, oldest first
DocumentOfficeKind
CA2077677A1CanadaA1
EP0446512A1European Patent Office (EPO)A1
WO9114158A1World Intellectual Property Organization (WIPO)A1
AU5348190AAustraliaA
CA2081449A1CanadaA1
CA2081473A1CanadaA1
CA2081475A1CanadaA1
CA2081476A1CanadaA1
CA2081477A1CanadaA1
CA2081477CCanadaC
IE920606A1IrelandA1
IE920607A1IrelandA1
IE920608A1IrelandA1
IE920609A1IrelandA1
IE920610A1IrelandA1
WO9215941A1World Intellectual Property Organization (WIPO)A1
WO9215942A1World Intellectual Property Organization (WIPO)A1
WO9215943A1World Intellectual Property Organization (WIPO)A1
WO9215944A1World Intellectual Property Organization (WIPO)A1
WO9215945A1World Intellectual Property Organization (WIPO)A1
AU1420492AAustraliaA
AU1429292AAustraliaA
AU1439792AAustraliaA
AU1442292AAustraliaA
AU1569892AAustraliaA
NO924114D0NorwayD0
NO924115D0This recordNorwayD0
FI924845AFinlandA
FI924845A0FinlandA0
FI924846AFinlandA
FI924846A0FinlandA0
BR9008006ABrazilA
NO924114LNorwayL
NO924115LNorwayL
MX9200811AMexicoA
MX9200812AMexicoA
EP0526621A1European Patent Office (EPO)A1
EP0526622A1European Patent Office (EPO)A1
EP0528008A1European Patent Office (EPO)A1
EP0529049A1European Patent Office (EPO)A1
KR930700828ARepublic of KoreaA
EP0532731A1European Patent Office (EPO)A1
JPH05506710AJapanA
MX9200810AMexicoA
MX9200819AMexicoA
JPH06501579AJapanA
JPH06501580AJapanA
JPH06501581AJapanA
JPH06501582AJapanA
JPH06501583AJapanA
MX9200818AMexicoA
PT100166APortugalA
PT100167APortugalA
AU652339B2AustraliaB2
AU653799B2AustraliaB2
NZ241694ANew ZealandA
EP0446512B1European Patent Office (EPO)B1
AT116819TAustriaT
ATE116819T1AustriaT1
DE69016001D1GermanyD1
AU658399B2AustraliaB2
NZ241693ANew ZealandA
ES2069000T3SpainT3
KR950006607B1Republic of KoreaB1
KR950006608B1Republic of KoreaB1
KR950006609B1Republic of KoreaB1
JPH0762825B2JapanB2
JPH0762826B2JapanB2
JPH0769832B2JapanB2
JPH0769833B2JapanB2
JPH0769834B2JapanB2
DE69016001T2GermanyT2
AU663310B2AustraliaB2
AU663311B2AustraliaB2
AU663493B2AustraliaB2
IL100987AIsraelA
IL100989AIsraelA
IL100990AIsraelA
IL100988AIsraelA
US5493675AUnited States of AmericaA
KR960003050B1Republic of KoreaB1
KR960003138B1Republic of KoreaB1
US5577253AUnited States of AmericaA
IL100986AIsraelA
US5613117AUnited States of AmericaA
US5659753AUnited States of AmericaA
EP0529049B1European Patent Office (EPO)B1
CA2081475CCanadaC
DE69225281D1GermanyD1
CA2077677CCanadaC
US5836014AUnited States of AmericaA
DE69225281T2GermanyT2
HK1006520AHong Kong, ChinaA
HK1006520A1Hong Kong, ChinaA1
KR0169744B1Republic of KoreaB1
CA2081473CCanadaC
CA2081449CCanadaC