JPH03500463A - デジタルデータ処理システム用総称コード共用化装置及び方法 - Google Patents

デジタルデータ処理システム用総称コード共用化装置及び方法

Info

Publication number
JPH03500463A
JPH03500463A JP1510377A JP51037789A JPH03500463A JP H03500463 A JPH03500463 A JP H03500463A JP 1510377 A JP1510377 A JP 1510377A JP 51037789 A JP51037789 A JP 51037789A JP H03500463 A JPH03500463 A JP H03500463A
Authority
JP
Japan
Prior art keywords
shareable
generic
program
program structure
parameters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP1510377A
Other languages
English (en)
Other versions
JPH0731606B2 (ja
Inventor
ブレンダー ロナルド エフ
ブレット ベヴィン アール
Original Assignee
ディジタル イクイプメント コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ディジタル イクイプメント コーポレーション filed Critical ディジタル イクイプメント コーポレーション
Publication of JPH03500463A publication Critical patent/JPH03500463A/ja
Publication of JPH0731606B2 publication Critical patent/JPH0731606B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Communication Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。

Description

【発明の詳細な説明】 デジタルデータ処理システム用総称コードシェアリング装置又ユ■!員 本発明は全体としてデジタルデータ処理システム分野、殊に高水準言語から機械 により実行可能なコードを生成するコンパイラに関する。
デジタルデータ処理システムもしくはコンピュータによす実行される処理を規定 するプログラムは一連の命令の形を取っている。
各命令に呼応1.てコンピュータは命令中に明示的にか黙示的にか識別されるデ ータに対して命令のオペレーションコード部分によって規定される1つもしくは それ以上の処理を実行する0元来は、プログラマが「機械語」と称するものでコ ンピュータをプログラミングしていた。l!械語の場合、命令は全て1と0の系 列の形をとり、それらはコンピュータが解釈し使用できるような2進コードを形 成する。
機械語でプログラミングすることが困難なため、プログラマは、まづアセンブリ 言語を、後に高水準言語より成るプログラミング形成を開発した。アセンブリ言 語の場合にもプログラムはコンピュータが処理する命令系列の形をとるが、オペ レーションコード部分は行われる処理についての二−モニフク省略記号の形をと り、命令により処理されるデータはコンピュータ内のデータストアロケ−シラン を表わす変数名によって識別されるのが普通である。
アセンブラ−プログラムはアセンブリ言語プログラムを処理してコンピュータが 実行可能な機械言語プログラムをつくりだす、命令は二−モニック略号;変数名 および(又は)ストアロケーションを使用するために、アセンブリ言語を使用し てのプログラミングは機械言語によるプログラミングに比して著しく簡単(?、 される。
アセンブリ言語によるプログラミングはプログラミングを機械語によるプログラ ミングよりも煩わしさが少ないとはいえ・プログラマ−が一定問題を解くために コンピュータによっテ実行され間のかかるものである。アセンブリ言語によるプ ログラミング法を使用した場合、プログラマはアルゴリズムを処理する際1.: −コ7ビエータにより実行される高水準の演算処理に注意を限定することができ ず、その代わり、各命令に関してコンピュータが実行する処理を知悉していなけ ればならなかった。
高水準言語はこの点を解決するために開発されたものである。
高水準言語はプログラマ−からコンピュータの処理の詳細を知る必要から解放し 、その代わりにアルゴリズム自体に注意を集中することを可能にした。コンパイ ラ−プログラムは高水準言語プログラムを処理してコンピュータが実行可能な機 械言語によるプログラムを提供し、その結果としてコンパイラプログラムはプロ グラマ−をコンピュータから遮断するのに効果的であった。事実、高水準言語で 書かれたプログラムはアセンブリ言語や機械言語で書かれたプログラムなしでは やってわけない各種コンピュータに対してコンパイル後に実行されるのが普通で ある。然しながう、高水準言語で書かれたプログラムの場合の問題の一つはそれ らが同一の結果を達成するアセンブリ言語で書かれたプログラムよりも幾分遅い ことが多く、またずっと多くのメモリを占存しがちである点である。
フレクシプルさを向上させ実際にプログラムを書く時間を少なくするために、プ ログラマ−に一定の処理もしくは特性の系列を総称パッケージ、総称的ブロシー ジ中、もしくは総称関数と称する総称的プログラム構造として定義させ、それら が必要な時に単に同名を喚起させ、特定構造を形成したり先に定義された総称プ ログラム構造中に提示される特定処理を実行する際に使用されるデータをパラメ ータとして識別するだけで総称構造をプログラム中の別の場所で使用させること のできる高水準言語も存在する。
このためプログラマは先に定義済みのプログラム構造を使用でき反復することを 避けることができる。プログラム内の特定ロケーションで総称プログラム構造や シーケンスを使用することは、それがデータの型等を使用する構造やシーケンス の特殊例であるために総称プログラム構造もしくはシーケンスの「具体化J ( inst−antiation)と称される。
総称プログラム構造やシーケンスを含むプログラムをコンパイル中に総称プログ ラム構造もしくはシーケンスに出会った時、次の2つの方法が使用されている。
一つは、実行が最も容易なものであるが、先に定義された総称プログラム構造に 基いて一定のコードシーケンスがプログラム中の総称プログラム構造もしくはシ ーケンスが具体化される毎に生成されることによってパラメータ内に識別される データの特殊形式に対して同構造もしくはシーケンス内に定義された処理を実行 することが可能になる。この方法によればパラメータを経由してバスされるデー タの形によっては同一もしくは類似のコードシーケンスがプログラム内の種々の 具体化点で発生し、その結果プログラムの大きさが不当に拡大する虞れがある。
他方、もう一つの方法では、コンパイル中に総称プログラム構造もしくはシーケ ンスの各具体化で使用される単一のコードシーケンス例が発生する。具体化を構 成するコードシーケンスは種々の具体化中で識別されるパラメータを経由してパ スされる数タイプのデータの何れをも処理できるように十分一般的なものでなけ ればならない、コードシーケンスはすこぶる一般的な状態を処理できなければな らないから、その一般性自体はプログラム実行中の性能に悪影響を及ぼすことに なる。
衾里五!旌 本発明は総称プログラム構造の具体化どうしの間のコードシェアリングを容易に する新規かつ改良されたシステムを提供するものである。
約言すると、本発明は共有可能なプログラム構造を生成させる際に使用されたパ ラメータ特性と共に、総称プログラム構造の具体化に応じて生成する共存可能プ ログラム構造のライブラリを維持する新規かつ改良されたコンパイラ−システム を提供するものである。総称プログラム構造の具体化に応じて、コンパイラは具 体化に関して使用される各パラメータの特性に関する情報を発生する。その後、 コンパイラはそれらの特性をライブラリ内の共有可能なプログラム構造と関連す る特性と比較する。もしそのライブラリがそのパラメータ特性が対応するパラメ ータの特性と首尾良く匹敵するような共有可能プログラム構造を含んでいれば、 その共有可能プログラム構造は具体化に関してそれ以上の処理に関して使用され る。他方、もしライブラリがそのような共有可能プログラム構造を含んでいなけ れば、同構造が生成されその生成中後の具体化と共有するために使用される。更 に、丁度生成したばかりの共有可能プログラム構造は具体化に関してその後の処 理中に使用される。
上記の新規コンパイラシステムは幾つかの利点を与える。共有判断を実際の特性 とパラメータの使用に基づかせることによって、またそれら特性と使用に基づい てコードを生成させることによって、コードのランタイム性能は現存コンパイラ により生成されるコードに比べて改良され生起し得る全ての具体化を過去の通り 〜処理することができる。更に、シェアリングの度合はかかるコンパイラよりも 少なく目的プログラムは幾分大きくなるが、総称プロクラム構造の具体化が全て インラインで拡張されシェアリングが行われないような目的プログラムよりは小 さくなるであろう。
凹皿Ω呈工星鼠里 本発明は特に請求範囲に明記しである0本発明の以上の、またその他の利点は図 面と相俟って以下の説明を参照することによりより十分に理解できよう。
第1図は本発明を示す概略機能ブロックダイアグラムである。
第2A〜20図は第1図に示す本発明の動作を示すフローダイアダラムを示す。
第3図と第4図は第1図に示す本発明と第2A〜20図に示す動作を理解するう えで有益なデータ構造のダイアグラムである。
゛の な′ A、概説 本発明はプログラム構造もしくはシーケンス(全体を「構造」と称する)を総称 として宣言し使用しやすくするデジタルデータ処理システムをプログラミングす る際に使用される高水準言語をコンパイルするための新規かつ改良システムで特 にコンパイラを備えるものを提供する0本発明をプログラミング言語エイダに関 して説明する。エイダブログラミング言語は3つのダイアの総称的構造、即ち総 称プロシージャ、総称関数、およびジェネリックパッケージを収納する。一般的 にいって、プロシージャと関数は命名された処理シーケンスを定義するプログラ ム構造を提供するが、パッケージの方は論理的に関連するエンティティもしくは オブジェクトの命名群を規定することの可能なプログラム構造を提供する。上記 命名群はその後その名前を参照することによってプログラム内で使用される。総 称プロシージャと関数は、プログラム内、具体化される総称プログラム構造を提 供し、特定のパラメータに関連して総称プロシージャや関数の名前を照会するこ とによつて特定の処理シーケンスを提供する。同様にして、総称パンケージはプ ログラム内で具体化される総称プログラム構造を提供し、特定のパラメータと関 連して総称パッケージの名前を照会することによって論理的に関連するエンティ ティやオブジェクトの命名群を指定する。
プログラミング言語エイダの場合、各総称プログラム構造は総称本体が後に続く 総称宣言を含む、総称宣言は総称プログラム構造の名称を提示しパラメータを識 別する。総称パッケージの場合には総称宣言はパフケージ塩により識別される群 を形成するエンティティもしくはオブジェクトを識別する。総称プログラム構造 の総称本体はプログラム構造の実行に関して実行される処理シーケンスを識別す る。&!称パッケージの場合、総称宣言中で宣言されるエンティティもしくはオ ブジェクトは、総称本体中で定義される処理シーケンスに関して計算される。
エイダブログラミング言語中のソースプログラムの場合、総称プログラム構造の 総称宣言と総称本体部分は、lプログラム内で別個に提示され、実際上別々にコ ンパイルされリンクされてコンピュータにより実行可能な目的プログラムを提供 するようになっている。総称宣言は、総称本体が提供されているかどうかに関わ りなく総称プログラム構造を後にプログラム内で使用可能なものとして識別する 。総称本体は別々に提示することができる。総称本体が提示されると、プログラ ム内に提示される総称プログラム構造の具体化の発生に関して使用される。
エイダブログラミング言語における総称プログラム構造の例をあげると全体とし て次のようなプロシージャとなる。
gereric・・・(GENERI C)type T is privat e; ’ 1 (DECLARAT l0N)procedure 5WAP  (X、 Y : in out T) is・・・TEMP :constan t T : −X i lbegin I (GENERI C)X :my;  l (BODY) Y :冑TEMP 1 end; この総称プログラム構造は5WAPと称する総称プログラム構造を提供する。同 構造は非総称的プロシージャより成る事例をつくりだすために使用され、上記総 称的プロシージャ自体は2個の変数の値をスワップするために使用される0本例 では、“T”は仮データ型を表わし、総称プログラム構造の仮りパラメータでも ある。事例をつくりだす際、実データ型を表わす実パラメータは総称プログラム 構造がその事例をつくりだすために使用される時に指定される。仮型“T”は総 称宣言では“プライベート”として識別され、一定の処理のみが総称構造内の型 の変数に関して実行できることを示す、その結果、広範囲の階級の実データ型を 具体化における実パラメータとして使用しこの仮データ型に対応させることがで きる。
更に、上記した如く、上記総称プログラム構造は非総称プロシージャより成る事 例をつくりだすために使用することができる。
プロシージャ全般についてと同様に、具体化は一つのプロシージャとしてそれ自 体板パラメータを含み、それに対してそのプロシージャが呼出される際にそれに 対応する実パラメータを備えていなければならない、この場合、具体化のための 仮パラメータは変数XとYで、その具体化を使用して一時的数値変数TEMPを 使用してそれら変数により表わされる諸値がスワップされる。
−具体例の仮パラメータを表わす変数は、本例では変敗XとYとして同定される が、それらは、名称“in″を使用することによって、入力パラメータ、即ち、 その値が格納プログラムによって与えられるパラメータとして識別される。更に 、1つの具体例の仮パラメータを表わす変数は名称“out ”を使用すること によって、出力パラメータ、即ち、その値が格納プログラムによって使用される パラメータとして識別される。その値が格納プログラムにより提供されると共に その格納プログラムにより使用される変数は名称“in out”によって識別 される。
上記例より明らかな如く、一つの総称プログラム構造は同構造を総称と識別しパ ラメータを識別する宣言部と、仮プライベート型Tであるパラメータと関連して シーケンス処理を定義する本体部を備える。総称プログラム構造はその後プログ ラム内で具体化され、以下の通り固定小数点もしくは整数データに関して使用さ れる。
procedure 5WAP INT is new 5WAP (INTE GER);その結果、−例として5WAP TNTと称するプロシージャがつく りだされ、同プロシージャは整数データ、即ち、INTEGERと称するデータ 型を有するデータをスワップすることができる。
同様にして、上記総称プログラム構造はプログラム内で具体化され、以下の如く 浮動小数点データに関して使用される。
procedure 5WAP FLOAT is new 5WAP(FLO AT);そのため、−例として5WAP FLOATと称するプロシージャがつ くりだされ、同プロシージャは浮動小数点データ、即ち、FLOATと称するデ ータ型を有するデータをスワツプすることができる。更に、その具体例中でその 具体例に特有のパラメータが指定される。総称プログラム構造の具体例をつくり だす際、コンパイラは総称プログラム構造により規定される処理を入力パラメー タにより同定される値に対して実行することを可能にし、それに応じてその具体 例に続くプログラム部分中で使用可能な出力値を提供するコードを生成する。
第1図についてより詳細に述べると、先に定義された総称プログラム構造の具体 例10に呼応して、その具体例に関して構文解析を実行して具体例が構文上正確 に規定されたことを確認すると共に、意味論的解析を実行して具体例が意味論上 正確に規定されたことを確認する。構文解析を実行する際、コンパイラはその具 体例中に使用される個々のワードとワード系列の双方を認知し、とりわりそのワ ードが自らが認知する処理を定義したことを確認する。意味論上の解析を実行す る際、コンパイラは具体例中に定義の実パラメータが総称プログラム構造の総称 宣言部中に定義された仮パラメータと合致するかどうかの確認を含めて一連のチ ェックを行う。
コンパイラは編集ライブラリ12を維持し、その内部に、コンパイル中に使用さ れる他の情報中に、各総称プログラム構造について具体例中で共用可能なコンパ イルプログラムコードの共用単位を格納している。各共用可能単位は総称プログ ラム構造中の仮パラメータについて代表的な実パラメータを含み、同パラメータ は共用可能単位につきコンパイルされたプログラムコードと関連して使用された 関連仮パラメータの属性に関する情報を含んでいる。
殊に、編集ライブラリ12内の各総称プログラム構造とは総称プログラム構造と 関連する一つもしくはそれ以上のレコード14が関連している。各レコード14 は、同構造の総称宣言と関連する共用可能な宣言15を備える共用可能単位より 成っている。更に、各レコード14は総称プログラム構造の総称本体と関連する 共用可能な本体16(I)〜16(N)(全体を参照番号16で示す)より成る 1つもしくはそれ以上の共用可能単位を含む、上記した如く、総称プログラム構 造の共用可能本体部分は別個に提供することができ、それが提供されるまでレコ ード14は共用可能本体16を何ら含まないであろう。
各共用可能な宣言15は、コンパイルされたプログラムコードを生成する際に使 用されたパラメータの特性を詳述する代表的実パラメータと関連してコンパイル された総称プログラム構造の総称宣言部に関するコンパイルプログラムコードと 関連する。総称プロシージャもしくは総称関数の宣言部の場合、共用可能宣言1 5と関連するコンパイルプログラムコードは、例えば、プログラム内のロケーシ ョンで総称プロシージャもしくは総称関数の具体例を示すコードにより構成する ことができる。総称パンケージの宣言部分の場合には、コンパイルプログラムコ ードは、プログラム内のロケーションで論理的に関連するエンティティもしくは オブジェクトの命名群を指定するために使用されるコードを備えることができる 。
同様にして、各共用可能本体16はコンパイルプログラムと関連することによっ て代表的実パラメータの集合体に関連してコンパイルされた総称本体により定義 される処理の実行が可能になる。
上記実パラメータはまた共用可能本体16と関連するコンパイルプログラムコー ドを生成する際に使用されたパラメータの特性を記述する。
一つの総称プログラム構造は一つもしくはそれ以上のレコード14と関連させる ことができる。一つの総称プログラム構造は、総称プログラム構造の種々の具体 化が共用可能な多数の宣言15をつくりだすことをa・要とする場合、複数レコ ード14と関連させることができる。上記の如く、各共用可能宣言15と共用可 能本体16は、総称プログラム構造中の各仮パラメータにつき、その編集と関連 して使用される特性の如き情報を含む代表的実パラメータを含む、かくして、− 回の具体化につき生成する共用可能宣言15もしくは共用可能本体16は、もし 第2回目の具体例の実パラメータの特性が、それぞれ共用可能宣言15と共用可 能本体16の代表的実パラメータ内に記録され共用可能宣言15もしくは共用可 能本体16を生成する際に使用された特性に対応するものであれば第2の具体例 について使用することができる。
別言すれば、一つの具体化に呼応して共用可能宣言15をコンパイルする際に使 用される代表的実パラメータの特性は、他の具体化に関して共用可能宣言15を 使用する際の制限を提示するものである。更に、一つの総称プログラム構造の具 体化に呼応して共用可能本体16をコンパイルする際に使用される代表的実パラ メータの特性は、その総称プログラム構造の他の具体化に関して共用可能本体1 6を共用することに対する制約を提示する。
コンパイル中、コンパイラが総称プログラム構造の具体例をコンパイルする時、 その種々の具体例をコンパイル中に先に作成されたレコードを(もし存在する場 合であるが)サーチする。まづ、コンパイラは具体化に関して共用可能な共用宣 言15を含むレコード14をつきとめようと試みる。コンパイラはそのレコード 14の選択を具体例の実パラメータの特性と、レコード中の共用可能宣言15の 代表的実パラメータ中に記録された特性に基づいて行う。
他方、もしコンパイラが、コンパイル中の特定具体例の実パラメータの特性とレ コード14中の共用可能宣言の代表的実パラメータ中に記録された特性に基づい て、何れのレコード14もその具体化に使用できる共用可能宣言を含んでいない と判断すれば、新たな共用可能宣言15を含む新たなレコード14をつくりだし 、それをライブラリ12内にリンクする。共用可能宣言15は共用表的実パラメ ータを含む、上記新たな共用可能宣言は、その具体化に使用できると共に、それ 以後の総称プログラム構造の具体化と共用することができる。
もしコンパイラが具体例10の編集に関して使用可能な共用可能宣言を含むレコ ード14をつきとめ、そのレコードが共用可能本体16を含んでおれば、コンパ イラは具体化に関して使用可能な共用可能本体をつきとめようと試みる。このこ とを行う際、コンパイラは具体例の実パラメータの特性を共用可能本体16の各 々の代表的実パラメータ内に記録された特性と比較する。もしレコード14がそ の代表的実パラメータが具体例と関連する実パラメータの特性と首尾良(匹敵す る特性を含んだ共用可能本体を含んでおれば、コンパイラは具体例10の編集に 関してその共用可能本体16を使用する。
他方、もしコンパイラがコンパイル中の特殊具体例の実パラメータの特性とレコ ード14中の共用可能本体16の代表的実パラメータ内に記録された特性とに基 づいてレコード14内の共用可能本体16の何れもその具体化には使用できない と判断すれば、コンパイラは新たな共用可能本体16をコンパイルしてそれをそ れぞれ共用可能本体16の編集に際して使用された対応する実パラメータの特性 を同定する代表的実パラメータを含む共用可能宣言15にリンクする。新たな共 用可能本体16はか(してその具体化に利用できると共に続く総称プログラム構 造の具体化と共用することができる。
総称プログラム構造の最初の具体例がコンパイルされる際には編集ライブラリ1 2内にはレコード14は全く存在しないことが理解できよう。従って、コンパイ ラはその最初の具体化については共用可能宣言を含むレコード14を生成させる 必要があろう。
そしてもしその総称プログラム構造が本体、共用可能本体を含んでいれば、レコ ード14の識別をライブラリ12に提示することになろう。
共用可能宣言15もしくは共用可能本体16を具体化10について使用できるか どうかを判断する際には具体例10の実パラメータと共用可能宣言15もしくは 共用可能本体16の代表的実パラメータに関して一連の特性を参照することがで きる。特性の詳細は非常に特定されたものからやや概括的なものまで様々である 。
もしその特性が特定的なものであれば、共用可能宣言15と共用可能本体16は 共有され難いが、共用可能宣言15と共用可能本体16についてのコンパイルプ ログラムコードは一般的特性を取扱うように一般的なものである必要はない、他 方、もし選択された特性がより一般的な通用可能性を有するものであれば、共用 可能宣言15と共用可能本体16はより共用され易いが、そのためのコンパイル プログラムコードはより一般的な特性を取扱うに十分概括的なものとなろう0例 として挙げれば、特性は、代表的実パラメータにより表現されるデータが固定的 なものか浮動性のものか、即ち、そのデータがI NTEGER型であるかそれ ともFLOAT型であるか、データがバイト、ワード、ロングワード、単精度又 は倍精度であるか、データがビット、バイトもしくはその他の境界により合わせ られているか、またデータが算術、ストリングデータであるか数値範囲であるか どうか等を包含する。
カくシテ、新たなコンパイラは共用判断を具体例と関連する実パラメータの特性 と、具体例のコンパイル中に実際に使用され共用可能宣言15と共用可能本体1 6内の代表的実)くラメータ中に記録される特性中に反映される宣言とコードに 基づかせることによって宣言と本体の共用性を向上させることができる・共用を 可能にする従来の構成では共用が可能であるかを判断する際に仮、ぐラメータの みが使用されていた。そのため具体例の編集はコードを生成する際に実パラメー タの有り得る特性を全て考慮に入れるか、共用を制限するかする必要があった。
あるいはその代わりに、コンパイラが各具体例につきコードを生成して編成コー ドの一般性に関する問題点を除去したが、共用可能性を排除することになり生成 コード量を不当に多くすることになった。
詳論 以上の背景に基づいて本発明の新規なコンパイラの構造を第2A、3.4図に関 して詳説する。
予備的に、従来例に従って、本発明の新規コンパイラの機能全体を、その処理が ソースプログラムの言語に依存するフロントエンドと、処理がプログラムを実行 することになっている特定コンピュータにより識別可能なプログラムコードに依 存するバンクエンドとに分割する。フロントエンドは字句解析と構文解析をソー スプログラムについて実行し、高水準言語による連続的命令を識別してその命令 系列が適切に宣言されているかどうかを部分的に検証する高水準言語の静的意味 解析の規則に照らしてそれぞれが正確に宣言されているかどうかを判断し、中間 コードを生成する。
バックエンドは、その中間コードより、プログラムを実行するコンピュータによ つて識別可能な命令を含む目的コードプログラムを生成する。普通の場合、ソー スプログラムは別個にコンパイル部ではない)によりリンクされ、コンピュータ が実行可能な完全なプログラムが形成される。
この背景に照らして、フロントエンドは、その意味解析フェーズ中に、自らが一 単位として処理する一つもしくはそれ以上のソースプログラム命令の系列を識別 する。特に、フロントエンドはソースプログラム命令の系列を反復処理し、それ らが総称プログラム構造もしくは総称宣言や総称本体の如きその要素を形成もし くは包含するかどうかを判断する。(第2A図、ステップ100)もし然りであ れば、フロントエンドは総称プログラム構造をライブラリ12内にリンクする。
(第2A図、ステップ101)他方、もしフロントエンドがステップ100にお いてソースプログラム命令系列が総称プログラム構造を形成もしくは包含してい ないと判断すれば、ステップ102に進む、ステップ102において、フロント エンドはソースプログラム命令系列が総称プログラム構造の具体例を形成したか どうかを判断する。もし否であれば、ステップ103へ進み、従来のコンパイル 手法を用いてソースプログラム命令系列の編集に移る。
然しなから、もしステップ102においてソースプログラム命令系列が具体例を 形成もしくは包含しているとフロントエンドが判断すれば、ステップ104に進 み、具体例の仕様と事例ジェネレータを生成し、それらを編集ライブラリ12内 へリンクする。
(ステップ104)具体例の仕様は具体化される総称プログラム構造とパラメー タを同定し、事例ジェネレータは具体例マツプ25を包含する。(第3図)上記 総称プログラム構造5WAPと具体例5WAP INTを一例として使用して、 フロントエンドはprocedure 5WAP INTisnewSWAP( INTEGER)を、procedure 5WAP I NT is new  5WAP(INTEGER) (1) ;procedure 5WAP I NT (X% Y:in out INTEGER);・・・・・・〈但し、5 WAP INTの仮パラメータは、総称宣言からの複製代入により得られ総称仮 型Tを現型INTEGERと置換する。>−・−・−(2)、procedur e 5WAP INT (X、 Y; in out Integer) is < 1nstantiation @ap > (3) end−=−に拡張す る。
その後、コンパイラはプロシージャ本体〔3〕を、procedure 5WA P I NT (X%Y : in out I NTEGER)is 5ep arate ; (4) に修正する。そのことはプロシージャ呼出しに応じて実行される処理が別個に提 供されることを示す、この場合は事例ジェネレータが次の如くつくりだされる。
5eparate (PROC) (5)Procedure 5WAP IN T(X、YHinout INTEGER)is <1nstantiatio n @ap> (6)〔1〕から〔4〕までがつくりだされると、それは編集ラ イグラ1J12内に事例ジェネレータの親構造としてリンクされ、その際、事例 ジェネレータは〔5〕と〔6〕より成る。
具体化マツプ25は事例ジェネレータ20のコンパイル完了に際して使用される 情報の大部分についてのフィールドを含む、事例ジェネレータ20が生成される 際にそのフィールドの全てが情報を受け取るわけではない、即ち、フィールド内 の情報のうちには後に事例’; X 、*レータ20の完成中に提供されるもの もある。
具体化マツプ25の全体構造は第3図に示す、第3図について述べると、具体化 マツプ25は、仮パラメータ・実パラメータ・Mlに編集ライブラリ12内にリ ンクされる総称宣言を本体、および具体例のコンパイルに関して使用されるべく 選択された総称プログラム構造、共用可能宣言15、共用可能本体16と関連す るレコードに対するポインタ用の一連のフィールドを含む。
具体化マツプは総称プログラム構造のパラメータと具体化に関する2つのフィー ルドを含む、殊に、FORM76iL CVフィールド30は仮パラメータによ り計算したベクトルに対するポインタを含む、仮パラメータにより計算したベク トル自体はその内容がベクトル内の追加的なエントリー数を示す第1のエントリ ーを含み、その際、その追加的エントリーはそれぞれ総称プログラム構造内の仮 パラメータに対するポインタより成っている。
ACTUAL CVフィールド31は実パラメータにより計算されたベクトルに 対するポインタを含み、同ベクトル自体はその内容がベクトル内の追加エントリ ー数を示す第1のエントリーを示し、その際、その追加エントリーは各々実パラ メータに対するポインタを含んでいる。ACTUAL CVフィールド31の内 容によって指示される計算ベクトル中のエントリー系列はそれぞれ、FORMA L CVフィールド30の内容によって指示される計算ベクトル内のエントリー 系列に対応する。
また具体化マツプ25は自分が関係する事例ジェネレータの種々の部分を指示す るその他の一連のポインタフィールドを含んでいる。lN5T DECL PO INTER具体化宣言ポインタを指示する。BODY DECL POINTE R本体宣言ポインタ34の内容は具体化マツプ25と関係する仕様宣言を指示す る。同様にして、BODY TEMPL POINTERテンプレートポインタ フィールド35の内容は本体宣言を指示する。
具体化マツプ25は同時に具体化と文脈情報に関する総称プログラム構造に対す る幾つかのポインタを含んでいる。
GEN DECL POINTER総称宣言ポインタフィールド33の内容は総 称プログラム構造の総称宣言部分を指示する。上記の如く、総称プログラム構造 は最初に処理の本体もしくは詳細を提示せずに宣言できプログラム内の何処か別 の所で使用することができる。もしこのことが行われると、5TUB DECL EC−ルド37の内容は処理の本体もしくは詳細に対する編集単位に対するポイ ンタを挿入可能なロケーションを提示する。もし具体化マツプ25と関連する総 称プログラム構造が別の総称宣言もしくは総称本体内に含まれていれば、GEN  C0NTEXT−POINTER総称文脈ポインタフィールドの内容は含まれ る総称宣言もしくは総称本体を指示し総称プログラム構造のネスティングが容易 になる。
具体化マツプ25内の最後のポインタは5HARUNIT−POINTER共用 単位ポインタフィールド40で、その内容へコンパイラは共用可能宣言15もし くは共用可能本体16のロケーションを同定するポインタをロードする。5HA RUNITPOINTER共有単位ポインタフィールド40は、先に生成済みの 共有単位を指示するか、事例ジェネレータに呼応して生成され他の事例ジェネレ ータに関して後に使用される共有単位を指示することができる。
上記した如く、lN5T GEN具体化ジェネレータフラング41 ’tr含6  テWItツカ(D 7 ラグを含み、TEMPL Is INCOMPL杢体 は不完全なフラッグ42.5HARBODY共用本体フラグラグ44である。l N5T GEN具体化ジェネレータフラグ41と5HARBODY共用本体フラ グ43の状態は具体化マツプ25が事例ジェネレータの一部であるかどうかを示 す、上記の如く、総称プログラム構造は最初に総称本体を提示せずに宣言するこ とができ、TEMPL−■S−■NcoMPLテンプレートの状態は不完全フラ グ42で、コンパイル中、総称本体が提示済みであるかどうかを示す。最後に、 もし具体化が言語により提供されるライブラリパッケージ、プロシージャ、ある いは関数に関するものである場合には、プログラム内には何ら明示的な総称プロ グラム構造は定義されない、IMP lN5T GEN暗黙事例ジェネレータフ ラグ44の状態は、プログラムが総称プログラム構造を明示的に定義しているか どうか、あるいは事例ジェネレータがライブラリパンケージ、プロシージャ、も しくは関数に関するものであるかどうかを示す。
ステップ104に続いて、フロントエンドは具体化に関連する具体化マツプ25 内のACTUALS CVの実パラメータにより計算されたベクトルによって記 録される具体化と関連する実パラメータを同定し、(ステップ105)具体化マ ツプを含めて事例ジェネレータをバンクエンドへ移行させる。事例ジェネレータ を受取ると、バンクエンドは編集ライブラリ12が具体化のために使用できる何 らかの共用可能宣言15を含んでいるがどうかの判断に進む。(第2A図、ステ ップ106)この処理において、具体化中の総称プログラム構造と関連するレコ ード14の確認を1集ライブラリ12から取得し、それらの共用可能宣言内をサ ーチして具体化に関して使用可能なものを識別する。
バンクエンドは共用可能宣言を生成する際に使用された代表的実パラメータの特 性をバックエンドにより供給された具体化の宣言における実パラメータの特性と 比較することによって具体化の編集に関連して使用される共用可能宣言15を同 定する。(ステップ106)バックエンドはその代表的実パラメータが具体化の 実パラメータ特性とマツチする共用可能宣言の1a認か、あるいはその代わりに かかる共用可能宣言15が存在しないことの表示の何れかをフロントエンドに対 して戻す、(ステップ107)その後のフロントエンドの処理は、バンクエンド が具体化の編集に関して使用されるはづの共用可能宣言15の確認を返戻するか 否かによって決定される。もしバックエンドがステップ107において共用可能 宣言15の確認を返戻しない場合には、フロントエンドは総称宣言、事例ジェネ レータ、および具体化の実パラメータを使用して共用可能宣言15(第2B図、 ステップ110)の創造に取組む、このプロセスの一部として、フロントエンド は代表的実パラメータをつくりだし、それらを共用可能単位の一部として包含す る。コンパイルのこの時点で、代表的実パラメータは、各々が具体化と関連する 対応する実パラメータに対するポインタを含んでいる点を除いて総称宣言と関連 する総称仮パラメータの属性のみを反映する。
その後、フロントエンドは具体化を含むソースプログラム命令系列のコンパイル を中断し、新たにつくりだされた共用単位をバックエンドヘバスしてその共用可 能単位に対する処理とコード生成を完了する1、バンクエンドによる処理中、バ ンクエンドは代表的実パラメータを更新し、必要であることを発見し目的コード の生成中に使用した実パラメータの特性を反映する。バンクエンドが終了すると 、代表的実パラメータから具体化の実パラメータに対するポインタを除去して共 用可能単位は具体化とは無関係にな。
る、その後、バックエンドは編集ライブラリ12内の共用可能単位を総称プログ ラム構造と関連する新たなレコード内にリンクしくステップ111) 、共用可 能単位の作成を完了する。その後、フロントエンドは具体化を含むソースプログ ラム命令系列の処理を再開する。
新たにつくりだされた共用可能宣言15は、その後具体化と関連する事例ジェネ レータの具体化バンブ25の5HARUNIT POINTER共用可能単位ポ インタフィールド40内にそれを指示するポインタを挿入することによって具体 化のコンパイル関して使用される共用可能宣言として確定される。
共用可能宣言15の構造は第4図に示されている。1つの共用可能宣言の構造は 一つの具体化の構造と類似していることが理解できよう、共用可能宣言はlN5 T DECLEC化宣言ノード51を指示するDECL HEAD宣言ヘッドノ ード50と、5PECDECLEC型言ノード52と、BODY DECLEC 型言ノード53を含む、lN5T DECLEC化宣言ノード51は共用可能宣 言15を作成する事例ジェネレータを指示する。同様にして、5PECDECL EC型言ノード52とBODY DECLEC型言ノード53は総称プログラム 構造中の総称仕様と総称本体を指示する。BODY DECLEC型言ノード5 3はまたそれが提供されるときに総称プログラム構造の総称本体に呼応してつく りだされる種々の共用可能本体16を指示する。上記の如く、総称本体は総称宣 言とは別個に提供することができる。
また・DECL HEAD宣言ヘ宣言ランドノード50L用可能宣言15が共用 可能であることを指示するよう調整されるis 5HAREDフラグ54を含む 、更に、ノード50は共用可能宣言15の作成に関して使用された代表的実パラ メータを格納するバッファ56のポインタ55も含む、バッファ56内の代表的 実パラメータの系列の順序は総称プログラム構造の宣言中の仮パラメータの順序 と同一である。バックエンドが目的コードを生成中に、バッファ56内にコード 生成中に自らが使用した代表的実パラメータの特性を識別する情報を蓄積する。
殊に、一つの仮パラメータが仮型式である場合、代表的実パラメータはデータ表 現、整合性、゛サイズの如き情報を含むことができる。整合性に関する情報はパ ラメータが1ピント、バイト又はワード境界で整合することになっているかどう かを示す、サイズ情報は、例えば、パラメータが単一の要素もしくは値、又は一 系列の値、および各値を表現するために必要なバイト数を表わすかどうかを示す ことができる。
特にエイダについて述べると、もし仮パラメータが仮型式であれば、それぞれの 代表的実パラメータも仮パラメータにより示されるようなパラメータのデータ型 に特有な情報を含む、もしデータ型がDISCRETEであれば、代表的な実パ ラメータはパラメータが等差数列として表現されるかどうかの如き情報を含み、 もしそうであれば、如何にして最初の元が表現されるか、及び数列の元値間の間 隔を識別する。更に、代表的実パラメータは数列の各元を表現するために必要な バイト数を識別する。
データ型がFIXED POINTであれば、代表的実パラメータは最小値とデ ルタ値を識別する。もしデータ型がPRIVATEでされ、如何にして目的が相 等性と制約について比較されるか、また実パラメータが複合型かアレイ型かにつ いての情報を提供する。
もし仮パラメータが形式目的であれば、代表的実パラメータはまた実パラメータ のロケーションや、その目的がバイアスさもなければコーディング形でストアさ れているかどうか、および形式目的に対する制約の如き情報を含むことができる 。
選択された使用情報の型の数は実行可能な共用度合を支配するということが理解 できよう。提供される使用情報の各型式は具体化に必要なコード中に使用される 因子を反映する。従って、もしそれぞれの代表的実パラメータに対して多数の使 用情報型が提供されれば、共用度合は軽減でき、一方、コードはその具体化に一 層特有なものとなろうから性能は向上する。他方、もし使用情報の型の数が減れ ば、より広範囲の共有が可能になり、生成コードの性能は悪影響を受けることに なろう。
ステップ107 (第2A図)に戻ると、もしバックエンドが具体化に適当な共 用可能宣言をつきとめた場合、もしくはステップ111 (第2BrgJ)に続 いて、フロントエンドは生成コード系列内の具体化のロケーションで使用される コードを中間言語で生成する。(ステップ112、第2B図)その後フロントエ ンドはマージ処理を実行して共用可能宣言15からの情報を具体化ロケーション の中間言語コードヘマージする。(ステップ113)その後、フロントエンドは 起動レコードに対して割当て処理を実行し具体化に対するランタイムスペースを 配分する。(ステップ114)起動レコードのサイズはリンクタイムまで決定で きないから、リンクタイム記号を使用して起動レコードを配分する。同レコード はコードの場合の通常のやり方でリンカと置換して具体化に対するランタイムス ペースを割当てることもできる。
適当な共用可能宣言の生成もしくは取得後、フロントエンドは総称プログラム構 造の総称本体が最後のコンパイル以後提供されたかそれとも修正されたかどうか を判断する。もし総称本体が提供もしくは修正されていなければ、フロントエン ドはステップ100(第2A図)へ回帰し次のソースプログラムコード系列を処 理する。他方、もし総称本体が提供されていれば、フロントエンドは具体化と関 連する具体化マツプを完成することによって具体化用の事例ジェネレータの完成 に取組む。(ステップ114)事例ジェネレータを完成する際、フロントエンド はまづ具体化に関して使用される総称プログラム構造の共用可能宣言につき選択 された共用可能宣言15と関連するレコード14内の共用可能本体16の探索も しくは生成を開始する。共用可能本体16は共用可能本体16の生成時に使用さ れる使用情報を識別する代表的実パラメータとそれと関連する特性を含めて、共 用可能宣言15に関して第4図に示すものと類似する構造を備えている。共用可 能本体16の探索もしくは創造に関して実行される処理は(即ち、ステップ11 7と120〜122、第2C図)共用可能宣言15の探索もしくは創造に関して 上記されたものと同様である。
共用可能本体16が探索もしくは作成され終った後(ステップ117と120〜 122、第2C図)、フロントエンドは具体化と関連する事例ジェネレータの完 成に取組む、(ステップ123)不完全事例ジェネレータは適当な条件を有する 不完全フラグであるTEMPL Is INCOMPL本体によって識別される 。
上記の如く、総称本体と関連する具体化ポインタはそれと関連する種々の具体例 を識別する。一つの総称プログラム構造の総称本体が提示された時、指示される 事例ジェネレータはそれぞれ順序良く完成される。ilj集ラビライブラリ12 内動レコードのアドレスがその後決定される。その後、その結果はバンクエンド にパスされ、具体化マツブ25内のポインタを使用して従来通り具体化のコード 生成が行われる。
上記した如く、その後、生成本体を修正することができる。もしそれが行われる と、完成された事例ジェネレータが修正され、総称本体に対する修正を反映する 。
フロントエンドとバンクエンドが各具体化の処理を完了後、それらは次の具体化 の処理に取組み、最終的に総称プログラム構造の具体化は全て処理されてしまう 。
上記の如く、先に生成した共用可能宣言15もしくは共用可能本体16が特定具 体化に関して使用できるかどうかを判断する際に代表的実パラメータの一連の特 性を使用することができる。詳細化の度合は収納可能な共有度合を決定するに役 立つ、更に、一つの共用可能宣言15の代表的実パラメータの特性が共有を可能 にするものかどうかを判断するにあたっては種々の突合せ規則を使用することが できる。例えば、具体化の実パラメータと共用可能宣言の代表的実パラメータの 特性は、もし代表的実パラメータが変数もしくは定数である場合、同一である必 要があるかもしれない、その代わりに、もし一つの代表的実パラメータがアレイ である場合には、突合せ規則は具体化のアレイの大きさを共用可能宣言のアレイ の大きさに一致させる必要があろう。その他の突合せ規則も使用できることが理 解されよう。
上記新規コンパイラは幾つかの利点を提供することは明らかである0例えば一つ の宣言もしくは本体を一つの具体化中で共有できるかどうかの判断を実特性とパ ラメータの使用に基づかせることによって、またそれら特性と使用に基づいて宣 言と本体用のコードを生成することによってコードのランタイム性能は従来のコ ンパイラにより生成されるコードに比し向上させ過去におけるように全ての可能 な具体化を取扱うことができる。更に、共有度合はかかる従来コンパイラよりも 低く、目的プログラムは幾分大きくなるが、それらは総称プログラム構造の全具 体化がインラインで拡張されシェアリング法が活用されない目的コードよりも小 さいであろう。
上記解説は本発明の特殊例に限定して述べたが、本発明の利点の幾つかもしくは その全てを達成しながら、同発明に種々の変更、修正を施すことができることは 明らかであろう。それ故、本発明の真の精神と範囲内に納まるような変更、修正 を包含することが請求範囲の目的とするところである。
浄書(内容に変更なし) IG 2A 具体化に好適な共用宣言が存在 FIG 2B 夕を用いて適当な共用宣言を 共用可能な宣言を編集ライブラリ 内にリンクして総称プログラム 構造を後に具体化する際に共用 宣言からの情報を具体かロケ 114 起動レコードを割当てて具体化関連する事例ジェネレータを をサーチして具体化に通した 共用本体が存在するかどうか 123具体化用に事例ジェネレータを 完成する 手続補正書(方式) %式% 5、補正命令の日付 自 発 7、補正の内容 別紙のとおり 国際調査報告

Claims (4)

    【特許請求の範囲】
  1. 1.A.それぞれが一特性を定義する代表的実パラメータを含む複数の共用可能 プログラム構造をストアする共用可能プログラム構造メモリと、 B.具体化プロセッサと、を備え、 上記プロセッサが、 i.総称プログラム構造の名実パラメータに対する実パラメータを生成する実パ ラメータジェネレータと、ii.上記実パラメータジェネレータにより生成され る名実パラメータにつき一特性を生成する特性ジェネレータと、iii.上記共 用可能プログラム構造メモリから、その代表的実パラメータの特性が具体化の対 応する実パラメータの特性と匹敵する共用可能プログラム構造を選択する共用可 能プログラム構造セレクタと、 iv.具体化用コードを生成する際に選択された共用可能プログラム構造を使用 するコードジェネレータと、を備える総称プログラム構造の具体化のコンパイル に使用されるコンバイラ。
  2. 2.更に、上記共用可能プログラムセレクタに呼応して上記共用可能プログラム 構造メモリ内にストアされる一つの共用可能プログラム構造を生成する共用可能 プログラム構造ジェネレータを備え、上記共用可能プログラム構造メモリが、そ の代表的実パラメータの特性が具体化の対応する実パラメータの特性と匹敵する 共用可能プログラム構造を含まないことを判断する請求項1のコンパイラ。
  3. 3.上記総称プログラム構造が総称宣言とそれに関連する総称本体を含み、上記 共用可能プログラム構造が、複数の共用可能宣言と各々が一つの共用可能宣言と 関連する複数の共用可能本体を含み、上記共用プログラム構造メモリが各共用可 能宣言について一個のレコードを含み、それと関連する共用可能本体の全てを包 含する請求項2のコンパイラ。
  4. 4.ソース言語プログラムをコンパイルする際に総称プログラム構造の具体化を 処理する方法において、各具体化について、A.具体化の実パラメータ特性を先 に生成された共用可能単位の代表的実パラメータの特性と比較することによって 共用可能単位がその具体化について使用可能として存在するかどうかを判断し、 B.もし共用可能単位が存在すれば、その共用可能単位を後続の具体化コンパイ ルにおいて使用し、 C.もし共用可能単位が存在しなければ、その具体化に際して使用される代表的 実パラメータを含み共用可能単位を生成し、上記代表的実パラメータが共用可能 単位の生成時にそれらの使用特性を識別し共用可能単位を次いで処理される具体 化例について使用可能にする、ステップより成る前記方法。
JP1510377A 1988-09-20 1989-09-19 デジタルデータ処理システム用総称コード共用化装置及び方法 Expired - Lifetime JPH0731606B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US24697588A 1988-09-20 1988-09-20
US246,975 1988-09-20
PCT/US1989/004098 WO1990003610A1 (en) 1988-09-20 1989-09-19 Generic code sharing arrangement for digital data processing system

Publications (2)

Publication Number Publication Date
JPH03500463A true JPH03500463A (ja) 1991-01-31
JPH0731606B2 JPH0731606B2 (ja) 1995-04-10

Family

ID=22932994

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1510377A Expired - Lifetime JPH0731606B2 (ja) 1988-09-20 1989-09-19 デジタルデータ処理システム用総称コード共用化装置及び方法

Country Status (7)

Country Link
US (1) US5280617A (ja)
EP (1) EP0390900B1 (ja)
JP (1) JPH0731606B2 (ja)
AT (1) ATE141423T1 (ja)
CA (1) CA1324834C (ja)
DE (1) DE68926956T2 (ja)
WO (1) WO1990003610A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659753A (en) * 1991-02-27 1997-08-19 Digital Equipment Corporation Interface for symbol table construction in a multilanguage optimizing compiler
WO1992015947A1 (en) 1991-03-07 1992-09-17 Digital Equipment Corporation Improved software debugging system and method especially adapted for code debugging within a multi-architecture environment
EP0582738A1 (en) * 1992-08-12 1994-02-16 International Business Machines Corporation Language compiler
JPH0778742B2 (ja) * 1992-08-12 1995-08-23 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピユータ・プログラム言語変換装置及びその方法
US6209040B1 (en) * 1992-10-09 2001-03-27 Microsoft Corporation Method and system for interfacing to a type library
JPH06332678A (ja) * 1993-05-18 1994-12-02 Software Kouchiku Kagaku Kenkyusho:Kk 特定業務用プログラムの製造方法
CA2123924A1 (en) * 1993-06-02 1994-12-03 Charles Douglas Blewett Specifying contexts in callback style programming
JPH07319710A (ja) * 1994-05-20 1995-12-08 Matsushita Electric Ind Co Ltd コンパイル処理方法
US5590331A (en) * 1994-12-23 1996-12-31 Sun Microsystems, Inc. Method and apparatus for generating platform-standard object files containing machine-independent code
US5774726A (en) * 1995-04-24 1998-06-30 Sun Microsystems, Inc. System for controlled generation of assembly language instructions using assembly language data types including instruction types in a computer language as input to compiler
US5701489A (en) * 1995-06-06 1997-12-23 International Business Machines Corporation System for partial in-line expansion of procedure calls during program compilation
US5835771A (en) * 1995-06-07 1998-11-10 Rogue Wave Software, Inc. Method and apparatus for generating inline code using template metaprograms
US6112025A (en) * 1996-03-25 2000-08-29 Sun Microsystems, Inc. System and method for dynamic program linking
CA2178898C (en) * 1996-06-12 2000-02-01 David Joseph Streeter Sequencing and error detection of template instantiations during compilation of c++ programs
US5857070A (en) * 1996-11-22 1999-01-05 Hewlett-Packard Company Method for locating errors in a computer program
US6021273A (en) * 1997-06-30 2000-02-01 Sun Microsystems, Inc. Interpreter generation and implementation utilizing interpreter states and register caching
US6052750A (en) * 1998-01-06 2000-04-18 Sony Corporation Of Japan Home audio/video network for generating default control parameters for devices coupled to the network, and replacing updated control parameters therewith
US6560774B1 (en) * 1999-09-01 2003-05-06 Microsoft Corporation Verifier to check intermediate language
KR100491883B1 (ko) * 2000-12-28 2005-05-31 엘지전자 주식회사 코바 플랫폼을 이용한 동적 데이터베이스 처리방법
FR2823871B1 (fr) * 2001-04-20 2003-07-04 Canon Kk Procede et dispositif de generation du code executable d'un programme d'ordinateur
CA2355989A1 (en) * 2001-08-27 2003-02-27 Ibm Canada Limited-Ibm Canada Limitee Compiling source code files having multiple
US8136109B1 (en) 2002-04-19 2012-03-13 Tibco Software Inc. Delivery of data and formatting information to allow client-side manipulation
US7353521B1 (en) 2002-10-19 2008-04-01 Borland Software Corporation Object oriented distributed software system with methodology for piggybacked reflective callbacks
US6876314B1 (en) 2004-02-18 2005-04-05 Robocoder Corporation Self-generating automatic code generator
US7440863B2 (en) * 2005-04-29 2008-10-21 Agilent Technologies, Inc. Integrated tool for compliance testing within an enterprise content management system
US7890285B2 (en) * 2005-04-29 2011-02-15 Agilent Technologies, Inc. Scalable integrated tool for compliance testing
US20080243943A1 (en) * 2007-03-27 2008-10-02 Shih-Wei Liao Method and apparatus for efficient execution of interprocedural transactional memory code while maintaining safety
US7685565B1 (en) 2009-03-19 2010-03-23 International Business Machines Corporation Run time reconfiguration of computer instructions
JP2011203960A (ja) * 2010-03-25 2011-10-13 Fujitsu Ltd テンプレートコンパイル方法及びテンプレートコンパイル装置
US8930913B2 (en) 2010-09-28 2015-01-06 Microsoft Corporation Intermediate representation construction for static analysis
US9251554B2 (en) 2012-12-26 2016-02-02 Analog Devices, Inc. Block-based signal processing
US8856748B1 (en) 2013-09-17 2014-10-07 Xamarin Inc. Mobile application testing platform
US8881111B1 (en) 2013-09-17 2014-11-04 Xamarin Inc. Testing user interface responsiveness for mobile applications
US9183020B1 (en) 2014-11-10 2015-11-10 Xamarin Inc. Multi-sized data types for managed code
US9213638B1 (en) 2015-03-24 2015-12-15 Xamarin Inc. Runtime memory management using multiple memory managers
US9201637B1 (en) 2015-03-26 2015-12-01 Xamarin Inc. Managing generic objects across multiple runtime environments
CN110709814A (zh) * 2017-06-02 2020-01-17 三菱电机株式会社 程序代码生成装置和程序代码生成程序
US10572275B2 (en) * 2017-06-15 2020-02-25 Microsoft Technology Licensing, Llc Compatible dictionary layout

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1059493B (it) * 1976-04-22 1982-05-31 Olivetti & Co Spa Dispositivo per cambiare l ambiente di lavoro di un calcolatore
US4672532A (en) * 1982-06-14 1987-06-09 Tektronix, Inc. Software/hardware integration control system
US4742467A (en) * 1984-05-04 1988-05-03 Analysts International Corporation Automated programming system for machine creation of applications program source code from non-procedural terminal input
US5142681A (en) * 1986-07-07 1992-08-25 International Business Machines Corporation APL-to-Fortran translators
US5179703A (en) * 1987-11-17 1993-01-12 International Business Machines Corporation Dynamically adaptive environment for computer programs
US5051893A (en) * 1988-07-11 1991-09-24 Digital Equipment Corporation System for processing data to facilitate the creation of executable images
US5062039A (en) * 1988-09-07 1991-10-29 International Business Machines Corp. Sharing of workspaces in interactive processing using workspace name tables for linking of workspaces
US5204947A (en) * 1990-10-31 1993-04-20 International Business Machines Corporation Application independent (open) hypermedia enablement services

Also Published As

Publication number Publication date
WO1990003610A1 (en) 1990-04-05
DE68926956T2 (de) 1997-03-27
JPH0731606B2 (ja) 1995-04-10
US5280617A (en) 1994-01-18
EP0390900A1 (en) 1990-10-10
CA1324834C (en) 1993-11-30
DE68926956D1 (de) 1996-09-19
EP0390900B1 (en) 1996-08-14
ATE141423T1 (de) 1996-08-15

Similar Documents

Publication Publication Date Title
JPH03500463A (ja) デジタルデータ処理システム用総称コード共用化装置及び方法
US5956512A (en) Computer program debugging in the presence of compiler synthesized variables
US5339428A (en) Compiler allocating a register to a data item used between a use and store of another data item previously allocated to the register
US5577253A (en) Analyzing inductive expressions in a multilanguage optimizing compiler
US5613117A (en) Optimizing compiler using templates corresponding to portions of an intermediate language graph to determine an order of evaluation and to allocate lifetimes to temporary names for variables
US5142681A (en) APL-to-Fortran translators
US8347266B2 (en) Declarative object identity
Graham Table-driven code generation
Ganapathi et al. Affix grammar driven code generation
US5367683A (en) Smart recompilation of performing matchup/difference after code generation
NZ241694A (en) Compiling computer code: optimizing intermediate language flow graph using routine to fold constant expressions
JPH03172936A (ja) 手順間レジスタ割付けを伴うコンピュータプログラムのコンパイル方法及び装置
JPH01166141A (ja) デバッグ情報提供方法
US6631517B1 (en) Software constructs that facilitate partial evaluation of source code
KR950006609B1 (ko) 다중 패스코드 발생에 있어서 템플리트를 이용한 다중 언어 최적화 컴파일러
Bailey et al. A formal model and specification language for procedure calling conventions
US5625822A (en) Using sorting to do matchup in smart recompilation
US6009273A (en) Method for conversion of a variable argument routine to a fixed argument routine
WO2007027366A1 (en) Nullable and late binding
US5535392A (en) Using hint generation to cause portions of object files to remain the same
Guyer et al. Optimizing the use of high performance software libraries
CN111309449A (zh) 面向元编程、交互式编程和区块链互操作的与编程语言无关的虚拟机
Strecker Compiler verification for C0 (intermediate report)
EP1785848A1 (en) Method and apparatus for semantic checking of program code
Kessler et al. EPIC-a retargetable, highly optimizing Lisp compiler