JPH05508494A - ソフトウェア開発のためのコンピュータプログラムの統合階層表示 - Google Patents
ソフトウェア開発のためのコンピュータプログラムの統合階層表示Info
- Publication number
- JPH05508494A JPH05508494A JP3512079A JP51207991A JPH05508494A JP H05508494 A JPH05508494 A JP H05508494A JP 3512079 A JP3512079 A JP 3512079A JP 51207991 A JP51207991 A JP 51207991A JP H05508494 A JPH05508494 A JP H05508494A
- Authority
- JP
- Japan
- Prior art keywords
- program
- source code
- representation
- node
- ihr
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3664—Environments for testing or debugging software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
Abstract
(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。
Description
【発明の詳細な説明】
ソフトウェア開発のためのコンピュータプログラムの統合階層表示
技 術 分 野
本発明は一般にコンピュータプログラムのソフトウェアの開発そして特に原始コ
ードプログラムからオブジェクトコードファイルを発生するコンパイラおよび、
上記オブジェクトコードファイルがコンピュータシステム、特に高性能マルチプ
ロセッサシステムにより実行されるときそれらをデバッグするためのデバッガ−
の最適化に関する。
背 景 技 術
最近ソフトウェアの開発はコンピュータプログラムを発生するプロセスにおける
二つの独立したタスク、すなわちコンピュータ処理システムで走行されるべき実
行可能オブジェクトコードファイルへのそのプログラムのコンパイル、およびそ
のコンピュータ処理システムでその実行可能なファイルが実行されているときの
そのデバッキングに焦点づけられている。一般に、コンパイラの異るバージョン
が夫々のプログラム言語および夫々のコンピュータ処理システムについてつくら
れる。同様に、別々のデバッガ−が夫々のコンピュータ処理システムにおける実
行可能なオブジェクトコードをデノくラグするためにつくられる。コンノくイラ
とデノくツガを別々1;つくることにより、殆んどの従来のソフトウェア開発シ
ステムlよ、夫々のツールがそのシステム内のツールにつ0て殆んどあるいは全
く知識を有しない、別々の゛ソールの集合である。
コンパイラの設計と構成は例えばアホ、セチおよびウルマン(^ho、 5et
hi and Ullman ) 、コン、(イラズ:原n1ques and
Tools) 、アデイソンーウエズリイ(Addison−Wesley)
(198[1) ;およびウェイト他(watte et al )三ンガー7
sルラグ(Sprlnger−Verlag) (1984)のよう1;従来周
知である。コンパイラはFORTRANのような与えられたコンピュータ原始言
語を与えられたコンピュータ処理システム(すなわちターゲット機械)1こより
実行可能なコードに変換する。コンピュータ原始言語のコンパイルは一連の変換
を通じて行われる。まず、原始コードを含む記号ストリングが辞書的に分析され
て翻訳用の原子ユニットまたはワードを確認する。次1こ、その言己号ストリン
グが構文的に分析されてワード間の文法関係を確認する。一般に、その出力は構
文解析木の形で表現され、そしてこの構文解析木が原始コードの中間言語表現に
変換される。殆んどのコンノくイラは構文解析木を明確な形では発生せず、構文
解析が行われるときに中間コードを形成する。次にこの中間コードに最適化が行
われ、ソノ後、ターゲット機械−実行可能またはオブジェクトコードが発生され
る。現在の高性能のコンピュータ処理システムについてのコンパイラの最適化の
例は日立S−810スーパーコンピユータ用のコンパイラ(例えば米国特許第4
773007号、同第4807126号、同第4821181号、同第4833
606号、同第4843545号および同第4853872号)、クレイ−1ス
ーパーコンピュータ用コンパイラ(例えばクレイリサーチバブリケーション5R
−0018)および18Mメインフレームコンピュータ用コンパイラ(例えば米
国特許第4782444号、同第4791588号および同第4802091号
)を含む。
デバッガの設計と構成も従来周知である。デバッガはオブジェクトコードファイ
ルの実行におけるエラーを識別しそして実行可能オブジェクトコードファイル内
で明らかとされたエラーの原因を原始コードプログラムまで追跡するのを助ける
ことにより、実行可能コードの発生においてプログラマ−を支援する。殆んどの
デバッガは、コンピュータ処理システムのハードウェアの特徴とそのシステムで
のオブジェクトコードファイルの実行との間に固有の関係があるため、夫々のコ
ンピュータ処理システムに固有のものとなっている。デバッグプロセスは与えら
れたコンピュータ処理システムで実行する与えられたプログラミング言語につい
て比較的簡単なものでありうるが、現在のデバッガについての問題は最適化コン
パイラ、すなわち例えば高性能コンピュータ処理システム用のソフトウェア開発
システムの部分により発生される実行可能コードにおけるエラーの有効な識別を
行うことである。最適化コンパイラにより発生される実行可能コードのデバッグ
の困難性は、そのコンパイラがマルチプロセッサシステムにおける2以上のプロ
セッサで実行しうるコードを発生するとき更に大きくなる。
最適化はマルチプロセッサシステムを含む高性能コンピュータ処理システムで実
行されるべきプログラムについてしばしば行われる。コンパイラシステムの最適
化部分の目的は、(a)そのプログラムの実行速度を上げること、(b)実行可
能コードのサイズを減少すること、(C)効率のよい資源割り振りにより処理コ
ストを最少にすること、である。最適化コンパイラでしばしば用いられる最適化
は一般に“局所“最適化と“大域゛最適化として知られている二つのクラスに分
けることが出来る。
局所最適化は“基本ブロック”のような比較的小さい領域またはわすかに2個の
隣接した機械命令の解析にもとづくものである。入城最適化は2個以上の基本ブ
ロックの解析にもとづくものである。その例は“コードモーション° (ループ
をはずれて動くコード)および“入城共通部分表現削除(global co■
on 5ubexpressfon elil−nation)”である。コン
パイルシステムでは現在多くの形式の局所および入城最適化が用いられているが
、それらのすべてが原始コードプログラムの組織と構造から明らかでなくその結
果プログラムの効率のよいデバッグに関連する問題が大きくなるような形でプロ
グラムの実行に影響する。これら問題は、2個以上のプロセッサが与えられたプ
ログラムについての実行可能コードファイルの部分を実行中となることのあるマ
ルチプロセッサシステムでは更に大きくなる。
一般に、異るプログラム言語についてのコンパイラはコンパイルプロセス中興る
中間表現を用い、デバッガはそのデバッグプロセスにおいて更に他の中間表現を
用いる。デバッガは種々のコンパイラで用いられた中間表現についての知識がな
いため、最適化された実行可能コードを元の原始コードに関連づける方法をもた
ず、その結果、最適化されたコードのデバッグが非常に困難となる。
また、異る中間表現を用いるコンパイラについては、言語間のインライン処理が
不可能である。殆んどの従来のアラセンブラーは共通の中間表現を用いないため
、アッセンブリ言語プログラムは高レベル言語プログラムについて用いられたも
のとは異るデバッガを用いなければならない。更に、これまではアッセンブリ言
語プログラムの最適化は殆んど試みられていない。その理由は部分的には、アッ
センブリ言語プログラムがプログラマが書込もうとする様に書込まれるとする仮
定のためであり、そして部分的にはアッセンブリ言語プログラム専用のオブチv
イf (optimizer )を開発するためのコストである。
エイノ(Ada)プログラム言語用のエイダブログラム支援エンバイロンメント
(Ada Programs!ng SupportEnvironment
(A P S E ) )のような最近のソフトウェア開発システムは上記問題
のいくっがを解決するためにコンパイルシステム内の要素の多くにより共用され
る共通の中間表現(CIR)を用いる。しかしながら、D I ANAと呼ばれ
るこの共通中間表現はエイダブログラム言語に専用のものである。かくして、コ
ンパイルシステムでの中間レベルでの言語の混用は不可能である。
更に、D IANAはそれ自体、原始プログラムについてオブチマイザにより行
われる変換を表わすことは出来ない。そのため、エイダエンバイロンメントでの
最適化されたプログラムのデバッグは困難である。例えばエイノデバッガは、コ
ンパイラが変数をメモリ位置ではなくレジスタに維持することを決定するとすれ
ばその変数の値をどこで見い出すかについて知らされない。また、D I AN
Aは機械レベルでの命令を表現せず、そのためアッセンブリ言語プログラムの最
適化を支援するためのD I ANAの使用は不可能である。
他の最近のコンパイラシステム(米国特許第4667290号)は同一の共通中
間表現をつくる異ったプログラム言語用の複数の前置装置(multiple
frontends)を限定している。この方法は初期のソフトウェア開発シス
テムにおける問題の内のいくつかを解決するものであるが他の問題は解決出来な
い。まず、この従来のソフトウェア開発システムでつくられるCIRの順次型特
性は原始プログラムにおいてオブチマイザにより行われる変換を表現出来ない。
第二に、デバッガはこの開発システムと密に統合されていない。そのため、デバ
ッガはコンパイラにより行われた変換の種類を知ることが出来ず、それ故最適化
されたコードのデバッグは困難である。第三に、この従来のソフトウェア開発シ
ステムにおけるアッセンブリは共通の中間表現ではなく、再配置可能なオブジェ
クトコードを発生するから、コンパイラはアッセンブリ言語プログラムを最適化
するためには使用出来ない。このようにビーブホール最適化のような原始的な最
適化のみが機械従属レベルで行えるにすぎず、すなわちコードのレベルでは特定
のターゲット機械で走行しつるのみである。第四に、この従来のソフトウェア開
発システムのデバッガはコンパイラで発生したClR1::ついて動作するよう
に設計されているからこれはアッセンブリ言語プログラムの原始レベルのデバッ
グには不適当である。他の従来のシステムではこの問題はアッセンブリ言語プロ
グラム用の原始的デバッガを設けることにより解決している。しかしながら、こ
れにはユーザ・は二つの異るデバッガ、すなわち高レベル言語のデバッグ用とア
ッセンブリ言語のデバッグ用のものを学ばなくてはならない。
コンパイラ、アッセンブリおよびデバッガ用の統合されそして単一化された中間
表現が使用可能であるとしても、現在の方法およびシステムは最適化に最も適し
た形で情報を表現しない。従来のソフトウェア開発システムで利用される種々の
形式の共通中間表現は原始コードでの実際のプログラミングステートメントにの
み関する情報の本質的に単純な線形表現である。従来のソフトウェア開発システ
ムの共通中間表現はコンパイルされたプログラムについての重要な文脈および最
適化情報を保存するための機構を有していない。最も重要なことは、現在の共通
中間表現の実際の構造が、原始コードプログラムのコンポーネント間の関係の多
くを露呈しないため効率のよい最適化を可能としないということである。
現在のソフトウェア開発システムは与えられた原始コードプログラムについて効
率のよい効果的な実行可能なオブジェクトコードファイルをつくることが出来る
が、原始コードを最適化されたオブジェクトコードプログラムについてのすべて
の形の情報の共通表現を可能にする、完全に統合されたソフトウェア開発システ
ムは存在しない。その結果、ソフトウェア開発システムのすべてのコンポーネン
トにより一つの共通の中間表現が効果的に利用しうるようにすると共に、特に高
性能マルチプロセッサエンバイロメントでの最適化とデバッグ用のプログラムに
ついての付加的な情報を表現することの出来る統合ソフトウェア開発システムの
必要性がある。更に、ソフトウェアの開発中、多種の最適化技術を行うより適し
た、この共通中間表現を行うためのよりすぐれた方法および構造の必要性がある
。
発明の要約
本発明は1以上の手順プログラム言語で書かれた原始コードプログラムを実行可
能なオブジェクトコードファイルにコンパイルするための共通中間表現として完
全に統合された階層型表現(以下IHRと記す)を利用するモジュラコンパイル
システムである。この統合された共通中間表現の構造は機械独立性最適化並びに
機械従属性最適化の両方を支援しそしてまた実行可能オブジェクトコードファイ
ルの原始レベルのデバッグを支援する。この統合階層表現(IHR)は言語依存
型であり、デバッガを含むソフトウェア開発システムのコンポーネントのすべて
により共用される。本発明においては″言語依存型゛は、IHRが複数の高レベ
ル手順コンピュータプログラム言語並びに特定のアッセンブリ言語を表現出来る
ことを意味する。すべてのコンポーネントが同一のIHRを共用するのであるか
ら、システム内のどのコンポーネントもソフトウェア開発システム内の他のコン
ポーネントにより発生されたコンピュータプログラムについての情報を理解出来
る。
個々のプログラムステートメントにのみ関係する従来の共通中間表現は異り、本
発明のIHRは最適化とデバッグのためのコンピュータプログラムについての付
加情報を表現することが出来る。例えば、本発明のコンパイルシステムはIHR
で行われた最適化についての情報を含む。これにより、デバッガはユーザに、実
際の最適化されたコードがどのように見えるかについての正確な情報を与えるこ
とが出来る。この付加情報をどのように使用するかについての例として、コンパ
イラがプログラムの特定の領域にわたりレジスタ内の一つの変数を維持するよう
に選ばれた場合を考えてみる。オブチマイザはIHR内のこの情報に気付き、そ
れ故、その変数がレジスタに記憶されていたとしてもその変数の値を見い出すこ
とが出来る。この付加情報がなければ、ユーザはそのプログラムの特定の領域の
実行中にその変数の真の値を知る方法はない。本発明のIHRに記憶される付加
情報の他の例は命令スケジューリングに関する情報である。命令スケジューリン
グ最適化の結果、コンパイラは実行速度の改善のため原始言語ステートメントに
関係する命令を移すかあるいは再配列することになる。命令の移動についての情
報は、元の原始言語ステートメントに対応する実行可能オブジェクトコードファ
イルのどこに区切点をセットするかについてデバッガが知るようにIHRの構造
内に効率よく表現される。
本発明のIHRは手順インラインのための新規でより効率の高い手段を可能とす
る。手順インラインは、コンパイラが手順呼出しをその呼出された手順のコード
の実体と置き代えて呼出された手順コードがプログラムコードの部分として実行
するようにするプロセスである。手順呼出しがプログラムコードにインライン化
されないときにはそれら呼出しはプログラムコードの実行中に行われそしてかな
りのオーバヘッドを生じさせることになりうる。一つの手順呼出しのオーバヘッ
ドは他の異るコードセクションへのジャンプを行いそしてそのコードセクション
からもどるための時間的コストとそれらジャンプについてのレジスタの保存と回
復である。インラインは一つのプログラムの実行中になされる手順呼出しのオー
バーヘッドを保存する。本発明のインライン方法は従来のインライン方法に対し
二つの重要な利点を与えるような形でIHRを用いる。まず、本発明は異る言語
間のインラインを可能にするように言語間の制約を除くためにIHRを用いてイ
ンラインを行う。第二に、本発明はプログラムの完全な最適化を保証しそしてフ
ァイル間にまたがり呼出された手順をインラインするように、コンパイル/最適
化プロセスにおける二つの独立した点で手順的インラインを行う。
従来の共通中間表現に対する他の改善点は、本発明が高レベル言語およびアッセ
ンブリ言語の両方を同一のIHRを用いて表現しうるということである。そのた
め、高レベル言語についてコンパイラにより行われる多数の最適化がアッセンブ
リ言語プログラムでも行いうる。例えば、命令スケジューリングは従来のアッセ
ンブラでは行われないが、本発明ではそれを行うことが出来る。アッセンブリ言
語プログラムの原始レベルのデバッグは高レベル言語デバッガと同一のデバッガ
を用いて可能である。デバッガはIHRを理解しそしてコンパイラとアッセンブ
ラの両方が同一のIHRを発生するがら、アッセンブリ言語プログラムと高レベ
ル言語プログラムの両方のデバッグが単一のデバッガを用いて達成出来る。
本発明のIHRは原始コードプログラムに関係するすべての形式の情報の階層的
図形形データ構造表現である。
その広義の形ではこのIHRは手順プログラム言語とターゲット機械に対して独
立したハイフオーム(HiForm(IF))表現およびターゲット機械に従属
するローフオーム(LoFors (L F ) )表現からなる。階層的図形
データ構造を用いてIHRは、夫々がプログラムについての成る情報を図形表示
すると共にIHRの他のノードと成る形式の関係を有する関連ノードセットとし
て原始コードプログラムについての異る情報レベルおよびタイプを表現する。一
般に、プログラムについての三種の異る情報がIHRのノード構造に表現されつ
る。すなわち文脈情報、実行可能情報および最適化情報である。それらすべての
種類の情報間の種々の相互関係のために、夫々の種類の情報は1以上のノードの
すべてまたはその部分として表現されうる。統合ノードセットとしてのこれら三
種の情報のIHRによる図形表現はコンパイル中の多種の最適化技術、特に一つ
のプログラム内の種々の関係の図形解析(例えば制御フロー、従属性解析等)に
もとづく最適化技術を実施するための効率のよい効果的な機構を与える。
最高レベルではプログラムモジュールは静的プログラムスコープ(有効範囲)ノ
ードの集合として表わされる。
スコープノードは一つのプログラムのスコープのHF表現を含む。原始言動プロ
グラム内の夫々固有のスコープは一つのHFスコープノードに対応する。各スコ
ープノードはスコープのタイプ、関連記号ノード、このスコープ内に限定される
記号についての記号テーブルおよびスコープグラフをつくるために使用出来る他
のスコープノードへの接続(兄弟スコープおよび親および子のスコープ)、に関
する情報を含む。
各スコープノードについて記号ノードとブラグマ(pragma)ノードの関連
セットがある。記号ノードは名前のついたオブジェクトのハイフオーム(HF)
表現である。定数、変数、仮パラメータ、構造的コンポーネント、ラベル、マク
ロ、静的データブロック、等についての記号ノードが存在する。一つのスコープ
の記号ノードはそのスコープ内で使用しうるすべての記号を限定する。
このレベルにおける変数およびステートメントについての記号ノードは一般に原
始コードプログラムで用いられる実際のプログラム変数に対応する。プラグマノ
ードはそのスコープノードについてのコンパイラ指示およびそれら指示(例えば
最適化制御、リスト(listing ) 、制御、等)をつけうる他の付加情
報を表わす。
各スコープノードには一連のステートメントノードが関連づけられる。ステート
メントノードはステートメントのハイフオーム(HF)表現を含む。夫々の非構
造化(unstructured)原始言語ステートメントは一つのHFステー
トメントノードに対応し、構造化(5tructed)原始言語ステートメント
は数個のHFステートメントノードに対応しうる。ステートメントノードは辞書
的順序でリンクされる。これは基本ブロックが含む最初と最後のステートメント
ノードの識別を可能にすることによりその基本ブロックの表現を容易にする。
各ステートメントノードは関連する式(expression)ノード群を有す
る。弐ノードはHFでの式の表現である。
式は関連するステートメントをつくる一組の演算子(例えばロード、加算、乗算
)とオペランド(すなわち変数または定数)を表わす。概念的には一つの式は関
連するステートメントにより定められた演算の結果であるプログラム内の成る値
の表現である。
式ノードにはリテラルノード、タイプノードおよびLFノードが関連づけられる
。リテラルノードはオブジェクトまたはオペランドにコンパイル一時間定数を付
加したもののHF表現である。タイプノードはオブジェクトのデータのタイプ(
例えば整数、浮動小数点、倍精度)のHF表現である。各式に関連した最低レベ
ルにおいて、LFノードはその成用に発生された機械命令の表現である。式の種
類により、1個以上のLFノードが階層木関係における一つの弐ノードに関連す
る。
夫々のノードに関係する実際の情報はプログラムに関する三つの一般的な情報の
種類(文脈、実行および最適化)の内の一つ以上を含むことが出来るが、一般に
文脈情報はスコープノードと記号ノード内に表わされそして実行情報はステート
メントおよび式ノードに表わされる。
最適化情報は文脈および実行情報の解析からコンパイルシステムにより発生され
る情報であり、そして一般に三つの付加的ノード構造ニブロックノード、DUD
eノードおよびDarcノードおよびループノードに記憶される。
定義−使用(def 1nit 1on−use)情報は変数定義をその定義に
より影響を受けるその変数の使用のすべてに関連づける。使用一定!!、 (u
se−defir+ftfoi)情報は一つの変数の使用をその使用に影響する
変数のすべての定義に関連づける。定義一定義(del’1nitions−d
efinition)情報は変数定義をその定義により廃棄とされた変数のすべ
ての定義に関連づける。本発明は単一および複数のワード変数、等価とされた(
5quivalenced)変数、ポインタおよび手順呼出しくすべての潜在
的な側効果を含む)についての定義−使用、使用一定義および定義一定義の情報
をベクトル化および多重実行についてなされた従属性解析の一体部分である単一
の表現(DUDeノードおよびDARCノード)に組み入れる。各DUDeノー
ドは一つの変数の使用または定義を表わす。2個のDUDeノードが、可能なデ
ータの従属性が存在するとき、一つのDARCノードに接続する。
最適化を支援する他の構造は構造図である。IHRのこの部分は高レベル言語プ
ログラムにおけるループの静的なネストを表わす。この構造図はループノードと
ブロックノードを含む。ループノードは高レベル言語におけるループ(例えばF
ORTRANにおけるDO小ループCにおけるループについて)を表わす。ブロ
ックノードは高レベル言語プログラムでの基本ブロックを表わす。
この構造図はプログラム内のループと基本ブロックの階層を示すように接続され
る。
本発明は特にマルチプロセッサコンピュータ処理システムに用いて好適であり、
特に複数の密に結合した、一つの共通のメモリを共用するプロセッサを有する高
度に並列のマルチプロセッサシステムに用いて好適である。
しかしながら、本発明は単一のスカラプロセッサからバイブラインベクトル処理
機構を有する高度並列マルチプロセッサシステムまでのコンピュータシステムに
ついても同様に有効である。
好適な実施例では本発明の統合モジュラコンパイルシステムには、プログラム管
理プログラム、コンパイラ、ユーザインターフェースおよび分散デバッガを含む
一群の統合プログラム開発ツールからなる。プログラム管理プログラムはソフト
ウェアプログラムを表わす原始コードファイル用の開発エンバイロメントを制御
する。コンパイラは並列実行の可能な多重系からなるオブジェクトコードファイ
ルをつくるために原始コードファイルをコンパイルする。実行可能コードファイ
ルはこのオブジェクトコードファイルからとり出される。ユーザインターフェー
スはマルチプロセッサシステムでの実行可能コードファイルの実行をモニタし制
御するために使用可能な状態、制御および実行オプションの共通の可視表示を与
える。11(Rを用いる分散デバッガはマルチプロセッサー システムでの実行
可能コードファイルの実行の情報および制御をデバッグする。
アッセンブリ原始コードプログラムからオブジェクトコードを発生するアッセン
ブラはアッセンブリ言語プログラムの成る種の最適化を自動的に行う。アッセン
ブラはLFを発生しそれが2進ジエネレータによりオブジェクトコード(機械命
令)に変換される。このアッセンブラは更にアッセンブリ言語プログラム用のH
Fも発生する。これはプログラムのHF表現と本発明の分散デバッガとの間の統
合により、アッセンブリプログラムのデバッグに有用な情報を与える。
この分散デバッガはこのマルチプロセッサシステム用の最適化された多重実行オ
ブジェクトコードをデバッグすることが出来る。これはまたマルチプロセッサシ
ステムとそのシステムと共にネットワークをつくる1個以上の遠隔システムを含
む全コンピュータネットワークにまたがる分散プログラムもデバッグする。コン
パイラによりつくられる最適化された並列オブジェクトコードはユーザの原始コ
ードのコンパイルの結果として通常ユーザが期待する非最適化単−プロセッサコ
ードとは実質的に異るものである。この種のエンバイロンメントでのデバッグを
行うために、この分散デバッガは本発明のIHHに含まれる情報を用いて原始コ
ードファイルをソフトウェアプログラムの最適化された並列オブジェクトコード
ファイルにあるいはその逆にマツピングする。
本発明の主目的は言語−独立性および機械−独立性最適化並びに機械−従属性最
適化、および最適化された実行可能オブジェクトコードファイルの原始レベルの
デバッグを支持することの出来る統合階層表現を提供することである。
本発明の他の目的はコンパイラ、デバッガ、アッセンブリ、オブチマイザおよび
コードジェネレータを含む、統合モジュラソフトウェア開発システムのコンポー
ネントのすべてにより共用される統合階層表現を提供することである。
本発明の他の目的は原始コードプログラムと関連する文脈、実行および最適化情
報を表わすために図形的な階層データ構造を用いそしてソフトウェア開発中の種
々の最適化技術、特にプログラム内の種々の関係の解析にもとづく最適化技術を
用いるための効率のよい有効な機構を与える、統合階層表現を提供することであ
る。
本発明の他の目的は統合階層表現と、アッセンブリおよびコンパイラにより共用
される共通のオブチマイザを用いることによりアッセンブリ言語プログラムを最
適化する方法を提供することである。
本発明の他の目的は言語−独立性統合階層表現を用いることによりアッセンブリ
言語プログラムの原始レベルでのデパックを行う方法を提供することである。
本発明の他の目的は高度並列マルチプロセッサシステム用の原始コードを発生し
デバッグするに特に適した統合モジュラコンパイルシステムを提供することであ
る。
本発明の他の目的は言語間インラインおよびコンパイ来る統合モジュラコンパイ
ルシステムを提供することである。
本発明の上記および他の目的は図面、好適な実施例の詳細な説明および請求範囲
から明らかとなるものである。
図面の説明
図1aおよび1bは本発明のソフトウェア開発システムのコンポーネントの全体
ブロック図である。
図2a−1,2a−2および2bは本発明の統合階層表現(IHR)の構造を示
す全体ブロック図である。
図3は本発明における式ノードとLFノードの間の関係を示すブロック図である
。
図4aおよび4bは本発明の流れ図であって、高度に最適化されたコード言語間
インラインのデバッグ、アッセンブリ言語プログラムの最適化と原始レベルのデ
バッグを可能にするIHRへの原始プログラムの変換方法を示す図である。
図5aおよび5bは最適化されたコードのデバッグのための情報を与えるデバッ
ガレジスタマツピングの構造および最適化されたコード内の変数を含むレジスタ
を決定する方法を示す図である。
図6は最適化情報を含むループ構造図の構造を示す図である。
図7は本発明のソフトウェアアーキテクチャを実行するための単一マルチプロセ
ッサクラスタシステムの好適な実施例のブロック図である。
図8aおよび8bは図7に示すマルチプロセッサクラスタシステムの4個のクラ
スタの実行を示すブロック図コンパイラ、アッセンブリおよびデバッガを含むソ
フトウェア開発システムは周知である。そのような開発システムに関連する概念
および用語のワーキングの理解は本発明の好適な実施例を説明する上で必要であ
。るコンパイルシステムの技術の現在の状態の詳細な説明につい参照する。
本発明は任意の数のコンピュータ処理システムについて作用することが出来るが
、本発明を実行するためのコンピュータ処理システムの好適な実施例は一つの共
通メモリを共用する複数の密に結合したプロセッサを含む高度に並列のマルチプ
ロセッサクラスタシステムである。
図7に示す本発明を実行するためのマルチプロセッサクラスタシステムの好適な
実施例における単一のマルチプロセッサクラスタは共用資源の大きなセット12
(例えば主メモリ14、大域レジスタ16および割込機構18)を共用する複数
の高速プロセッサ10を有する。この実施例ではプロセッサ10はベクトルおよ
びスカラーの両方の並列処理が可能であり、そして調停ノード手段20を介して
共用資源12に接続する。プロセッサ10はまたこの調停ノード手段20と複数
の外部インターフェースポート22および入力/出力集線装置(IOC)24を
介して種々の外部データ源26に接続する。外部データ源26は1以上の高速チ
ャンネル30を介して入力/出力集線手段24にリンクする2次メモリシステム
(SMS)28を含むことが出来る。またこの外部データ源26は1以上の標準
チャンネル34を介して入力/出力集線装置にリンクする種々の他の周辺装置お
よびインターフェース 32にも接続しつる。この周辺装置とインターフェース
32はディスメモリシステム、テープメモリシステム、端末およびワークステー
ション、プリンタおよび通信ネットワークを含むことが出来る。
図88および8bはこのマルチプロセッサシステムの4クラスタ型バージヨンの
ブロック図を示す。各クラスタ40a、40b、40c、40dはそれ自体のプ
ロセッサセット10、共用資源12およびそのクラスタに関連する外部インター
フェースポート22(図示せス)ヲ物理的に有する。クラスタ40a、40b、
40c、40dは本願の親出願で詳述されているように夫々の調停ノード手段2
0の一体化部分である遠隔クラスタアダプタ手段(図示せず)を介して相互に接
続する。クラスタ40 a、 40 b、 40 c、 40 dは物理的に分
離されているが、それらクラスタの論理構成および遠隔クラスタアダプタ手段を
介しての物理的相互接続は共用資源12のすべてに対する所望の対称形のアクセ
スを可能にしている。この実施例のマルチプロセッサクラスタシステムは並列性
が望まれるコンピュータ修理工ンバイロンメントをつくる。そのようなマルチプ
ロセッサシステムの並列資源を協調させ同期化する際に本発明を支援するマルチ
プロセッサクラスタシステムにおける機構のいくつかは限定的なものではないが
、次のものを含む:信号機構、高速割込機構および大域レジスタおよびそれら大
域レジスタにおいて作用するTAS、FAA、FCAおよび5WAPのような原
子オペレーションを含む分散人力/出力サブシステム;アーク命令、ロード命令
、会計カウンタおよびウォッチポイント(watchpoint)アドレス;お
よび命令キャッシユとベクトル命令の分離発行および開始を含む、プロセッサ1
0のバイブラインオペレーションを支援する種々の機構。これら機構は共にそし
て個々にこの好適なマルチプロセッサシステムの共用資源への対称的アクセスお
よびマルチレベルバイブラインオペレーションを支援する。
図18および1bにより本発明の種々のモジュラコンポーネントを説明する。コ
ンパイラ200は種々の使用可能プログラミング言語について本発明の統合階層
表現(IHR)をインターフェースする1個以上の前端モジュールを含む。コン
パイラ200のこの好適な実施例はフォートラン前端モジュール(Fortra
n front−end )201とC先端モジュール(Cfront−end
) 202を含む。前端モジュール201と202はハイフオーム(HfFo
r−)(HF)で示す高レベル統合階層表現での原始コード表示を発生する。H
F表現はオブチマイザ203、コードジェネレータ204、ローフオーム(Lo
Forl)オブチマイザ205および2選ジェネレータ206により用いられる
。ローフオーム(LoForl)(L F)で示される低レベル統合階層表現は
コードジェネレータ204並びにアッセンブラ210により発生される。LF表
現はローフォームオブチマイザ205と2進ジエネレータ206により用いられ
る。IHRのHFおよびLFコンポーネントの好適な実施例およびIHRとソフ
トウェア開発システムの種々のコンポーネントとの間の関係は後述する。
前端モジュール201と202の目的は原始コードプログラムの統合階層表現(
IHR)の第1段(HF)におけるソフトウェアプログラムについての原始コー
ドの表現をつくることである。前端モジュール201と202はその原始コード
をハイフオームに分解する。この分解は原始コードの構文的な正確性を決定しそ
して原始コードを中間コードに翻訳する。Cおよびフォートラン前端モジュール
201と202はオブチマイザ203とコードジェネレータ204を共用するか
ら、プログラマは同一アプリケーションにおいて異るプログラミング言語を容易
に混合することが出来る。付加的な言語についてのコンパイラ前端モジュールを
コンパイラ200に付加することが出来、そしてそれは存在する前端モジュール
とオブチマイザ203およびコードジェネレータ204を共用する。
好適な実施例においてはCハンバイラ前端モジュール201はANSI X 2
.159−1989 C言語標準にもとづく。Cコンパイラ前端モジュール20
1への拡張はシステムV (System V)のプログラマ−が他のCコンパ
イラにおいて慣れているものと同一の機能を与える。コンパイラ指示(Comp
iler directive)の形の付加的拡張によりCPU−指導型(CP
U−intensive )または大規模技術/科学アプリケーションが得られ
る。Cコンパイラ前端モジュール201はマクロ処理を行い、後述するようにI
HHの部分としてデバッグのためのマクロの定義を保存する。フォートランコン
パイラ前端モジュール202はANS rフォートラン77にもとづいており、
他のユーザ(vendor)のフォートランコンパイラとの原始コード互換性に
ついてのいくつかの拡張を含む。
すべての拡張は二つの異るユーザによるそれらにおけるコンフリクトがなければ
一つのプログラムで使用しうる。
また、それら拡張は後述するようにIHHの部分として保存される。IHRの好
適な実施例はCおよびフォートランの両方のプログラム言語を支持しうるHFお
よびLF表現で与えられるが、IHRに対する付加および変更がエイゾ、パスカ
ル(pascal)のような他のプログラム言語のプログラミング特性を支持す
るために必要となりうる。
オブチマイザ203は標準スカラー最適化を行い、そしてベクトル化または自動
的なスレッドが出来るコードのセクションを検出してそれら最適化を行う。オブ
チマイザ203は、より高速で走行するオブジェクトフードが数回の言語および
機械−独立性最適化を行うことで生じるようにHFコードを改善しようとする。
オブチマイザ203は積極最適化(aggresstve opti膳1zat
1on )を行う。これら最適化は原始コードの自動的スレッド、原始コードの
自動的ベクトル化、より良い最適化のための手順間解析、および後述するような
手順の自動的インラインを含む。またこのオブチマイザ203は好適なマルチプ
ロセッサシステムのベクトル能力を用いるすべての機会を識別するために拡張従
属性解析を行う。この従属技術解析は多重スレッドを行うために用いられ、そし
てこれが単一プログラムに複数のプロセッサを同時に適用しうるようにする。ま
たこのオブチマイザはスカラーハードウェアを最も効率よく使用するための広い
範囲のスカラー最適化を適用する。強度低下(strength reduct
ion) s帰納変数除去(induction variable eli*
1nat1on)および不変式ホイスチング(hoisting)のようなスカ
ラーループ最適化は、ベクトル化あるいは自動的多重スレッドが出来ないループ
で行われる。大域最適化は手順全体について行われる。これらは次のものを含む
:定数の伝播、未到達コードの除去、共通部分式の除去、および構造化ループへ
のハンドコード化(hand−coded) I Fループの変換。手順のイン
ライン化は手順呼出しオーバーヘッドを除去するために自動的に小さい、しばし
ば用いられる手順をインラインに引込む。
最適化は効率のよいアルゴリズムを使用したとしても時間およびスペース−指導
型プロセスである。最適化の選ばれた部分がターンオフされてコストのすべてを
伴わない利点のいくつかを与える。例えば、ベクトル化を行うにはスカラー大域
最適化を行う必要がない。しかしながら、入城変換を行わない場合にはベクトル
化のいくつかの機会が失われることがある。また、高速コンパイル化を行う必要
があり、そして最適比相がすべて飛越されてしまうような状況がありうる。この
実施例では、各オブチマイザすなわちオプチマイザ203とローフォームオブチ
マイザ205は所望の最適化を活性または不活性とするために原始コードプログ
ラムに適正なコマンドラインステートメントをそう人することでユーザにより選
択的に呼出されうる。
コードジェネレータ204は、必要であればオブチマイザ203を介して、前端
モジュール201と202からHFコードをとり出し、そのHFコードを原始コ
ードプログラムの合成されたHFおよびLF表現に翻訳する。
要するに、コードジェネレータ204は原始コードの表現を言語および機械−独
立性高レベル表現(HF)から統合階層表現の部分である機械−従属性の低レベ
ル表現(L F)に移す。
中間HFコードのLFコードへの翻訳プロセスが完了してしまうと、機械−従属
性最適化がローフォームオブチマイザ205により行うことが出来る。これら最
適化は、一つの手順全体にわたりレジスタに最も共通して用いられる変数を維持
することのような、レジスタを最適に使用しようとする試みを行わせる。この実
施例で行うことの出来る他の最適化は次のことを含む:特定のターゲット機械の
複数の機能ユニットを同時に使用し命令群を完了するに要する時間を最小にする
ための命令スケジニーラ;ファイル間での手順呼出しオーバーヘッドを最少によ
るリンケージ調整;メモリロードを出来るだけ早期に元にもどしループのボトム
ローディングを行う後スケジューリング(post−scheduling )
プロセス:およびループオーバーヘットを最少にし資源利用を最大にするためル
ープの本体を重複するループアンローリング(unrol lfng )。
オブチマイザ203と205の部分として、本発明のこの実施例は手順インライ
ン化のための2段手段すなわち第1インライナ221と第2インライナ222を
含む。
手順インライン化は、コンパイラ200が一つの手順呼出しを呼出された手順内
の実際のコード本体と置き代えて呼出された手順がプログラムコードの部分とし
て実行するようにするプロセスである。手順呼出しがプログラムコードにインラ
イン化されない場合には、それら呼出しはプログラムコードが実行しそしてかな
りのオーバーヘッドを生じうる間に行われる。一つの手順呼出しのオーバーヘッ
ドとはコードの異ったセクションへのジャンプを行いそしてそれからもどるため
の時間的コストとそれらジャンプに関するレジスタの保存と回復である。インラ
イン化は一つのプログラムの実行中になされる手順のオーバーヘッドを節約する
。この実施例ではファイル内インライン化はオブチマイザ203と関連して第1
インライナ221によりHFレベルで行われ、ファイル間インライン化はローフ
ォームオプチマイザ205と関連して第2インライナ222によりLFベベル行
われる。
実際のインラインプロセスでは手順呼出し側が位置指定されそして整合手段定義
(matching proceduredefinftion)がIHRで見
い出される。インライン化が有利であり経済的であると決定されれば、IHRの
形の手順定義のステートメントの等価物がコピーされて呼出し側でIHRに付加
される。すべての局所変数のコピーもこの手順定義から行われて呼出し側に付加
される。この定義におけるフォーマルなパラメータの使用が、コピーを行う時点
で基準にもどされる。
この実施例ではどの呼出しサイトがインラインされたかの決定はユーザ指示が必
要でないように自動的に行われる。しかしながら、ユーザはインラインする呼出
しについて知ることが出来る゛。プログラムが大きい局所メモリスペースを必要
とする手順を呼び出す場合、ユーザがインライン化を制御しないことがある。そ
うでない場合にはコンパイラでのインラインプロセスはそのプログラム内のどの
手順呼出しサイトがインラインされつるかを決定する。本発明の方法ではプログ
ラム原始コードのIHRがそのインラインプロセスを通じて利用される。
例えばインラインプロセスはIHRを用いてどの手順呼出しサイトがループ構成
内にあるかを決定しそしてそれら呼出しサイトにインラインの高い可能性を与え
る。ループ構成内の手順呼出しにはより高い優先度が与えられそしてより大きく
なりつるようにする。成る数のサイズステートメントノードにわたるルーチンは
、大きな手順のインラインの利点は小さいからインラインされない。
IHRは、反復性であるか、大きな局所変数メモリ(スタック)スペースを必要
とするか、あるいはインラインされた手順呼出しが全く非インライン呼出しとし
てふるまうことがないようにする特性を有する手順に対する呼出しサイトを検出
すべく検査される。
同一コンパイルユニット(シングルファイル)′内のインラインは第1インライ
ナ221によりコンノ寸イル時に行われる。コンパイルユニット間(ファイル間
)のインラインは第2インライナ222によりそのコンノくイルプロセスの終り
近くのリンク時に行われる。0<つ力)の呼出サイトは、すべてのコンパイルユ
ニ・ノドの完全な中間データベース表現が使用可能であって潜在的なインライン
の問題を検出するに必要なすべての情報が使用可能であるリンク時までインライ
ンされえない。第2インライナ22により異るファイル間で手順がインラインさ
れる場合には情報がIHRから手順間データベースに集められる。手順間データ
ベース内に含まれるこの情報の部分は手順をインラインされるべきものを選択す
るため(;本発明のこの実施例で用いられる。
インライナ221と222は手順間解析(IPA)230と関連して動作する。
コンlくビラ200力(一つの手順を処理しているときに他の手順に対する呼出
し力(あることがある。従来のソフトウエアエンノくイロンメントではコンパイ
ラ200はそれらの他の(すなわち呼出された)手順の効果についての知識をも
たない。そのような知識がないためコンパイラ200は最悪のケースを仮定し、
安全である多くの最適化を禁止するように強制される。手順間解析(IPA)は
手順情報の集合と解析である。この解析の結果によりコンパイラ200は呼出さ
れた手順を最適化しうる。IPA情報の使用により、最適化を行いつる時点の数
が増加しなければならない。
IPAによる最適化は次のものを含む:共通部分式除去;前方置換、冗長記憶の
除去、一定の折りたため(constant foldidng)、一定の伝播
、死コード削除(dead code elLsfnation ) 、大域共
通部分式削除、ベクトル化および自動多重スレッド。更に、プログラム内の夫々
の手順についてIPA230は定義されあるいは使用された大域変数のリストを
集めそして夫々の変数が定義されあるいは用いられた回数をカウントする。IP
A230は大域変数の定義および使用の回数を加算しそしてそれらを使用頻度順
に区分けする。最も頻繁に使用される変数はLレジスタに割り振られる。一つの
呼出された手順についてのこれらレジスタは呼出し手順からオフセットされて一
つの手順呼出しで保存し回復するレジスタの数を減少させる。
IPA230は、夫々が別々にコンパイルされそしてリンカ(Linker)
214によりリンクされる複数の手順モジュールからなる原始コードプログラム
において手順間解析を行う際にリンカ214と関連して動作する。従来、エキゾ
ースト(exhaustive)形および増分型の二つのタイプの手順間解析が
知られている。エキゾースト形解析については呼出しグラフがオブジェクトコー
ドファイル内の情報から形成されて解析される。これは“スタートフロムスクラ
ッチ(start from 5cratch) ”解析である。増分解析につ
いては呼出しグラフと解析はそのプログラムの前のリンクから出されるものとし
、そして少数の変更された手順がその呼出しグラフで置き換えられる。これは“
ドウ アズ リトルワーク アズ ポジプル(do as 1ittle wo
rk as possible )″解析である。
従来のシステムVエンバイロンメントではプログラマは一つの手順を変更し、コ
ンパイルしそして他の手順を再コンパイルする必要のないプログラムをリンクす
ることが出来る。その理由は手順間に従属性がないからである。
IPAエンバイロンメントでは、手順は呼出された手順がどのようにふるまうか
についての知識にもとづく最適化にもとづくものであるから、手順間には従属性
がある。
従って、一つの呼出された手順が変更されて再コンノくイルされると、呼出し手
順も再コンパイルされねばならない。この問題は、手順の内呼出しを行うものが
IPA230で決定された手順量情報の変化を有するとき手順を再コンパイルす
ることで解決される。
コンパイルアトバイザ231はプログラマとコンノくイラ200の間のインター
フェースとして機能する。実際にこのコンパイルアトバイザ231はオブチマイ
ザ203と205がプログラマに最適化についての質問を出しうるようにする。
コンパイラ200は必要な情報を識別しそしてプログラマに対する質問を定型化
する。コンパイラ200はプログラマがコンパイルアトバイザ231によりそれ
ら質問をアドレスづけしうるようにそれらを保存する。コンパイルアトバイザ2
31はプログラマの回答をコンパイラ200に中継する。コンノくイルアトバイ
ザ231の第2の役割はプログラマが従属性を消そうとすることが出来るように
従属性の情報を表示することである。一つのプログラムにおける大間の従属性は
そのプログラムの部分のベクトル化と並列化を禁止する。従属性を消すことによ
りコンパイラ200はより効率のよいコードを発生しうるようになる。一つの従
属性を消すためにコンパイラが行うことの出来る変換が存在しない場合にはプロ
グラマはそれを消すためにアルゴリズムを変更することが出来る。
デバッガ212は並列ユーザエンバイロンメントの部分として与えられる対話型
、記号型の並列デバッガである。デバッガ212は共通に使用可能なデノくツガ
の標準的な特徴を含む。それら特徴はプログラマがデノくツガ212の制御によ
り一つのプログラムを実行し、それをそのプログラムにおける指定された位置で
停止し、変数値を表示し、そしてそのプログラムの実行を続けることが出来るよ
うにする。本発明のデバッガ212はいくつかの固有の特徴を有する。それら革
新的な能力は他のデバッガには一般にないユーザ機能を与える。デバッガ212
は2個のユーザインターフェースを有する。第1のライン型インターフェースは
システムVユーザにとって慣れているコマンドを受ける。第2の、窓からなるイ
ンターフェースはデバッガの能力を使用するに必要な学習量を最少とするように
設計される。
本発明のソフトウェアアーキテクチャは多数のエンバイロンメント(例えば機械
(gachlne ) A、 BおよびC)におけるデバッグ中のプログラムの
セグメントについて高レベル言語源を表示するに必要な情報を維持する。このコ
ンパイルシステムは高レベルプログラム原始コードを機械コードであるいはその
逆のマツピングをつくる。
他のデバッガにはないこのデバッガ212のいくつかの能力の内の一つは最適化
されたコードの原始レベルのデバッグである。適用可能であって原始レベルのデ
バッグをまだ維持している最適化はデッドコード消去、コード移行、コードスケ
ジューリング、ベクトル化、レジスタ指定および並列化を含む。
デバッガ212は並列コードのデパックを支持する。
プログラムの動的スレッド構造の表示がユーザの並列処理プログラムのデパック
を支援する。ユーザは個々のスレッドに呼掛けることが出来そして、スレッドの
同期化コマンドはロック、イベントおよび障害のような標準的な同期化変数の状
態を表示する。デバッガ212は付加的な能力を与える。例えば、プログラマは
データおよび通信並びにコードの区切り点をセットすることが出来る。
マクロファシリティが一つのコマンドに対し一連のコマンドを指定する。このコ
マンド言語内の制御ステートメントはデバッガコマンドの適用においてより大き
なフレキシビリティを与える。分散プロセスについてのサポートにより、プログ
ラマは同時に異る機械でコードデバッグすることが出来る。統計的ツールを含む
多数の組込み関数がプログラマによるプログラムデータの解析を支援する。言語
固有の式のデバッガ212のサポートにより慣れた構文を使用しつる。
図1aおよび1bに示す本発明のソフトウェア開発システムのこの実施例の他の
オプションとしてのコンポーネントはリンカ214とディスアセンブラ215を
含む。
リンカ214とディスアセンブラ215は共にコンパイラ200でつくられるオ
ブジェクトコードファイル(,0f11es)で動作する。リンカ214は、互
いにリンクした、あるいは一つの原始コードプログラムによりアクセスしうる現
存する手順またはルーチンの予コンパイルオブジェクトコードファイルを含む1
以上のライブラリ216に接続しうる。
このソフトウェア開発システムの実施例の種々のコンポーネントを説明したから
、一つのコンビニ−タブログラムの統合階層表現のこの実施例についての構造を
次に説明する。この統計階層表現(IHR)の第1段はハイフオーム(HlFo
rm) (HF )と呼ばれる。HFは高レベル言語プログラムの言語独立性の
中間表現である。これはコンパイラの前端モジュール201と202およびアセ
ンブラ210によりつくられる。このコンパイラのすべての前端モジュールは同
一のHFをつくり、そして異るプログラム言語のHF表現は原始コードの再コン
パイルを行うことなくインラインにより互いに組合わせうる。
HFは高レベルプログラムの意味エレメントを表わすノードでつくられる。これ
らノードはテーブルへの指標により意味項目およびデータオブジェクトについて
の情報の広いクラスを含むようにするためのリファレンスを含む。このためにポ
インタの代りにテーブル−参照を用いることにより、本発明は高度バイブライン
ベクトルコンピュータアーキテクチャの利点をとり入れることが出来る。これは
また、主メモリ内のプログラムについての実行可能オブジェクトコードファイル
を動かしあるいは再配置する際あるいはこの実行可能オブジェクトコードファイ
ルを2次メモリに記憶する際により大きなフレキシビリティを与える。
コンパイラの前端モジュール201と202およびアブセンブラ210によりつ
くられるプログラムのHF表現はオブチマイザ203と205、インライナ22
1と222、アッセンブラ210、コードジェネレータ204およびデバッガ2
12並びに図形コンパイラ開発ユーティリティ213により使用される。HFの
ノード形のテーブル−型構造は原始から2進へのマツピング、レジスタの利用を
デバッグするに必要な情報および高度に最適化されたコードのデバッグに必要な
他の情報を効率よく記憶する。
ローフオーム(LoPori) (L F )と呼ばれるIHHの第2の部分は
プログラム用に発生された機械命令の円形−構造型表現である。この図形構造は
いくつかの機械従属型最適化を機械コードレベルで行いうるようにすると同時に
統合階層表現を維持するためにそのプログラムのHF表現に対する関係を維持し
つるようにする。
図2a−1,2a−2および2b並びにテーブルI−Xにより本発明のIHRの
階層構造を説明する。このIHRに含まれる最高レベルの情報はプログラムモジ
ュール内の手順の静的ネストを表わすスコープノード100である。スコープノ
ード100はそのスコープ101、そのスコープにネストされているスコープ1
02および現在のスコープのレベルの次のスコープ103についての記号に関す
る情報を含む。またこのスコープノードにはそのスコープに含まれる第1の高レ
ベル言語セグメント104が含まれる。Cで定義されるデータ構造としての一つ
のスコープノードの構造はテーブルエに示す。この実施例のIHRの構造は特定
のデータ構造として与えられているが、データ構造に含まれる特定情報およびそ
の情報をデータ構造で表わす方法についての多くの変形を本発明の範囲内でつく
ることが出来る。
夫々のステートメントノード104はそのノードで表わされるステートメントの
種類(すなわち、指定ステートメント、ifステートメント、ループステートメ
ント、等)についての情報を含む。ステートメントノード104はまた辞書の順
での次のステートメント105の情報およびそのステートメントに含まれる式の
表現を含む。デバッガ212が最適化されたコードをデバッグする際の支援とし
て、ステートメントノード104はステートメントがインラインされているかど
うかのインジケーションを含む。最適化されたコードのデバッグにおいて使用す
る他のデバッグ支援はそのステートメントから発生される最初と最後の機械命令
のインジケーションである。この情報を用いてデバッガ212は命令スケジュー
リングにより最適化されたコードがあっても区切り点を正確にセットすることが
出来る。ステートメントノードのこの構造をテーブル■に示す。
ステートメントノード104をグループ化したものがブロックノード106であ
る。ブロックノードはそのプログラムの基本ブロックを表わす。基本ブロックは
1人力、1出力のステートメント群である。ブロックノード106は生の変数情
報を表わすビットベクトルを含む、種々の最適比相に必要な情報の多くを含む。
ブロックノード106はまたこの最適化情報を含むビットベクトルを指標づける
ために用いられるデプス−ファースト(depth−first )番号を含む
。ブロックノードのこの構造はテーブル■に示す。式ノード107は高レベル言
語式を表わすための有向非循環グラフをつくる。これらはその式の演算子とオペ
ランド108並びに演算子のデータタイプ■についての情報を含む。式ノードの
構造をテーブルVに示す。多くの場合、式ノードのオペランドはコンパイル時に
即知の値をもつオブジェクトを表わすリテラルノードでありうる。リテラルノー
ドの構造をテーブル■に示す。
一つの式のデータタイプはタイプノード■で表わされる。タイプノード■はタイ
プのコンポーネント並びにそのタイプのサイズについての情報を含む。タイプに
ついての他の情報は表示されるタイプによりきまる。例えば、一つのアレイにつ
いてのタイプノード■はそのアレイの番号と次元サイズについての情報を含む。
タイプノードの構造をテーブル■に示す。
記号ノード110は高レベル言語またはアッセンブリ言語プログラムで名前付き
の項目を表わす。これらは記号の種類(変数、タイプ、ラベル、手順等)、プロ
グラム内の、その記号が定義される位置、およびこの記号のデータタイプを示す
タイプノード■のインデクス、についての情報を含む。またこの記号ノードには
最適化されたコード−デパックマツピング109−をデバッグするための情報が
含まれる。本発明のこの特徴の詳細は図58および5bにある。記号ノード11
0は、夫々がプログラム内の夫々のブロックノード106について1個の人力を
含むビットベクトルのアレイ150をポイントする。このアレイはブロックノー
ド106のデプス−ファースト番号によりインデクスをつけられる。記号ノード
の構造をテーブル■に示す。
図3により本発明のIHRのLF部分の構造を説明する。LFノード112は一
つのプログラムについて発生された機械命令の表現である。LFノード112は
コードジェネレータとアラセンプラムよりつくられる。LFノード112はオブ
コード、親式ノード107と108のオペランドとインジケーションを含む機械
命令についての情報を含む。LFノード112の構造をテーブル■に示す。
HFのコンポーネントの一つは定義使用従属性(Definltlon Use
Dependencies ) (D U D e )であるO定義−使用情
報は変数の定義をその定義により影響を受けるその変数のすべての使用に関係づ
ける。使用一定義情報は一つの変数の使用をその使用に影響する変数のすべての
定義に関係づける。定義一定義情報は変数定義をその定義により消されるその変
数のすべての定義に関係づける。本発明は単一および多ワード変数、同値化変数
、ポインタおよび手順呼出しくすべての潜在的な側効果を含む)についての定義
−使用、使用一定義、定義一定義情報をベクトル化と多重スレッド化についてな
された従属性解析の一体部分である単一の表現(DUDeノード)に組み入れる
。DUDeノードの構造をテーブルXに示す。
図4により本発明を用いるアッセンブリ言語プログラムの高度に最適化されたコ
ードのデバッグ、言語間インラインおよび最適化および原始レベルのデパックを
与える、原始言語の2進コードへのコンパイルのための方法を説明する。
複数の言語前端モジニール201と202の夫々は周知の分解技術および上記し
た他の分解技術を用いて与えられた高レベル原始言語を言語−独立性の中間表現
HF250に翻訳する。HF250は次にオプションとして言語独立性のオブチ
マイザ203に送られる。言語独立性オブチマイザ203はHF250により多
くの機械−独立性最適化を行いそしてHF250に、最適化されたプログラムを
デバッグしそれにより最適化されたHF251をつくるために必要な情報を加え
る。
この時点で、最適化されたHF251はコードジェネレータ204に送られるコ
ードジェネレータ204はHF250をLF、すなわちプログラムについて発生
された命令の機械−独立性表現で拡大し、LF252をもつ最適化されたHFを
つくる。次にLF252をもつ最適化されたIFは、機械−従属性最適化を行う
他の最適比相205を通る。LF252で最適化されたHFは更にLFオブチマ
イザ205により行われる変換を反映するように拡大されて最適化されたHFと
LF25Bを発生する。最適化されたHFとLF253は2進ジエネレータ20
6を通されて再配置可能なオブジェクトファイル254をつくる。
独立したコンポーネントであるアセンブラ211はアセンブリ言語プログラム2
72を機械独立性表現HFとLF255に翻訳する。このアセンブラによりつく
られるHFとLF255はオプションとして次にLFオブチマイザ205を通さ
れる。LFオブチマイザ205は従来のシステムでは行われないアセンブリ言語
プログラムについての最適化を行い、HFおよび最適化LF256をつくる。次
に、2進ジエネレータ206がこのHFと最適化LFを読み、オブジェクトコー
ド並びにHFおよび最適化LFを含む再配置可能オブジェクトファイル257を
つくる。
このシステムの他の独立したコンポーネントであるデジエクトコードファイル2
54と257を読取る。オブジェクトコードファイル254と257に含まれる
情報を用いてこのデバッガは最適化のある場合の高レベル言語プログラムとアセ
ンブリ言語プログラムの両方をデバッグすることが出来る。
図5aおよび5bにより、IHRで表わされる付加情報を用いて最適化コードの
デバッグを支援する方法の一例を説明する。並列アレイ151は現在のブロック
内の記号を保持するレジスタ番号を含む。デバッガ212はIHRの部分である
この並列アレイ151を用いて次の段階を行うことにより最適化コードブロック
内の変数を保持するレジスタを見い出す:
1、現在のブロックノード106を2進−原始マツピングを用いて決定する。
2、所望の変数用の記号ノード110を決定する。
3、デバッガ212がビットベクトルアレイ150を見渡して現在ブロックノー
ド106のデプス−ファースト番号により示されるビットがビットベクトル15
0のいずれかにセットされているかどうかをチェックする。
セットされたビットがあれば、aft sto off’setアレイ151内
の入力をテストする。この入力は現プロ・ツク106についての変数を含むレジ
スタ番号を特定する。
図6によりループ構造グラフの実施例の構造を説明する。このループ構造グラフ
はループノードとブロックノードからなり、高レベル言語プログラム内のループ
の静的なネスティングを表わす、この構造グラフの根600は全プログラムを囲
む擬似ループであり、このループノードの子はそのプログラムを含むブロックお
よびループである。ブロックノード602は外側のループについてのループのプ
ロローグの基本ブロックを表わす。ループノード603は外側ループそのものを
表わし、ブロックノード604はその外側ループについてのエピローグブロック
を表わす。外側ループ603にネストされているのはブロックノード605、内
側ループ用のプロローグブロック並びにループノート606とブロックノード6
07である。ループノード606は内側ループを表わし、ブロックノード607
は内側ループのエピローグを表わす。内側ループ606にはブロックノード60
8と609を含むループの本体が含まれる。このループノードの構造はテーブル
■に示す。
テーブルI
スコープノードフィールド: スコープノード記述:5cope kind:
このスコープのクラス。下記の内の一つ:UNDEF SCOPE
MODULE 5COPE
PROCEDURE 5COPE
STRUCTURE 5COPE
PROTOTYPE 5COPE
Sωpe symbol : このスコープを定義する記号(一つの記号ノード
)。
5cope symbol table: このスコープに含まれる記号テーブ
ル5eOpe Jarent : このスコープの親(他のスコープノード)。
5cope sibling: このスコープの兄弟(他のスコープノード)。
5cope cMld: このスコープの子(他のスコープノード)。
次のものはMODULE 5COPEにのみ適用:5cope macro s
ymbol table: これはこのスコープについて定義されたマクロのテ
ーブルである。
次のものはMODULE 5COPEおよびPROCEDURE−5COPEに
のみ適用:
5cope first block: これはこのススコープの第1ブロツク
記号ノードである。
次のものはPROCEDURE 5COPEにのみ適用:5cope firs
t 5tack sym: スタックからそしてこの手順において割り振られた
M41記号ノード。
これはスコープ記号テーブルにそう人されてもよくあるいはそう人されなくても
よい。
5cope 1ast 5tack syI: ストックからそしてこの手順に
おいて割り振られた最後の記号ノード。
これらはスコープ記号テーブルにそう人されても、されなくてもよい。
5cope d圀−tables 大域定義/使用カウントテーブルのAUX−
NODE。
IPA用につくられたものは大堤鴎マ趨己号ノードと、夫々のPROCEDUR
E 5COPEについての定義と使用の数のカウントのリストを含む。
テーブル■
ステートメントノードフィールド:ステートメントノー日己小:st op ス
テートメント演算子。次の内の一つ:5OPERRORエラーステートメント5
OPCASE CASEステートメントSOPCASECOMP CASEコン
ポーネント擬似ステートメント
5OPCYCLE CYCLE (F2O)またはC0NTINUE (C)
ステートメント
5OPDEAD DEAD擬似ステートメント5OPENDCASE ENDC
ASE擬似ステートメント5OPENDGROUP 5OPGROUPのエンド
5OPENDIF endif’ STATEMENTSOPENDLOOP
ENDLOOP[偏ステートメント5OPENTRY ENTRYステートメン
ト5OPEXPRESSION EXPRESSIONステートメント
5OPGOTOGOTOステートメント5DPGROUP GROUPステート
メント5OPIP IFステートメント
SOPIFCOMP IFコンポーネント擬似ステートメント
5OPLABEL LABEL擬似ステートメント5OPLOOP LOOP擬
似ステートメント5OPNULL NULLステートメントSOPPRAGMA
PRAGMA擬似ステートメント5OPRETURN RETURNステート
メント5OPREGI 5TERレジスタスピル/ロード擬似ステートメント
st sfa 原始ファイルアドレス
st」revfous 辞書順の前のステートメント用ノード。
st next 辞書順の次のステートメント用ノード。
st block このステートメントを含む基本ブロック用ブロックノード。
st 14 5tartこのステートメントに関連した第10−フオームノード
。backendでセットされる。
st !f’ end このステートメントに関連する最後のローフオームノー
ド。baekendでセットされる。
st fnlfned Bft set −>このステートメントはその現在位
置にインラインされている。
st !nlinfng root Ifst In1ined OがTRUE
。
thenこれはそのステートメントをインラインさせたステートメント。
st well 5tructured Bit set −>この構造化ステ
ートメント(SOPCASE、5OPIF。
5OPLOOP)は良好に形成され
る、すなわち外部からそれへあるい
はそのコンポーネント間にブランチ
がない。出口ブランチは存在する。
大域フロー解析によりセットされる。
st has call Bitset −>このステートメントはその下のど
こかにEOPCALLを有する。
テーブル■
ループノードフィールド: ループノード記述:st■t このループに対応す
るステートメント。
prologue このループのプロローグであるブロックノード。
hα−このループの見出し部であるブロックノード。
tai I このループの末尾であるブロックノード(これからheade ヘ
のbackedgeがある)。
epilogue このループのエピローグであるブロックノード。
cMld 構造グラフ内の子ノード;ループ本体内の第1ブロツs1bling
構想グラフにおける兄弟ノード(常にBLOCKノード)。
guard このループの実行を制御する論理式(成る種の囲み条件に対し相対
的なものでありうる)。
clear bv このループの(再)定義のクリアである記号を表わすビット
ベクトルのAUXノード。
exlt bv このループの出口であるブロックノードを表わすビットベクト
ル用のAUXノード。
next このループを囲むすべてのループからなる次のループ(すなわち、こ
のループはこのネストのNoTI分である)。
iv table このループ内のテーブル■についてのAUXノード。
tv count このループ内の誘導変数の数。
μ5−table ループ内の向上したスカラテーブル用AUXノード。
μs−ωυnt このループ内の向上したスカシの数。
1nvar 5tlt プロローグブロックにホイストされた第1非変ステート
メント
cos+pleted Bit set −>このループの本体が完了さレテイ
ル;SG構成中に使用される。
vectorfzabfe Bft set −>ループはベクトル化可能。
part vectoriaable Bit set −>ループは部分的に
ベクトル化可能。
taskable Blt set w)ループはタスク可能。
has unknown catl Bit set −>ル−プ番よ矧の手順
に対する呼出しを含む。
bas exit branch Bit set −>ル−プGt出口分岐を
含む。
has back branch Bit set −>ル−プit後向き分岐
を含む。
has many entries Bit set s++)ル−プlこ2耘
しヒのブレーズで入る。
has −xrfect 5ubnei;t Bit set −>ル−プ(よ
その下;こ完全サブネストを有する。)\ザー
ドリストにポイントするためのベ
クトル解析により一時的に用いら
れる。
テーブル■
ブロックノードフィールド: ブロックノード記述:first stmt 基
本ブロック内の第1ステートメントノード。1aststIlt基本ブロック内
の最後のステートメントノード。
pred 11st 制御フローブレデセサ(praiecessor )リス
ト。
これはHFノードリストで表わされる。
Pred count 制御フローブレデセサの数。
5ucc 11st 制御フロー後者関数(successor )リスト。こ
れはHFノードリストで表わされる。
5uce count 制御フロー後者関数の数。fall throughこ
のブロックからの“fall through”エツジのターゲットブロック(
このブロックが条件付ぎ分岐で終了するときのみ)
previous 辞書順で前の基本ブロック用のノード。
next 辞書順で次の基本ブロック用ノード。
Sibling 構造グラフにおける兄弟ノード。
gLLard このループの実行を制御する論理表現(成る種の囲み、条件に対
し相対的なものでありうる)。
1oopJIark このブロックがループ見出し部であれば5OPLOOPス
テートメントに対応;またはループ見出し部または末尾ブロックに対応するルー
プノード。フローグラスおよび構造グラフ構成中にセットされて使用される。
1oop tail このブロックがループ見出し部であればループ末尾ブロッ
クに対応する。
1oop head このブロックがループ末尾であればループ見出し部ブロッ
クに対応。
nest このブロックのある次のループ。
parent 構造グラフ内の親ローブノード(このブロックを直ちに囲むルー
プ)。
exit 1evel このブロックから出たループの数。
connect聞 bit set −>このブロックは制御フローグラフに接
続される。
Visited bit Set −>このブロックは訪ねられた(visit
ed)。
再帰的にフローグラフを横切るアルゴリズムにより使用される。
呼出しを含む。
has unknown cal I btt set −>このブロックは未
知の手続きに対する呼出しを含む。
hus 1oop stwt Bit set −>このブロックは5OPLO
OPステートメントを含む。
1a 1oop heaa sit 5et−>これは一つのループの“見出じ
臥口)ブロックである。このループ内のすべての他のブロックはこのブロック
により支配される。
is 1oop tail Bit 5et−>これは一つのループの1J「ブ
ロックである。これはそのループの見出しブロックに対する(最終)反復テスト
および分岐を含む。
is loopJrologue bat set −>これは一つのループの
プロローグブロックである。そ
の唯一の後者関数はそのループの
見出し部である。
is 1oop epilogue ber set −>これは一つのル−プ
のエピローグブロックである。こ
のループからのすべての正規出口
はこのブロックを通る。
テーブルV
ブロックノードフィールド: ブロックノード記述:is 1oop exit
Bit set −>制御はこのブロックからそのループまたはそれを含むル
ープを流れ出るANDこのブロックはループ末尾ブロックではない。すなわちこ
のブロックからの過早ループ出口がある。
has Ind rers Bjt set −>このブロックは間接参照を有
する。
これは付加的解析のための呼出しに対しスケジューラにより用いられる。
dfn デプス−ファースト類に位置を与える数。
ordlnal コンパイルユニット内のブロックの辞書順についての序数値;
これはst ordfnal Oと同一歩調でワークする。
in フローグラフ内の、このブロックに到達するブロックを表わすビットベク
トルのAuxノード。
αル フローグラフ内のこのブロックから到達するブロックを表わすビットベク
トルのAuxノード。
dos フローグラフのこのブロックを支配するブロックを表わすビットベクト
ルのAuxノード。
gen det このブロックで発生する定義を表わすビットベクトルのAux
ノード◎
kill der このブロックで消される(kill)定義を表わすビットベ
クトルのAuxノード。
in dat このブロックの始まりに達する定義を表わすビットベクトルのA
uxノード。
out def このブロックの終りに達する定義を表わすビットベクトルのA
uxノード。
X def このブロック内の露呈された定義涜数の第1定釦を表わすビットベ
クトルのAuxノード。
x use このブロック内での露呈された使用を表わすビットベクトルのAu
xノード。
clear このブロック用のクリアベクトルを表わすビットベクトルのAux
ノード、(このブロック内に定義された記号NOTについて一つのビットがセッ
トされる)。
clear record このブロック内の構造化コンポーネント用のクリア
ベクトルを表わすビットベクトルのAuxノード、(このブロック内に定義され
たレコードNOTについて一つのビットがセットさされる)。
alt StOこのブロックで用いられる(レジスタ)カラーを表わすビットベ
クトルのAuxノード。
first dude このブロックに関連するDUDeノードのリンクされた
リストの第1のもの。
pd、Jred ポストドミネータ木におけるこのノードのプレデセサ。
pd 5ucc 1ist ポストドミネータ木におけるこのノードの後者関数
。これらはHFノードリストで表わされる。
cd 1n−11st このノードが制御従属性となるノードのHFノードリス
ト。
cd out 1ist このノードに制御従属するノードのHFノードリスト
、ノード構造:
テーブル■
弐ノードフィールド: 式ノード
記述:
ex op 次の式演算子の内の一つ:EOPERROR,エラ一式
%式%
EOPCALL、 手続(機噸呼出し
EOPCONCAT、 ストリング連結EOPCONVERT、オペランドの変
換タイプEOPDIV、 FI算
EOPENTRT、 入カポインド
EOPEQ、等
E OP E Q V、 mll的同値EOPEXP、 指数
EOPGE、 以上
EOPGROUP、 代数的グループ化E OP G T、 greater
thanEOPJMP、 無条件ジャンプ
EOPJMPA、 指定されたジャンプEOPJMPF、 疑であればジャンプ
EOPJMPT、 真であればジャンプEOPJMPX、 インデクスされたジ
ャンプ
EOPLE、 以下
E OP L I NK、 placeholderEOPLIT、 リテラル
EOPLT、 以下
EOPLVAL、 I−値
EOPMOD、 モジュロ
EOPMULT、 乗算
EOPNE、 不等
EOPNOT、 論理否定
EOPNULL null (placeholderとして用いられる)
EOPOR,包含的論理和
テーブル■
弐ノードフィールド: 式ノード
記述:
EOPRANGE、 離散タイプの値の範囲EOPREM、 残部
EOPRENAME、 タイプ名
EOPRETURN リターン
EOPROL、 左回転
EOPROR,右回転
EOPRVAL、 r−値
EOPSELECT、 レコード/和メンバ選択EOPSEQ、 夫qじQ:寵
b2フリEOPSHL、 左シフト
EOPSHR,右シフト
EOPSUB、 減算
EOPSUBSCRIPT サブスクリプトEOPSUBSTR,サブストリン
グ
EOPUADD 単項加算
EOPUSUB、 単項減算
EOPXOR,排他的論理和
ex data type この式のデータタイプについてのタイプノード。
ex3rent この式を参照する第1ステートメントについてのステートメン
トノード。
ex src offset この式中の第1文字の原始ファイルバイトオフセ
ット。
ex lndegree このイードのインディグリ−(in d昭r叩)。
ex value class式の値クラス。共通部分式評価でセットされそし
て用いられる。
ex addr kfnd アドレス式により表わされるアドレスの種類(BI
T ADDR,BYTE ADDR。
WORD ADDRまたはUNDEF−ADDR)。
ey、rank この式のランク(0−〉スカシ、1−〉ベクトル。
・・・)。
exlf このノード用に発生されたローフオーム(L F)の根ノード。コー
ドジェネレータによりセットされる。
8X !f’Jenerated’Bit set −>LHはこのノード用に
発生されている。
eX fortran assign eit set −>この割当て式はフ
ォートランASSIGNステートメントを表わす
ex call tnline Bit set m>このEOPCALLはイ
ンラインされるべき。
exJu aft returns Bit Set −>このEOPCALL
は交替リターンを有する(Fortran )。
+13X visjted Bit set −>このEXPRN0DEは成る
種の一時的デブスファースト検索または探索において、訪ねられている。これは
それを用いるコードによる一時的な使用後にクリアしなければならない。
テーブル■
タイプノードフィールド二 タイプノード記述:ty op このデータタイプ
の根“演算子1゜次の内の−っ;TOPUNDEF
TOPERROR
TOPNDLL
TOPVOID
TOPUNTYPED
TOPBYTE
TOPSBYTE
TOPUBYTE
TOPMBYTE
TOPSHORT INT
0PINT
TOPLONG INT
TOPSHORT UINT
TOPUINT
TOPLONG UINT
TOPSHORT FLOAT
TOPFLOAT
TOPLONG FLOAT
TOPCOMPLEX
TOPLONG COMPLEX
TOPCHARACTER
TOPSTRING
TOPLOG I CAL
TOPENUMERATION
TOPCONSTRAINT
TOPACCESS
TOPADDRESS
テーブル■
タイプノードフィールド: タイプノード記述:TOPARRAY
TOPRECORD
0PSET
TOPUNION
TOPPROCEDURE
TOPFILE
ty 5ize このタイプのオブジェクトの正確なビットサイズ。
ty container 5ize このタイプの単一オブジェクトについて
割振られたコンテナのビットサイズ。
ty 1eft justif’ied Bltset −>このタイプのオブ
ジェクトはそれらのコンテナー内で左位置調整される。
ty is volatlle Bit set −>このタイプのオブジェク
トは揮発性である。
ty Is const Bit set m>このタイプのオブジェクトは読
取専用。
ty basic Bit Set −>これは基本的固定サイズのデータタイ
プである。
t)’ is signed Bftset −>このタイプのオブジェクトは
符号付きである。
ty enter聞 Bft set −>このノードはタイプグラフに入れら
れる。
ty assui&fsize Bit Set −>このタイプのオブジェク
トはそれらサイズを動的に仮定する。
ty visaed Bit set −>このTYPE N0DEは成る種の
i時的デプスファースト検索または探索において訪ねられている。これはそれを
用いるコードによる一時的な使用後にクリアされねばならない。
ty hash このタイプノードについて計算されたハツシュ値。
ty next ハツシュ衝突解決用リンクテーブルX
リテラルノードフィールド: リテラルノー)′ta:It data typ
e リテラルデータタイプ用のタイプノード。
It next ハツシュ衝突解決用リンク。
It vat リテラルの値。これは基本タイプについてのすべての可能なター
ゲツト値の和、複雑なタイプについて2個のnocle types cリテラ
ルノード)の和または−のstrjng−tYpeまたは集成タイプ(TOPS
TRING:1.たG!TOPARRAY(7)ようなもの)を含む。
1rJash このリテラル用ハッシニコード。
It enterde biton−>リテラルはハツシュされている。
テーブル XI
記号ノードフィールド: 記号ノード記述:sy kind 記号のクラス。次
の内の一つ:UNDEF SYM
BLOCK SYM
COMPONENT SYM
CONSTANT SYM
ENUMERATION SYM
ERRORSYM
LABEL SYM
MACROSYM
MODULE SYM
PARAMETERSYM
POINTHE SYM
PROCEDURE SYM
TAG SYM
TYPE SYM
VARIABLE SYM
SY nue 記号名を含むストリングsy data−type 記号用デー
タタイプノード。
られるときセットされる。
sy sfa 記号のはじめの発生の原始ファイルアドレス。
5yJash syt enteroまたはSyt Iookup or en
terOにより入れられる名前についてのハツシュコード。
sy declarea 記号が明確に宣言されていることを示すフラグ。
sy c defined 記号が制限されたCdet ini ng)宣言を
有することを示すフラグ。
sy tyμ5−daclaracl 記号のデータタイプが明確に宣言されて
いることを示すフラグ。
sy redeclareti 記号が2回以上宣言されていることを示すフラ
グ。
sy used 変数またはパラメータが使用m>されることを示すフラグ。
sy defined 変数またはパラメータが定義(書囚されることを示すフ
ラグ。
5yaliased 記号がアリアス(alIas )を有することを示すフラ
グ。オブチマイザによりセットされる。
sy 1nterna! 記号がコンパイラにより内部的に宣言されることを示
すフラグ。
sy 5aved 記号がフォートラン5AVEステートメントに生じることを
示すフラグ。
sr asslgned 1abel 変数がフォートランASSIGNステー
トメントに生じることを示すフラグ。
S)’ target 0fJOtO記号がGOTOステートメントのターゲッ
トであったことを示すフラグ。
sy use register C“レジスタ割振またはパラメータを示すフ
ラグ。
sy associated この記号がとり出されたアドレスを有しているこ
とを示すフラグ。
sy visited bit set −>このSYM MODEは成る種の
一時的デブスファースト検索または探索で訪ねられている。これはそれを用いる
コードによる一時的な使用後にクリアされねばならない。
sy bf’d used bfdがこの記号の使用を見ていることを示すフラ
グ。
sy bfd dertned bfdがこの記号の定義を見ていることを示す
フラグ。
sy temp それを用いるものによりクリアされねばならない再使用可能な
セクション。
5yJllaceholder bttset −> SYM N0DE用のこ
のSYMNODE placeholderが5yJIaceholder−s
ys Oに含まれた。
sy bv tndex 従属性グラフの構成中にセットされそしてライブ変数
解析について用いられるクリアおよび露呈使用ビットベクトル(blk cla
ar and Blk Xuse )へのこの記号のビットベクトルインデクス
。
sy 1abel depth fd このラベルを含む複合ステートメントの
複合ステートメント深さ1d(Cのみ)。
テーブル X■
ローフオームノードフィールド: ローフオームノード記述:bin addr
ess 命令の手順の開始がらのバイトオフセット。
hf このLFノードで発生されたHF式ノード。
offset 2進テーブルジエネレータによりベースに付加されるべきオフセ
ット。
word Ifノードのはじめに対するワードのオフセット。
parcel 上のワードのベースからのバーセル(parcel)のopnd
L このLFノードのオペランド1゜opnd2 このLFノードのオペランド
2゜opnd3 このLFノードのオペランド3゜opnd4 このLFノード
のオペランド4゜neXt LFノードの未スケジュール順。
rdg このぽノードに対応するスケジューラ従属性グラフにおけるノード。
use count レジスタ割振り用の使用カウント。
テーブル X■
DUDeノードフィールド: DUDeノー日己ホ:dude−鴻rent こ
のDUDeノードに関連した親戚ノード。
dude next 次のDUDeノード。
dude prevtous 次のDUDeノード。
dude block このDUDeノードを含むプロヴクノード。
dude sym このDUDeノードによりポイントされる記号ノード。
dude In このDUDeノードにポイントするデペンデンスアーク(De
pendence^rcs )群。
dtxle out このDUDeノードの外をポイントするデベンデンスアー
ク丸
dude」tr 1nd lvl ポインタである場合の参照のインディレクシ
ジン(1ndfrecction)レベル。
dude by 1ndex このDUDeノードに対応する定義(LVAL)
のビットベクトルインデクス。
bude kind 参照のタイプ、USE、DEF、USE/DEF。
INDIRECT USE、INDIRECTDETまたはCALLをm11す
るエニューメレーション(etumeration ) e間接使用はp’のU
SEと“*p゛のINDIRECT USEである“i−*p″に似たものであ
る。
INDJRECT DEFは同一ラインに沿って続き、そしてCALLは: “
bred (a、b、c)”離散ノードが“a″、 ′b#および“a″用につ
くられそしてCALLノードが’fral’用にっくら右、これは定義されたす
べての入城変数を表わしそしてIPAが用いられないときにのみ必要とされる。
duie vtsit−このDUDeが訪ねられたがどうかを示すビット。
局所従属性グラフ構成のアリアス解析中にのみ用いられる。
dude upword x use このDUDeが上向きにニキスポーズさ
れるかどうかを示すビット。
dude downward x use このDUDeが下向き二キスポーズ
使用であるかどうかを示すピッ
ト:dersについてはセットされな
い。
dude ty qualifier このDUDeに関連する記号が基本また
はアクセスタイプである。ARRAY TYPE−このDUDeに関連する記号
はアレイである。
5TRUCTURE TYPE−このDUDeに関連する記号は構造である。0
THER−TYPE−二のDUDeに関連する記号は何らかの他の(ストレンジ
)タイプである。
duie aff by call このDUDeはCALLSに関してグロー
バルとして取扱われるべきかどうか、つまり、CALLがそれに作用できるかを
示すビット。
dude is 5ubscrfpted このDUDeがそれに関連したサブ
スクリプト演算子を有することを示すビット;ty−qualRlerとの相異
は、 “C゛がサブスクリプト付ポインタを有することが出来るからアレイであ
る。
dude 1ultipe alias このDUDeノードに関連する複数ア
リアスを示すビット。
d田eJlarueter このDUDeが実際のパラメータに付加されること
を示すビット。
dude vector mask この参照のアドレスが変化する(すなわち
値のベクトルを潜在的に形成する)ループを示すビットマスク。
dudeJlointer このDUDeに関連するこの記号がポインタである
かどうかを示すビット。
dudeJJtr alias セットされたときこのDUDeが未解決のポイ
ンタ参照についてのアリアスでありうることを意味するビット。
dude bound If ptr aliasがセットされる。 then
これはDUDeノードについての境界クラスである。
1/eakly−このDUDeは弱境界タイプである。
(例えば“C°整数ポインタは一つの整数または無符号整数にポイント出来る)
。Strongly−DUDeは強境界タイプである。(例えば“C。
構造ポインタは同一構造であるものにのみポイント出来る) Unbound−
このDUDeは無境界タイプである。(例えば“C#ボイドポインタは何でもポ
イント出来る。〕
duie alias type If’ ptr aliasがセットされれ
ば、thenこれはそれがポイントする特定のタイプのものであり、If弱境界
であれば、クラスであり、If強境界であれば、それを記述するタイプノードの
ノードインデクスであり、そして1f無境界であれば、0である。
好適な実施例の説明を行ったが、本発明の範囲内で種々の変更が可能である。従
って本発明の範囲はこの好適な実施例の説明ではなく、請求の範囲により限定さ
れるものである。
要 約 書
1以上の手続きプログラミング言語(201,202)で記述される原始コード
プログラムを一つの実行可能オブジェクトコードファイルにコンパイルするため
に共通中間表現として完全に統合された階層表現を利用するモジュラコンパイル
システム。この統合された共通中間表現の構造は機械独立性最適化(203)並
びに機械従属性最適化(205)を支援すると共に実行可能オブジェクトコード
ファイルの原始レベルのデバッグ(212)を支援する。統合階層表現(IHR
)は言語独立性であり、コンパイラ(200)とデバッガ(212)を含むソフ
トウェア開発システムのコンポーネントのすべてにより共用される。
国際調査報告
Claims (19)
- 1.コンピュータ処理システムで実行されるべきオブジェクトコードファイルを つくるために1以上の高レベルプログラミング言語で書かれた原始コードプログ ラムをコンパイルし最適化するための、下記段階を含む方法: 夫々の高レベルプログラミング言語について原始コードプログラム用の高レベル プログラム言語のハイフォーム(HF)機械独立性、統合階層表現(IHR)を 発生する段階; 夫々の高レベルプログラミング言語についての上記HF表現を上記原始コードプ ログラムの単一のHF表現へと合成する段階; 上記原始コードプログラムの上記単一HF表現にもとづき上記原始コードプログ ラムについての文脈情報とデバッグ情報を発生しそして上記原始コードプログラ ムの上記IHRの部分として上記文脈情報とデバッグ情報を記憶する段階; ユーザ選択オプションに応じて、上記原始コードプログラムの上記単一HF表現 を最適化しそして上記原始コードプログラムの上記IHRの部分として上記HF 最適化情報を記憶する段階; 上記原始コードプログラムの上記HF表現用のローフォーム(LF)機械独立性 階層表現を発生し、上記原始コードプログラム用の上記IHRの部分としてその LF表現を記憶する段階; ユーザ選択オプションに応じて、上記原始コードプログラムの上記LF表現を最 適化しそして上記原始コードプログラムの上記IHRの部分として上記LF最適 化情報を記憶する段階;および 上記原始コードプログラムの上記LF表現にもとづきオブジェクトコードファイ ルを発生する段階。
- 2.コンピュータ処理システムで実行されるべきオブジェクトコードファイルを 発生するために一つのプログラミング言語で書かれた1以上のプログラムモジュ ールを含む原始コードプログラムをコンパイルしそして最適化するための、下記 段階を含む方法:夫々のプログラムモジュールについて上記原始コードプログラ ムの統合階層表現(IHR)の部分として上記プログラムモジュールのハイフォ ーム(HF)機械および言語独立性表現を発生する段階; 上記プログラムモジュールのHF表現にもとづき上記原始コードプログラムにつ いての文脈情報とデバッグ情報を発生し、それら情報を上記原始コードプログラ ムのIHRの部分として記憶する段階; ユーザ選択オプションに応じて上記1以上のプログラムモジュールのHF表現を 最適化すると共に、HF最適化情報を発生しそれを上記原始コードプログラムの IHRの部分として記憶する段階; 各プログラムモジュールのHF表現用のローフォーム(LF)機械独立性階層表 現を発生し、それを上記原始コードプログラムについてのIHRの部分として記 憶する段階; ユーザ選択オプションに応じて上記1以上のプログラムモジュールのLF表現を 最適化し、そしてLF最適化情報を発生しそれを上記原始コードプログラムのI HRの部分として記憶する段階; 上記原始コードプログラムの上記LF表現にもとづきオブジェクトコードファイ ルを発生する段階。
- 3.前記オブジェクトコードファイルを発生する段階は下記段階を含むごとくな った請求項2の方法:前記プログラムモジュールの夫々についてモジュールオブ ジェクトコードファイルを発生する段階;上記モジュールオブジェクトコードフ ァイルのすべてを単一のオブジェクトコードファイルにリンクさせる段階。
- 4.前記プログラムモジュールのHF表現を最適化する段階と前記すべてのモジ ュールオブジェクトコードファイルをリンクさせる段階は共に手続き呼出しをイ ンライン化する段階を含む、請求項3の方法。
- 5.前記原始コードプログラムIHRは図形構造として記憶され、前記プログラ ムモジュールのHF表現を最適化する段階および前記プログラムモジュールのL F表現を最適化する段階は前記原始コードプログラムのIHRについて図形還元 を行う段階を含むごとくなった請求項2の方法。
- 6.前記プログラミング言語は1以上の高レベル言語とアセンブリ言語を含むご とくなった請求項2の方法。
- 7.前記コンピュータ処理システムは高度並列マルチプロセッサシステムである 請求項2の方法。
- 8.前記コンピュータ処理システムはネットワークをつくる複数のコンピュータ プロセッサを含むごとくなった請求項2の方法。
- 9.1以上のプログラミング言語で記述された1以上のプログラムモジュールか らなる原始コードプログラムを表わしそしてコンピュータ処理システムで実行さ れるべき最適化されたオブジェクトコードファイルの原始レベルのデバッグを行 うための、下記段階を含む方法:夫々のプログラムモジュールについて、上記原 始コードプログラムの統合階層表現(IHR)の部分として上記プログラムモジ ュールのハイフォーム(HF)機械および言語独立性表現を発生する段階; 上記プログラムモジュールのHF表現にもとづき上記原始コードプログラムにつ いての文脈情報とデバッグ情報を発生しそれら情報を上記原始コードプログラム のIHRの部分として記憶する段階; 各プログラムモジュールのHF表現用のローフォーム(LF)機械従属性階層表 現を発生する段階;上記原始コードプログラムのLF表現にもとづきオブジェク トコードファイルを発生する段階;上記オブジェクトコードファイルが上記コン ピュータ処理システムで実行されるときそれをデバッグするために上記原始コー ドプログラム用のIHRを使用する段階。
- 10.下記段階を更に含む請求項9の方法:ユーザ選択オプションに応じて前記 1以上のプログラムモジュールのHF表現を最適化しそして、HF最適化情報を 発生してそれを上記原始コードプログラムのIHRの部分として記憶する段階; ユーザ選択オプションに応じて、上記1以上のプログラムモジュールのLF表現 を最適化しそしてLF最適化情報を発生しそれを上記原始コードプログラムのI HRの部分として記憶する段階。
- 11.前記オブジェクトコードファイルを発生する段階は下記段階を含むごとく なった請求項9の方法:夫々の前記プログラムモジュールについてのモジュール オブジェクトコードファイルを発生する段階;上記モジュールオブジェクトコー ドファイルのすべてを単一のオブジェクトコードファイルにリンクさせる段階。
- 12.前記プログラミング言語は1以上の高レベル言語および一つのアセンブリ 言語を含むごとくなった請求項9の方法。
- 13.前記コンピュータ処理システムは高度並列マルチプロセッサシステムであ る請求項9の方法。
- 14.前記コンピュータ処理システムはネットワークをつくる複数のコンピュー タプロセッサを含むごとくなった請求項9の方法。
- 15.前記オブジェクトコードファイルをデバッグするために前記原始コードプ ログラムのすべてについてのIHRを使用する段階は、1つのコンピュータプロ セッサのユーザが他のコンピュータプロセッサで実行する原始コードプログラム をデパツク出来るように分散型で行われるごとくなった請求項14の方法。
- 16.コンピュータ処理システムで実行されるべき原始コードプログラムをコン パイルし、最適化しそしてデバッグするための、下記段階を含む方法:上記原始 コードプログラムの、それに関連した文脈情報および実行情報を含む共通統合階 層表現を発生する段階; 上記原始コードプログラムの共通統合階層表現を最適化する段階; 上記原始コードプログラムの統合階層表現に応じて上記コンピュータ処理システ ムで実行されるべきオブジェクトコードファイルを発生する段階; 上記オブジェクトコードファイルが上記コンピュータ処理システムで実行される とき上記原始コードプログラム用のIHRを用いることにより上記オブジェクト コードファイルをデバッグする段階。
- 17.コンピュータ処理システムで実行されるべきオブジェクトコードファイル をつくるために原始コードプログラムをコンパイルし、最適化しそしてデバッグ するためのコンパイルシステムで使用するための統合階層表現用の、下記要件を 含むデータ構造:上記原始コードプログラムに関連する文脈情報を表わすための 第1記憶手段; 上記原始コードプログラムに関連する実行情報を表わすための第2記憶手段; 上記文脈情報と実行情報を解析することにより発生される原始コードプログラム 用の最適化情報を表わすための第3記憶手段であって、 上記第1、第2および第3記憶手段が互いに動作的に関係するごとくなった記憶 手段。
- 18.コンピュータ処理システムで実行されるべきオブジェクトコードファイル を発生するために原始コードプログラムをコンパイルし、最適化しそしてデバッ グするためのコンパイルシステムに使用するための統合階層表現用の、下記要件 を含むデータ構造:上記原始コードプログラムに関連する文脈情報を表わすため のスコープノード手段; 上記原始コードプログラムに関連する名前付オブジェクトを表わす記号ノード手 段; 上記原始コードプログラムに関連する定数の値を表わすリテラルノード手段; 上記原始コードプログラムに関連するオブジェクトのデータタイプを表わすタイ プノード手段;上記原始コードプログラムに関連するステートメントを表わすス テートメントノード手段; 上記原始コードプログラムに関連する式を表わす式ノード手段。
- 19.下記要件を更に含む請求項18のデータ構造:前記原始コードプログラム 内のステートメントの基本ブロックを表わすブロックノード手段;上記原始コー ドプログラム内の変数間のデータの従属性を表わすDUDeノード手段; 上記原始コード内のループの静的ネスト(nesting)を表わすループノー ド手段。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/537,466 US5179702A (en) | 1989-12-29 | 1990-06-11 | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
US537,466 | 1990-06-11 | ||
US07/572,043 US5175856A (en) | 1990-06-11 | 1990-08-23 | Computer with integrated hierarchical representation (ihr) of program wherein ihr file is available for debugging and optimizing during target execution |
US572,043 | 1990-08-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH05508494A true JPH05508494A (ja) | 1993-11-25 |
Family
ID=27065499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3512079A Pending JPH05508494A (ja) | 1990-06-11 | 1991-06-10 | ソフトウェア開発のためのコンピュータプログラムの統合階層表示 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5175856A (ja) |
EP (1) | EP0537257B1 (ja) |
JP (1) | JPH05508494A (ja) |
AU (1) | AU8201891A (ja) |
DE (1) | DE69131832T2 (ja) |
WO (1) | WO1991020030A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012150830A (ja) * | 2004-11-19 | 2012-08-09 | Intel Corp | 限定された誤りによる遅延した更新によるソフトウェアキャッシュ処理 |
Families Citing this family (188)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
IL100987A (en) * | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Method and device for encoding |
US5659753A (en) * | 1991-02-27 | 1997-08-19 | Digital Equipment Corporation | Interface for symbol table construction in a multilanguage optimizing compiler |
IL100986A (en) * | 1991-02-27 | 1997-01-10 | Digital Equipment Corp | Method for compiling code |
IL100990A (en) * | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher |
IL100989A (en) * | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Analysis of inductive expressions in multilingual mehadoptimization |
JP2811990B2 (ja) * | 1991-04-19 | 1998-10-15 | 三菱電機株式会社 | プログラム処理装置及びプログラム処理方法 |
US5193180A (en) * | 1991-06-21 | 1993-03-09 | Pure Software Inc. | System for modifying relocatable object code files to monitor accesses to dynamically allocated memory |
US5410648A (en) * | 1991-08-30 | 1995-04-25 | International Business Machines Corporation | Debugging system wherein multiple code views are simultaneously managed |
US5826256A (en) * | 1991-10-22 | 1998-10-20 | Lucent Technologies Inc. | Apparatus and methods for source code discovery |
US5355492A (en) * | 1991-11-05 | 1994-10-11 | Thinking Machines Corporation | System for compiling parallel communications instructions including their embedded data transfer information |
US5355494A (en) * | 1991-12-12 | 1994-10-11 | Thinking Machines Corporation | Compiler for performing incremental live variable analysis for data-parallel programs |
US5410701A (en) * | 1992-01-29 | 1995-04-25 | Devonrue Ltd. | System and method for analyzing programmed equations |
US5274818A (en) * | 1992-02-03 | 1993-12-28 | Thinking Machines Corporation | System and method for compiling a fine-grained array based source program onto a course-grained hardware |
CA2061298C (en) * | 1992-02-17 | 1996-12-03 | Douglas J. Mortson | Method for detecting critical failures during the building of complex computer programs from source code parts |
US5448737A (en) * | 1992-03-17 | 1995-09-05 | International Business Machines Corporation | System and method for optimizing computer code using a compact data flow representation |
JPH05274181A (ja) * | 1992-03-25 | 1993-10-22 | Nec Corp | ブレークポイント設定・解除方式 |
US5371747A (en) * | 1992-06-05 | 1994-12-06 | Convex Computer Corporation | Debugger program which includes correlation of computer program source code with optimized object code |
US5485615A (en) * | 1992-06-10 | 1996-01-16 | Telefonaktiebolaget L M Ericsson | System and method of interactively developing desired computer programs by using plurality of tools within a process described in graphical language |
US5535392A (en) * | 1992-06-26 | 1996-07-09 | Digital Equipment Corporation | Using hint generation to cause portions of object files to remain the same |
US5625822A (en) * | 1992-06-26 | 1997-04-29 | Digital Equipment Corporation | Using sorting to do matchup in smart recompilation |
US5446899A (en) * | 1992-06-26 | 1995-08-29 | Digital Equipment Corporation | Hint generation in smart recompilation |
US5367683A (en) * | 1992-06-26 | 1994-11-22 | Digital Equipment Corporation | Smart recompilation of performing matchup/difference after code generation |
US5446900A (en) * | 1992-07-24 | 1995-08-29 | Microtec Research, Inc. | Method and apparatus for statement level debugging of a computer program |
US5555419A (en) * | 1993-01-06 | 1996-09-10 | Digital Equipment Corporation | Correlation system |
JP2856663B2 (ja) * | 1993-01-15 | 1999-02-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンパイル・コードに可視境界を定義する最適化方法および装置 |
WO1994022078A2 (en) * | 1993-03-23 | 1994-09-29 | Apple Computer, Inc. | Apparatus and method for a relocatable file format |
US6219830B1 (en) * | 1993-03-23 | 2001-04-17 | Apple Computer, Inc. | Relocatable object code format and method for loading same into a computer system |
US5495561A (en) * | 1993-06-21 | 1996-02-27 | Taligent, Inc. | Operating system with object-oriented printing interface |
US5519866A (en) * | 1993-06-28 | 1996-05-21 | Taligent, Inc. | Method and apparatus of incrementally linking components of a modeled computer program |
US5325533A (en) * | 1993-06-28 | 1994-06-28 | Taligent, Inc. | Engineering system for modeling computer programs |
US5758160A (en) * | 1993-06-28 | 1998-05-26 | Object Technology Licensing Corporation | Method and apparatus for building a software program using dependencies derived from software component interfaces |
US5375242A (en) * | 1993-09-29 | 1994-12-20 | Hewlett-Packard Company | Compiler architecture for cross-module optimization |
US5485616A (en) * | 1993-10-12 | 1996-01-16 | International Business Machines Corporation | Using program call graphs to determine the maximum fixed point solution of interprocedural bidirectional data flow problems in a compiler |
US5535394A (en) * | 1993-10-20 | 1996-07-09 | International Business Machines Corporation | Methods for distinguishing dynamically allocated storage along different call paths and for providing a compact representation of alias analysis |
US6064819A (en) * | 1993-12-08 | 2000-05-16 | Imec | Control flow and memory management optimization |
US5581769A (en) * | 1993-12-29 | 1996-12-03 | International Business Machines Corporation | Multipurpose program object linkage protocol for upward compatibility among different compilers |
US5539907A (en) * | 1994-03-01 | 1996-07-23 | Digital Equipment Corporation | System for monitoring computer system performance |
US5999737A (en) * | 1994-03-01 | 1999-12-07 | Digital Equipment Corporation | Link time optimization via dead code elimination, code motion, code partitioning, code grouping, loop analysis with code motion, loop invariant analysis and active variable to register analysis |
US5471636A (en) * | 1994-06-06 | 1995-11-28 | Hauck; Lane T. | Software development system and method of using same |
US5822592A (en) * | 1994-06-28 | 1998-10-13 | Us West Technologies, Inc. | Method and system for determining source code location |
US6006033A (en) * | 1994-08-15 | 1999-12-21 | International Business Machines Corporation | Method and system for reordering the instructions of a computer program to optimize its execution |
US6131185A (en) * | 1994-12-13 | 2000-10-10 | International Business Machines Corporation | Method and system for visually debugging on object in an object oriented system |
US5590330A (en) * | 1994-12-13 | 1996-12-31 | International Business Machines Corporation | Method and system for providing a testing facility in a program development tool |
US5581696A (en) * | 1995-05-09 | 1996-12-03 | Parasoft Corporation | Method using a computer for automatically instrumenting a computer program for dynamic debugging |
US5642514A (en) * | 1995-05-24 | 1997-06-24 | International Business Machines Corporation | Method and system for constructing compact executable files by eliminating redundant debugging strings |
US20060206219A1 (en) | 1995-05-30 | 2006-09-14 | Brown David W | Motion control systems and methods |
US7139843B1 (en) | 1995-05-30 | 2006-11-21 | Roy-G-Biv Corporation | System and methods for generating and communicating motion data through a distributed network |
US7137107B1 (en) | 2003-04-29 | 2006-11-14 | Roy-G-Biv Corporation | Motion control systems and methods |
US7024666B1 (en) * | 2002-01-28 | 2006-04-04 | Roy-G-Biv Corporation | Motion control systems and methods |
US20100131081A1 (en) * | 1995-05-30 | 2010-05-27 | Brown David W | Systems and methods for motion control |
US5623696A (en) * | 1995-05-30 | 1997-04-22 | International Business Machines Corporation | System for formatting a request into a packet which can be read by plurality of operating systems for providing a driver for a storage device |
US5691897A (en) * | 1995-05-30 | 1997-11-25 | Roy-G-Biv Corporation | Motion control systems |
CA2224689C (en) * | 1995-06-02 | 2002-10-29 | Rational Software Corporation | Remote monitoring of computer programs |
US5701489A (en) * | 1995-06-06 | 1997-12-23 | International Business Machines Corporation | System for partial in-line expansion of procedure calls during program compilation |
US6311324B1 (en) * | 1995-06-07 | 2001-10-30 | Intel Corporation | Software profiler which has the ability to display performance data on a computer screen |
US5740443A (en) * | 1995-08-14 | 1998-04-14 | International Business Machines Corporation | Call-site specific selective automatic inlining |
US5870588A (en) * | 1995-10-23 | 1999-02-09 | Interuniversitair Micro-Elektronica Centrum(Imec Vzw) | Design environment and a design method for hardware/software co-design |
US5845126A (en) * | 1995-12-06 | 1998-12-01 | International Business Machines Corporation | Method of, system for, and computer program product for providing inlined nested array constructors using normalized counters |
US6135650A (en) * | 1995-12-22 | 2000-10-24 | Sun Microsystems, Inc. | Method and system for wrapper routine optimization |
US5850554A (en) * | 1995-12-29 | 1998-12-15 | Intel Corporation | Compiler tool set for efficiently generating and easily managing multiple program versions of different types |
JP2795244B2 (ja) * | 1996-01-17 | 1998-09-10 | 日本電気株式会社 | プログラムデバッグシステム |
US5930509A (en) * | 1996-01-29 | 1999-07-27 | Digital Equipment Corporation | Method and apparatus for performing binary translation |
US6535903B2 (en) | 1996-01-29 | 2003-03-18 | Compaq Information Technologies Group, L.P. | Method and apparatus for maintaining translated routine stack in a binary translation environment |
US6091897A (en) | 1996-01-29 | 2000-07-18 | Digital Equipment Corporation | Fast translation and execution of a computer program on a non-native architecture by use of background translator |
US5848274A (en) * | 1996-02-29 | 1998-12-08 | Supercede, Inc. | Incremental byte code compilation system |
US5764989A (en) * | 1996-02-29 | 1998-06-09 | Supercede, Inc. | Interactive software development system |
US5761515A (en) * | 1996-03-14 | 1998-06-02 | International Business Machines Corporation | Branch on cache hit/miss for compiler-assisted miss delay tolerance |
US5812854A (en) * | 1996-03-18 | 1998-09-22 | International Business Machines Corporation | Mechanism for integrating user-defined instructions with compiler-generated instructions and for optimizing the integrated instruction stream |
US5901317A (en) * | 1996-03-25 | 1999-05-04 | Sun Microsystems, Inc. | Method and system for register allocation using multiple interference graphs |
JP3262493B2 (ja) * | 1996-04-12 | 2002-03-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムのデータ構造を表示する方法、及びデータ構造表示装置 |
US5815719A (en) * | 1996-05-07 | 1998-09-29 | Sun Microsystems, Inc. | Method and apparatus for easy insertion of assembler code for optimization |
US5778212A (en) * | 1996-06-03 | 1998-07-07 | Silicon Graphics, Inc. | Interprocedural analysis user interface |
US5812855A (en) * | 1996-06-03 | 1998-09-22 | Silicon Graphics, Inc. | System and method for constaint propagation cloning for unknown edges in IPA |
US6067413A (en) * | 1996-06-13 | 2000-05-23 | Instantations, Inc. | Data representation for mixed-language program development |
US5987249A (en) * | 1996-08-27 | 1999-11-16 | Numega Technologies | IR code instrumentation |
US6186677B1 (en) | 1996-08-27 | 2001-02-13 | Compuware Corporation | Byte code instrumentation |
JPH1091476A (ja) * | 1996-09-17 | 1998-04-10 | Toshiba Corp | プログラム実行装置及び機能仕様とコードアドレスとの対応付け方法 |
US6513154B1 (en) | 1996-10-21 | 2003-01-28 | John R. Porterfield | System and method for testing of computer programs in programming effort |
US6195746B1 (en) | 1997-01-31 | 2001-02-27 | International Business Machines Corporation | Dynamically typed register architecture |
US5857105A (en) * | 1997-02-05 | 1999-01-05 | Hewlett-Packard Company | Compiler for reducing number of indirect calls in an executable code |
US6016398A (en) * | 1997-04-01 | 2000-01-18 | Intel Corporation | Method for using static single assignment to color out artificial register dependencies |
US5812430A (en) * | 1997-06-02 | 1998-09-22 | Microsoft Corporation | Componentized digital signal processing |
US6081801A (en) * | 1997-06-30 | 2000-06-27 | International Business Machines Corporation | Shared nothing parallel execution of procedural constructs in SQL |
AU750332B2 (en) * | 1997-07-25 | 2002-07-18 | British Telecommunications Public Limited Company | Visualisation in a modular software system |
US20010032278A1 (en) | 1997-10-07 | 2001-10-18 | Brown Stephen J. | Remote generation and distribution of command programs for programmable devices |
US6247174B1 (en) * | 1998-01-02 | 2001-06-12 | Hewlett-Packard Company | Optimization of source code with embedded machine instructions |
US7089331B1 (en) | 1998-05-29 | 2006-08-08 | Oracle International Corporation | Method and mechanism for reducing client-side memory footprint of transmitted data |
US6446258B1 (en) * | 1998-11-03 | 2002-09-03 | Intle Corporation | Interactive instruction scheduling and block ordering |
US6292938B1 (en) * | 1998-12-02 | 2001-09-18 | International Business Machines Corporation | Retargeting optimized code by matching tree patterns in directed acyclic graphs |
US6314557B1 (en) * | 1998-12-14 | 2001-11-06 | Infineon Technologies Development Center Tel Aviv Ltd | Hybrid computer programming environment |
US6230313B1 (en) * | 1998-12-23 | 2001-05-08 | Cray Inc. | Parallelism performance analysis based on execution trace information |
US6415433B1 (en) * | 1998-12-23 | 2002-07-02 | Cray Inc. | Method and system for identifying locations to move portions of the computer program |
US6311326B1 (en) * | 1999-01-04 | 2001-10-30 | Emc Corporation | Online debugging and tracing system and method |
US7526468B2 (en) * | 1999-01-08 | 2009-04-28 | Computer Associates Think, Inc. | System and method for recursive path analysis of DBMS procedures |
US6226787B1 (en) * | 1999-01-25 | 2001-05-01 | Hewlett-Packard Company | Visualization method and system for dynamically displaying operations of a program |
JP3658514B2 (ja) * | 1999-01-28 | 2005-06-08 | 富士通株式会社 | 帳票プログラム作成装置 |
US6564372B1 (en) * | 1999-02-17 | 2003-05-13 | Elbrus International Limited | Critical path optimization-unzipping |
GB2348304B (en) * | 1999-03-24 | 2003-07-09 | Ibm | Optimising Device Driver Debug Tracing |
US6665866B1 (en) * | 1999-05-28 | 2003-12-16 | Microsoft Corporation | Extensible compiler utilizing a plurality of question handlers |
JP4118456B2 (ja) * | 1999-06-29 | 2008-07-16 | 株式会社東芝 | プログラム言語処理システム、コード最適化方法、及び機械読み出し可能な記憶媒体 |
US6802056B1 (en) * | 1999-06-30 | 2004-10-05 | Microsoft Corporation | Translation and transformation of heterogeneous programs |
JP2001034504A (ja) * | 1999-07-19 | 2001-02-09 | Mitsubishi Electric Corp | ソースレベルデバッガ |
US7810069B2 (en) * | 1999-10-05 | 2010-10-05 | Borland Software Corporation | Methods and systems for relating data structures and object-oriented elements for distributed computing |
US8032605B2 (en) | 1999-10-27 | 2011-10-04 | Roy-G-Biv Corporation | Generation and distribution of motion commands over a distributed network |
US20100131078A1 (en) * | 1999-10-27 | 2010-05-27 | Brown David W | Event driven motion systems |
US6885898B1 (en) | 2001-05-18 | 2005-04-26 | Roy-G-Biv Corporation | Event driven motion systems |
US6795963B1 (en) * | 1999-11-12 | 2004-09-21 | International Business Machines Corporation | Method and system for optimizing systems with enhanced debugging information |
US7389284B1 (en) | 2000-02-29 | 2008-06-17 | Oracle International Corporation | Method and mechanism for efficient processing of remote-mapped queries |
AU2001255808A1 (en) * | 2000-03-15 | 2001-09-24 | Arc Cores, Inc. | Method and apparatus for debugging programs in a distributed environment |
US6728954B1 (en) * | 2000-06-30 | 2004-04-27 | Motorola, Inc. | Method for allowing execution management of optimized code |
CA2321016A1 (en) * | 2000-09-27 | 2002-03-27 | Ibm Canada Limited-Ibm Canada Limitee | Interprocedural dead store elimination |
US6820253B1 (en) * | 2000-09-27 | 2004-11-16 | Intel Corporation | Method and system for interprocedural analysis with separate compilation |
US7000227B1 (en) * | 2000-09-29 | 2006-02-14 | Intel Corporation | Iterative optimizing compiler |
US6671873B2 (en) * | 2000-12-13 | 2003-12-30 | Intel Corporation | Problematic binary isolator |
US6748583B2 (en) * | 2000-12-27 | 2004-06-08 | International Business Machines Corporation | Monitoring execution of an hierarchical visual program such as for debugging a message flow |
US20030023950A1 (en) * | 2001-01-10 | 2003-01-30 | Wei Ma | Methods and apparatus for deep embedded software development |
WO2002071241A1 (en) | 2001-02-09 | 2002-09-12 | Roy-G-Biv Corporation | Event management systems and methods for the distribution of motion control commands |
US7904194B2 (en) | 2001-02-09 | 2011-03-08 | Roy-G-Biv Corporation | Event management systems and methods for motion control systems |
US7174536B1 (en) * | 2001-02-12 | 2007-02-06 | Iowa State University Research Foundation, Inc. | Integrated interactive software visualization environment |
US6918110B2 (en) * | 2001-04-11 | 2005-07-12 | Hewlett-Packard Development Company, L.P. | Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code |
GB0113946D0 (en) * | 2001-06-08 | 2001-11-14 | Secr Defence | Automatic Development of Software Codes |
JP2003050716A (ja) * | 2001-08-06 | 2003-02-21 | Matsushita Electric Ind Co Ltd | ソフトウエアデバッガとソフトウエア開発支援システム |
US7103590B1 (en) * | 2001-08-24 | 2006-09-05 | Oracle International Corporation | Method and system for pipelined database table functions |
AUPR796801A0 (en) * | 2001-09-27 | 2001-10-25 | Plugged In Communications Pty Ltd | Computer user interface tool for navigation of data stored in directed graphs |
CA2359862A1 (en) * | 2001-10-24 | 2003-04-24 | Ibm Canada Limited - Ibm Canada Limitee | Using identifiers and counters for controlled optimization compilation |
JP4272371B2 (ja) * | 2001-11-05 | 2009-06-03 | パナソニック株式会社 | デバッグ支援装置、コンパイラ装置、デバッグ支援プログラム、コンパイラプログラム、及びコンピュータ読取可能な記録媒体。 |
US6973457B1 (en) | 2002-05-10 | 2005-12-06 | Oracle International Corporation | Method and system for scrollable cursors |
US7610351B1 (en) | 2002-05-10 | 2009-10-27 | Oracle International Corporation | Method and mechanism for pipelined prefetching |
US7024663B2 (en) * | 2002-07-10 | 2006-04-04 | Micron Technology, Inc. | Method and system for generating object code to facilitate predictive memory retrieval |
US7036112B2 (en) * | 2002-08-16 | 2006-04-25 | Sun Microsystems, Inc. | Multi-mode specification-driven disassembler |
US6983456B2 (en) * | 2002-10-31 | 2006-01-03 | Src Computers, Inc. | Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms |
US7484205B2 (en) * | 2002-12-12 | 2009-01-27 | Microsoft Corporation | Preprocessor-based source code instrumentation |
US7228531B1 (en) * | 2003-02-03 | 2007-06-05 | Altera Corporation | Methods and apparatus for optimizing a processor core on a programmable chip |
US7343600B2 (en) * | 2003-08-18 | 2008-03-11 | Lenovo (Singapore) Pte. Ltd. | Providing an image of installed software utilizing uninstall code |
US8027349B2 (en) * | 2003-09-25 | 2011-09-27 | Roy-G-Biv Corporation | Database event driven motion systems |
US20060064503A1 (en) | 2003-09-25 | 2006-03-23 | Brown David W | Data routing systems and methods |
CA2443049A1 (en) | 2003-09-26 | 2005-03-26 | Ali I. Sheikh | Method for computer program optimization in a dynamic compiling environment |
US7747659B2 (en) * | 2004-01-05 | 2010-06-29 | International Business Machines Corporation | Garbage collector with eager read barrier |
US20100131077A1 (en) * | 2004-02-25 | 2010-05-27 | Brown David W | Data Collection Systems and Methods for Motion Control |
US7836434B1 (en) * | 2004-05-04 | 2010-11-16 | Oracle America, Inc. | Method and system for analyzing array access to a pointer that is referenced as an array |
US7624304B2 (en) * | 2004-10-07 | 2009-11-24 | Microsoft Corporation | Defect detection for integers |
US7707543B2 (en) * | 2004-11-24 | 2010-04-27 | Siemens Aktiengesellschaft | Architecture for a computer-based development environment with self-contained components and a threading model |
JP2006243838A (ja) * | 2005-02-28 | 2006-09-14 | Toshiba Corp | プログラム開発装置 |
US20060248466A1 (en) * | 2005-04-28 | 2006-11-02 | International Business Machines Corporation | Integration of multiple programming/scripting languages into one program unit |
US8407206B2 (en) * | 2005-05-16 | 2013-03-26 | Microsoft Corporation | Storing results related to requests for software development services |
US9075596B2 (en) | 2005-06-24 | 2015-07-07 | Oracle International Corporation | Deployment |
US9542175B2 (en) | 2005-06-24 | 2017-01-10 | Oracle International Corporation | Continuous deployment |
US9063725B2 (en) | 2005-06-24 | 2015-06-23 | Oracle International Corporation | Portable management |
US7689979B1 (en) * | 2005-08-02 | 2010-03-30 | Adobe Systems Inc. | Methods and apparatus to improve application launch time |
US20070250828A1 (en) * | 2005-11-16 | 2007-10-25 | Tseitlin Ariel D | Portable libraries |
US7716100B2 (en) * | 2005-12-02 | 2010-05-11 | Kuberre Systems, Inc. | Methods and systems for computing platform |
US7644308B2 (en) * | 2006-03-06 | 2010-01-05 | Hewlett-Packard Development Company, L.P. | Hierarchical timestamps |
US8819641B1 (en) | 2006-04-27 | 2014-08-26 | Epic Games, Inc. | Program state reversing software development tool |
US8250553B2 (en) * | 2006-07-27 | 2012-08-21 | International Business Machines Corporation | Method and data processing system for finding problems caused by access to uninitialized data storage in assembler programs |
US8799871B2 (en) * | 2007-01-08 | 2014-08-05 | The Mathworks, Inc. | Computation of elementwise expression in parallel |
US7636697B1 (en) * | 2007-01-29 | 2009-12-22 | Ailive Inc. | Method and system for rapid evaluation of logical expressions |
US8930927B2 (en) * | 2007-06-04 | 2015-01-06 | International Business Machines Corporation | Diagnosing aliasing violations in a partial program view |
US8245211B2 (en) * | 2007-06-05 | 2012-08-14 | International Business Machines Corporation | Method and system for finding problems caused by access to partially uninitialized data storage which is accessed using index expressions |
US8930909B1 (en) * | 2007-07-13 | 2015-01-06 | The Mathworks, Inc. | Debugging using presentation layer representations of objects |
US9141377B2 (en) * | 2008-02-19 | 2015-09-22 | International Business Machines Corporation | Visualization of code units across disparate systems |
US7530056B1 (en) | 2008-03-31 | 2009-05-05 | International Business Machines Corporation | Method and system for detecting runtime defects in a program by comparing correct and incorrect runs |
US8484630B2 (en) * | 2008-12-23 | 2013-07-09 | International Business Machines Corporation | Code motion based on live ranges in an optimizing compiler |
US8549496B2 (en) * | 2009-02-27 | 2013-10-01 | Texas Tech University System | Method, apparatus and computer program product for automatically generating a computer program using consume, simplify and produce semantics with normalize, transpose and distribute operations |
US8448153B1 (en) | 2009-10-29 | 2013-05-21 | Ning Wang | Encoding data and metadata for run-time checking of computer code and data serialization |
US9430204B2 (en) | 2010-11-19 | 2016-08-30 | Microsoft Technology Licensing, Llc | Read-only communication operator |
US9507568B2 (en) * | 2010-12-09 | 2016-11-29 | Microsoft Technology Licensing, Llc | Nested communication operator |
US9262302B2 (en) * | 2010-12-16 | 2016-02-16 | International Business Machines Corporation | Displaying values of variables in a first thread modified by another thread |
US9395957B2 (en) | 2010-12-22 | 2016-07-19 | Microsoft Technology Licensing, Llc | Agile communication operator |
US8713684B2 (en) | 2012-02-24 | 2014-04-29 | Appthority, Inc. | Quantifying the risks of applications for mobile devices |
US8918881B2 (en) | 2012-02-24 | 2014-12-23 | Appthority, Inc. | Off-device anti-malware protection for mobile devices |
US8819772B2 (en) | 2012-06-25 | 2014-08-26 | Appthority, Inc. | In-line filtering of insecure or unwanted mobile device software components or communications |
US9372695B2 (en) * | 2013-06-28 | 2016-06-21 | Globalfoundries Inc. | Optimization of instruction groups across group boundaries |
US9348596B2 (en) | 2013-06-28 | 2016-05-24 | International Business Machines Corporation | Forming instruction groups based on decode time instruction optimization |
US9753710B2 (en) * | 2013-11-07 | 2017-09-05 | Netronome Systems, Inc. | Resource allocation with hierarchical scope |
CN104951290B (zh) * | 2014-03-31 | 2018-05-01 | 国际商业机器公司 | 优化软件的方法和设备 |
US9292267B2 (en) | 2014-06-27 | 2016-03-22 | International Business Machines Corporation | Compiling nested relational algebras with multiple intermediate representations |
US10545749B2 (en) | 2014-08-20 | 2020-01-28 | Samsung Electronics Co., Ltd. | System for cloud computing using web components |
US10067750B2 (en) * | 2015-02-23 | 2018-09-04 | Qualcomm Incorporated | Whole-program optimization using data from previous compilation runs |
US9830134B2 (en) * | 2015-06-15 | 2017-11-28 | Qualcomm Incorporated | Generating object code from intermediate code that includes hierarchical sub-routine information |
US9779012B1 (en) * | 2016-02-26 | 2017-10-03 | Mbit Wireless, Inc. | Dynamic and global in-system debugger |
JP2017156937A (ja) * | 2016-03-01 | 2017-09-07 | ヤンマー株式会社 | 端末装置およびソフトウェア書き換えプログラム |
US11244090B2 (en) * | 2016-06-01 | 2022-02-08 | The Mathworks, Inc. | Systems and methods for extracting adjustable attributes of model components |
US10073759B2 (en) * | 2016-09-29 | 2018-09-11 | International Business Machines Corporation | Identification and handling of nested breakpoints during debug session |
US11232056B2 (en) * | 2016-12-28 | 2022-01-25 | Intel Corporation | System and method for vector communication |
US11321236B2 (en) * | 2018-01-08 | 2022-05-03 | Microsoft Technology Licensing, Llc. | Reduced instructions to generate global variable addresses |
CN111488140B (zh) * | 2019-01-29 | 2023-10-27 | 杭州海康威视数字技术股份有限公司 | 一种支持多编程语言多编程库的方法、装置和计算机设备 |
US11669613B2 (en) | 2020-05-29 | 2023-06-06 | EnSoft Corp. | Method for analyzing and verifying software for safety and security |
US11714619B2 (en) * | 2020-12-17 | 2023-08-01 | Huawei Technologies Co., Ltd. | Method and apparatus for retaining optimal width vector operations in arbitrary/flexible vector width architecture |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4667290A (en) * | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
US4734854A (en) * | 1985-10-08 | 1988-03-29 | American Telephone And Telegraph Company | System for generating software source code components |
US4905138A (en) * | 1985-10-17 | 1990-02-27 | Westinghouse Electric Corp. | Meta-interpreter |
EP0243110A3 (en) * | 1986-04-21 | 1991-05-29 | Texas Instruments Incorporated | Computer system having source code re-creation capability |
-
1990
- 1990-08-23 US US07/572,043 patent/US5175856A/en not_active Expired - Lifetime
-
1991
- 1991-06-10 EP EP91912745A patent/EP0537257B1/en not_active Expired - Lifetime
- 1991-06-10 WO PCT/US1991/004064 patent/WO1991020030A1/en active IP Right Grant
- 1991-06-10 JP JP3512079A patent/JPH05508494A/ja active Pending
- 1991-06-10 DE DE69131832T patent/DE69131832T2/de not_active Expired - Fee Related
- 1991-06-10 AU AU82018/91A patent/AU8201891A/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012150830A (ja) * | 2004-11-19 | 2012-08-09 | Intel Corp | 限定された誤りによる遅延した更新によるソフトウェアキャッシュ処理 |
Also Published As
Publication number | Publication date |
---|---|
EP0537257A1 (en) | 1993-04-21 |
EP0537257A4 (en) | 1993-11-24 |
WO1991020030A1 (en) | 1991-12-26 |
EP0537257B1 (en) | 1999-12-08 |
AU8201891A (en) | 1992-01-07 |
DE69131832T2 (de) | 2000-06-21 |
US5175856A (en) | 1992-12-29 |
DE69131832D1 (de) | 2000-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH05508494A (ja) | ソフトウェア開発のためのコンピュータプログラムの統合階層表示 | |
EP0643851B1 (en) | Debugger program which includes correlation of computer program source code with optimized objet code | |
EP0406602B1 (en) | Method and apparatus for debugging parallel programs by serialization | |
Wirth et al. | Compiler construction | |
Börger | The ASM refinement method | |
US5680622A (en) | System and methods for quickly detecting shareability of symbol and type information in header files | |
US6182281B1 (en) | Incremental compilation of C++ programs | |
CN100385399C (zh) | 用于多个异常处理模型的中间表示的方法和系统 | |
US6434742B1 (en) | Symbol for automatically renaming symbols in files during the compiling of the files | |
US20080104096A1 (en) | Software development system | |
Closse et al. | Saxo–RT: Interpreting Esterel semantic on a sequential execution structure | |
JP2001166949A (ja) | シンボリック実行を用いてソースコードをコンパイルするための方法及び装置 | |
Cann | The optimizing SISAL compiler: version 12.0 | |
KR960003138B1 (ko) | 다중 언어 최적화 컴파일러의 유도 수식 분석 | |
Carle et al. | A Practical Environment for Scientific Programming. | |
Cordy et al. | Practical metaprogramming | |
JP2001166946A (ja) | 階層の平坦化によりソースコードをコンパイルする方法及び装置 | |
Champelovier et al. | Reference Manual of the LNT to LOTOS Translator | |
Lumley et al. | Compiling XSLT3, in the browser, in itself | |
Livadas et al. | System dependence graphs based on parse trees and their use in software maintenance | |
Maliavko et al. | The functionally-imperative programming language El and its translator | |
Auguston | RIGAL—a programming language for compiler writing | |
EP1785848A1 (en) | Method and apparatus for semantic checking of program code | |
Myers | Composite design facilities of six programming languages | |
Maliavko et al. | Functionally Imperative Programming Language El and its Implementation |