JPH01166141A - デバッグ情報提供方法 - Google Patents
デバッグ情報提供方法Info
- Publication number
- JPH01166141A JPH01166141A JP63289913A JP28991388A JPH01166141A JP H01166141 A JPH01166141 A JP H01166141A JP 63289913 A JP63289913 A JP 63289913A JP 28991388 A JP28991388 A JP 28991388A JP H01166141 A JPH01166141 A JP H01166141A
- Authority
- JP
- Japan
- Prior art keywords
- code
- resource
- web
- range
- user
- 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
Links
- 238000000034 method Methods 0.000 claims description 6
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 33
- 238000010586 diagram Methods 0.000 description 12
- 239000002131 composite material Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 235000009508 confectionery Nutrition 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Classifications
-
- 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/362—Software debugging
- G06F11/3628—Software debugging of optimised code
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔発明の技術分野〕
本発明は、最適化コンパイラを用いてコンパイルされた
コードのデバッグに関するものである。
コードのデバッグに関するものである。
コードは、一般に高水準プログラミング言語で書かれて
いる。しばしばソース・コードと呼ばれるこの高水準言
語は、コンパイラ・プログラムによってアセンブリ言語
に翻訳される。オブジェクト・コードと呼ばれるアセン
ブリ言語の2進形式は、コンピュータによって実際に実
行されるコードの形式である。
いる。しばしばソース・コードと呼ばれるこの高水準言
語は、コンパイラ・プログラムによってアセンブリ言語
に翻訳される。オブジェクト・コードと呼ばれるアセン
ブリ言語の2進形式は、コンピュータによって実際に実
行されるコードの形式である。
なお、アセンブリ言語とは異なる形式への変換がなされ
る場合もあるが、以下の議論の本質には何ら影響を与え
ないので、その説明・例示は省略する。
る場合もあるが、以下の議論の本質には何ら影響を与え
ないので、その説明・例示は省略する。
コードゆデバッガは、プログラマがコードのエラーを見
つけ出すのを助けるプログラムである。
つけ出すのを助けるプログラムである。
これは、コード・デバッグ処理の効率を改善するのに極
めて有効なツールである。コード・デバッガの多くは、
アセンブリ・コード会レベルでのコードの動作に関連し
た情報を提供するものである。
めて有効なツールである。コード・デバッガの多くは、
アセンブリ・コード会レベルでのコードの動作に関連し
た情報を提供するものである。
しかし、もとのコードが高水準の言語で書かれている場
合、このような形式の情報しか与えられないためにプロ
グラムのデバッグが困難になる。プログラマが高水準言
語でプログラムを書く場合、アセンブリ・コードの形で
現れるこれらのエラーを探索するのはプログラマの望む
ところではない。
合、このような形式の情報しか与えられないためにプロ
グラムのデバッグが困難になる。プログラマが高水準言
語でプログラムを書く場合、アセンブリ・コードの形で
現れるこれらのエラーを探索するのはプログラマの望む
ところではない。
この問題を回避するためには、プログラマが、そのプロ
グラムを書いたも環とのコード・レベルでプログラムの
デバッグを行なえるようにする、デバッガ参プログラム
の開発が望ましい。こうしたデバッガ拳プログラムは、
しばしば、ソース・レベル−デバッガと呼ばれる。
グラムを書いたも環とのコード・レベルでプログラムの
デバッグを行なえるようにする、デバッガ参プログラム
の開発が望ましい。こうしたデバッガ拳プログラムは、
しばしば、ソース・レベル−デバッガと呼ばれる。
コード・デバッガの重要な特徴の1つは、プログラマが
コードの実行を停止し、そのコードが作用している各ユ
ーザ資源における値をチエツクすることができるように
する点にある。ユーザ資源は、通常、ソース・コードで
定義された変数である。ユーザ資源の値は、プログラム
が正しく機能しない場合に、障害の原因を示す手がかシ
を与えるものである。
コードの実行を停止し、そのコードが作用している各ユ
ーザ資源における値をチエツクすることができるように
する点にある。ユーザ資源は、通常、ソース・コードで
定義された変数である。ユーザ資源の値は、プログラム
が正しく機能しない場合に、障害の原因を示す手がかシ
を与えるものである。
コンピュータは、オブジェクト・コードによって動作す
るので1.ソース争レベル・デバッlfハ、動作時に、
ソース・コード中で名前がつけられているユーザ資源が
、コンピュータによって実際にどこに記憶されているか
を知シ、これKよって。
るので1.ソース争レベル・デバッlfハ、動作時に、
ソース・コード中で名前がつけられているユーザ資源が
、コンピュータによって実際にどこに記憶されているか
を知シ、これKよって。
ユーザがユーザ資源に関する現在の値を要求すると、デ
バッグ拳プログラムがユーザ資源をどこで見出すことが
できるかを知る必要がある。通常、コンパイラはユーザ
資源がつねに記憶される。ユーザ資源についての記憶ロ
ケーションの割当てを行なう。このような場合、デバッ
ガは、ただその記憶場所に行って、ユーザ資源の値にア
クセスするだけですむ。
バッグ拳プログラムがユーザ資源をどこで見出すことが
できるかを知る必要がある。通常、コンパイラはユーザ
資源がつねに記憶される。ユーザ資源についての記憶ロ
ケーションの割当てを行なう。このような場合、デバッ
ガは、ただその記憶場所に行って、ユーザ資源の値にア
クセスするだけですむ。
最適化されたコードを発生するコンパイラを用いる場合
に困難が生じる。普通、コンパイラ内のオプテイマイザ
の設計目標は、できるだけ速く走るコードを生成するこ
とである。最適化されたコードでは、ユーザ資源がいつ
も同じ場所に記憶されることがないようにするのが望ま
しいことがある。例えば、特定のコード・セクションに
おいであるユーザ資源のアクセス及び書換えの少なくと
入れておくことにより、このレジスタがアクセス/更新
され、他の記憶ロケーションが同時に更新されることが
ないようにすることができる。従って、標準的なデバッ
グ・プログラムは、この特定のセクションの実行中には
このユーザ資源にアクセスする方法を持りていない。従
りて、プログラマは、再びオブジェクト・コードに基づ
いたコードのデバッグを行なおうとするか、あるいは他
の方法を利用せざるを得なくなる。
に困難が生じる。普通、コンパイラ内のオプテイマイザ
の設計目標は、できるだけ速く走るコードを生成するこ
とである。最適化されたコードでは、ユーザ資源がいつ
も同じ場所に記憶されることがないようにするのが望ま
しいことがある。例えば、特定のコード・セクションに
おいであるユーザ資源のアクセス及び書換えの少なくと
入れておくことにより、このレジスタがアクセス/更新
され、他の記憶ロケーションが同時に更新されることが
ないようにすることができる。従って、標準的なデバッ
グ・プログラムは、この特定のセクションの実行中には
このユーザ資源にアクセスする方法を持りていない。従
りて、プログラマは、再びオブジェクト・コードに基づ
いたコードのデバッグを行なおうとするか、あるいは他
の方法を利用せざるを得なくなる。
本発明は上述したような最適化を行なう場合でもソース
・レベルのデバッグを可能とすることを目的とする。
・レベルのデバッグを可能とすることを目的とする。
本発明の一実施例によれば、最適化コードのシンボリツ
ク・デバッグをサポートする変数レンジを用いる方法及
び装置が提供される。ソース・コード中の各ユーザ資源
について2記述を含むデバッグ・シンボル界が構成され
る。さらに、レンジ表が作成される。レンジ表には、コ
ードが実行される間に色々なロケーションに記憶される
各ユーザ資源毎に、レンジのリストと、各レンジ毎にそ
のユーザ資源がどこにあるかに関する記述が含まれてい
る。ユーザ資源が特定のレンジにおいて定数として記憶
されている場合、その定数の値をレンジ表に記憶してお
いてもよい。デバッグ・シンボル表における各ユーザ資
源についての記述には、個々のユーザ資源について、そ
れについてのレンジのリストがレンジ表に含まれている
か否かを示すフラグが含まれている。そのリストがレン
ジ表中に含まれている場合、そのユーザ資源の記述には
、そのユーザ資源についてのレンジ・リストへのポイン
タが含まれている。このポインタは、例えば、レンジ表
の中へのインデクスで適当なリストを指示するものであ
ってよい。
ク・デバッグをサポートする変数レンジを用いる方法及
び装置が提供される。ソース・コード中の各ユーザ資源
について2記述を含むデバッグ・シンボル界が構成され
る。さらに、レンジ表が作成される。レンジ表には、コ
ードが実行される間に色々なロケーションに記憶される
各ユーザ資源毎に、レンジのリストと、各レンジ毎にそ
のユーザ資源がどこにあるかに関する記述が含まれてい
る。ユーザ資源が特定のレンジにおいて定数として記憶
されている場合、その定数の値をレンジ表に記憶してお
いてもよい。デバッグ・シンボル表における各ユーザ資
源についての記述には、個々のユーザ資源について、そ
れについてのレンジのリストがレンジ表に含まれている
か否かを示すフラグが含まれている。そのリストがレン
ジ表中に含まれている場合、そのユーザ資源の記述には
、そのユーザ資源についてのレンジ・リストへのポイン
タが含まれている。このポインタは、例えば、レンジ表
の中へのインデクスで適当なリストを指示するものであ
ってよい。
第2A図では、コンパイラ42がソース・コード41を
受取り、オブジェクト・コード43を生成する。オブジ
ェクト・コードはコンピュータ44で実行される。
・ 第2B図では、コンピュータ44上で走るデバッガ45
が、ソース・コード41中のエラーを発見するため、オ
ブジェクト・コード43を実行する。デバッグの際、デ
バッガ45はデバッグ・シンボル表55にアクセスする
。コンパイラ42には、被生成コード52を生成するコ
ード・ジェネレータ51が含まれているように示されて
いる。
受取り、オブジェクト・コード43を生成する。オブジ
ェクト・コードはコンピュータ44で実行される。
・ 第2B図では、コンピュータ44上で走るデバッガ45
が、ソース・コード41中のエラーを発見するため、オ
ブジェクト・コード43を実行する。デバッグの際、デ
バッガ45はデバッグ・シンボル表55にアクセスする
。コンパイラ42には、被生成コード52を生成するコ
ード・ジェネレータ51が含まれているように示されて
いる。
コンパイラ42中のコード・オプテイマイザ53によっ
て、被生成コードの最適化が行なわれ、オブジェクト・
コード43が作られる。コード・オプテイマイザ53は
、マルチ・バス大域オプテイマイザである。コード・オ
プテイマイザ53は、資源表54によって記憶ロケーシ
ョンおよびレジスタについての情報を掌握している。各
記憶ロケーションおよびレジスタは、資源表54中に夫
々固有のエントリを有している。ここにおいて、記憶ロ
ケーションがメモリ資源と呼ばれ、またレジスタがレジ
スタ資源と呼ばれる場合もある。また、記憶ロケーショ
・ンとレジスタがまとめて資源と呼ばれる場合もある。
て、被生成コードの最適化が行なわれ、オブジェクト・
コード43が作られる。コード・オプテイマイザ53は
、マルチ・バス大域オプテイマイザである。コード・オ
プテイマイザ53は、資源表54によって記憶ロケーシ
ョンおよびレジスタについての情報を掌握している。各
記憶ロケーションおよびレジスタは、資源表54中に夫
々固有のエントリを有している。ここにおいて、記憶ロ
ケーションがメモリ資源と呼ばれ、またレジスタがレジ
スタ資源と呼ばれる場合もある。また、記憶ロケーショ
・ンとレジスタがまとめて資源と呼ばれる場合もある。
ソース・コード41内の各ユーザ資源毎に、デバッガ4
5は、デバッグ・シンボル表55にデータ構造体を保有
している。これらの構造体は、デバッグ・シンボル表5
5内のエントリである。先行技術によるデータ構造のフ
ォーマットを第3A図に示す。第3A図において、構造
体106は、32ビツトの#100〜104から構成さ
れている。
5は、デバッグ・シンボル表55にデータ構造体を保有
している。これらの構造体は、デバッグ・シンボル表5
5内のエントリである。先行技術によるデータ構造のフ
ォーマットを第3A図に示す。第3A図において、構造
体106は、32ビツトの#100〜104から構成さ
れている。
゛ 語100には、ユーザ資源に関する情報を示す各
−種フイールドが含まれている。1ビツト・フィール
ド107には、デバッガに対して構造体106のサイズ
・パラメータに関して知らせる情報が記憶されている。
−種フイールドが含まれている。1ビツト・フィール
ド107には、デバッガに対して構造体106のサイズ
・パラメータに関して知らせる情報が記憶されている。
10ビツト・フィールド108は、構造体106がどの
タイプの構造体であるかをデバッガ45に対して指示す
る。例えば、フィールド108は、構造体106に動的
変数が含まれていることをデバッガ45に指示すること
ができる。1ビツト・フィールド109は、構造体10
6によって定義される資源が、ソース・コード41中で
大域的に認識できるか否かを指示する。1ビツト・フィ
ールド110は、あるアドレスが間接アドレスであるか
。
タイプの構造体であるかをデバッガ45に対して指示す
る。例えば、フィールド108は、構造体106に動的
変数が含まれていることをデバッガ45に指示すること
ができる。1ビツト・フィールド109は、構造体10
6によって定義される資源が、ソース・コード41中で
大域的に認識できるか否かを指示する。1ビツト・フィ
ールド110は、あるアドレスが間接アドレスであるか
。
直接アドレスであるかを指示する。1ビツト・フィール
ド111は、資源がレジスタ・タイプか、動的変数かを
指示する。18ビツト・フィールド112は未使用であ
る。
ド111は、資源がレジスタ・タイプか、動的変数かを
指示する。18ビツト・フィールド112は未使用であ
る。
語101には、例えば、実際のアドレスまたはインデク
スであるポインタが含まれている。このポインタは資源
の名前が入っているメモリ・ロケーションを指示する。
スであるポインタが含まれている。このポインタは資源
の名前が入っているメモリ・ロケーションを指示する。
この名前は、ソース・コード41中でのこの資源の指示
のし方を示す。語102には、メモリ内で資源が記憶さ
れているロケーションを指示するポインタが含まれてい
る。語103は資源のタイプについての情報が記憶され
ているロケーションを示す。語104には、C0BOL
構造に用いられる事後間接バイト・オフセットが含まれ
ている。
のし方を示す。語102には、メモリ内で資源が記憶さ
れているロケーションを指示するポインタが含まれてい
る。語103は資源のタイプについての情報が記憶され
ているロケーションを示す。語104には、C0BOL
構造に用いられる事後間接バイト・オフセットが含まれ
ている。
第3A図では、デバッガ45は、常に、構造体106に
よって定義される資源が同じロケーションで見つかるも
のと期待している。既述のように、これは、コンパイラ
42が最適化コンパイラでない場合に限って成立するこ
とである。
よって定義される資源が同じロケーションで見つかるも
のと期待している。既述のように、これは、コンパイラ
42が最適化コンパイラでない場合に限って成立するこ
とである。
第3B図は、本発明の望ましい実施例に従って修正され
た構造体106を示している。語101−104は第3
A図と同じである。語100には、1ビツトのフィール
ド213と214が付加されている。フィーiv ト2
13 ハ、フィールド214がデバッガ45Vcよりも
つと好都合にアクセスできる位置に置かれるようにする
ための詰め物である。構造体106によって定義された
資源に関連するレンジ表がない場合にはフィールド21
4はリセットされる。構造体106によって定義された
資源に関連するレンジ表があれば、フィールド214が
セットされる。
た構造体106を示している。語101−104は第3
A図と同じである。語100には、1ビツトのフィール
ド213と214が付加されている。フィーiv ト2
13 ハ、フィールド214がデバッガ45Vcよりも
つと好都合にアクセスできる位置に置かれるようにする
ための詰め物である。構造体106によって定義された
資源に関連するレンジ表がない場合にはフィールド21
4はリセットされる。構造体106によって定義された
資源に関連するレンジ表があれば、フィールド214が
セットされる。
さらに、第3B図には@205が付加されている。
フィールド214がセットされている場合には、飴20
5にはレンジ表へのインデクスが含まれろ。このインデ
クスは、構造体106によって定義される資源に関する
レンジの最初のものを指示している。
5にはレンジ表へのインデクスが含まれろ。このインデ
クスは、構造体106によって定義される資源に関する
レンジの最初のものを指示している。
第1図には、本発明の望ましい実施例によるレンジ表が
示されている。デバッグ・シンボル表からの、ユーザ資
源iおよびjに関するポインタ311が、レンジ表内の
レンジを指示する。列312には、ユーザ資源iおよび
jに関するレンジの下戴が含まれている。列313には
、ユーザ資源iおよびjに関するレンジの上限が含まれ
ている。列314には、ユーザ資源iおよびjのロケー
ションが含まれている。列315には、各し゛ンジに関
する情報を示すフラグが含まれている。
示されている。デバッグ・シンボル表からの、ユーザ資
源iおよびjに関するポインタ311が、レンジ表内の
レンジを指示する。列312には、ユーザ資源iおよび
jに関するレンジの下戴が含まれている。列313には
、ユーザ資源iおよびjに関するレンジの上限が含まれ
ている。列314には、ユーザ資源iおよびjのロケー
ションが含まれている。列315には、各し゛ンジに関
する情報を示すフラグが含まれている。
例えば、ルンジ301〜303は、ユーザ責@@i”に
関する情報を提供する。プログラム・ロケーション4か
らプログラム・ロケーション100までの間は、ユーザ
資源iはレジスタ資源としてレジスタ5に記憶されてい
る。プログラム・ロケーション120からプログラム・
ロケーション136までの間では、ユーザ資源iは50
0を値とする定数として記憶されている。プログラム・
ロケーション200からプログラム・ロケーション20
4までの間では、ユーザ資源iはレジスタ資源としてレ
ジスタ31° に記憶されている。これがユーザ資源i
に関する最後のレンジである。レンジ表中にないプログ
ラム・ロケーションにおいては、ユーザ資源iの値は利
用できない。
関する情報を提供する。プログラム・ロケーション4か
らプログラム・ロケーション100までの間は、ユーザ
資源iはレジスタ資源としてレジスタ5に記憶されてい
る。プログラム・ロケーション120からプログラム・
ロケーション136までの間では、ユーザ資源iは50
0を値とする定数として記憶されている。プログラム・
ロケーション200からプログラム・ロケーション20
4までの間では、ユーザ資源iはレジスタ資源としてレ
ジスタ31° に記憶されている。これがユーザ資源i
に関する最後のレンジである。レンジ表中にないプログ
ラム・ロケーションにおいては、ユーザ資源iの値は利
用できない。
同様に、レンジ304およびレンジ305は、ユーザ資
源“j”に関する情報を提供するものである。
源“j”に関する情報を提供するものである。
プログラム・ロケーション8からプログラム・ロケーシ
ョン2Cまでの間は、ユーザ資源jはレジスタ資源とし
てレジスタ6に記憶されている。プログラム・ロケーシ
ョン100からプログラム・ロケーション200までの
間では、ユーザ資源jはメモリ・スタック中に、スタッ
ク上のロケーション m−80に記憶されている。
ョン2Cまでの間は、ユーザ資源jはレジスタ資源とし
てレジスタ6に記憶されている。プログラム・ロケーシ
ョン100からプログラム・ロケーション200までの
間では、ユーザ資源jはメモリ・スタック中に、スタッ
ク上のロケーション m−80に記憶されている。
これがユーザ資源jに関する最後のレンジである。レン
ジ表中にないプログラム・ロケーションではこの資源に
関する値は利用できない。
ジ表中にないプログラム・ロケーションではこの資源に
関する値は利用できない。
従って、データ構造体106がユーザ資源iについて記
述しているなら、そのフィールド214がセットされ、
語205にはレンジ301を指示するインデXクスが含
まれる。データ構造体106がユーザ資源jについて記
述しているなら、そのフィールド214はセットされ、
語205にはレンジ304を示すインデクスが含まれる
。未使用のフィールド112は16ビツトと短かくなっ
ている。
述しているなら、そのフィールド214がセットされ、
語205にはレンジ301を指示するインデXクスが含
まれる。データ構造体106がユーザ資源jについて記
述しているなら、そのフィールド214はセットされ、
語205にはレンジ304を示すインデクスが含まれる
。未使用のフィールド112は16ビツトと短かくなっ
ている。
以下には、コード・オプテイマイザ53が被生成コード
52を最適化する際、どのようにしてレンジを計算して
いるかについて説明する。第4図に、コード・ジェネレ
ータ51が作り出した被生成コードの例が示されている
。第4図のコードには、3つのユーザ資源;ユーザ資源
x、 y、z、が含まれている。この論述の目的は、コ
ード・オプテイマイザ53が被生成コード52の最適化
を行なう際、これらのユーザ資源に関するレンジの計算
をどのようにして行なうのかについて明らかにすること
Kある。
52を最適化する際、どのようにしてレンジを計算して
いるかについて説明する。第4図に、コード・ジェネレ
ータ51が作り出した被生成コードの例が示されている
。第4図のコードには、3つのユーザ資源;ユーザ資源
x、 y、z、が含まれている。この論述の目的は、コ
ード・オプテイマイザ53が被生成コード52の最適化
を行なう際、これらのユーザ資源に関するレンジの計算
をどのようにして行なうのかについて明らかにすること
Kある。
第5図はコード・オプテイマイザによって、レジスタ使
用促進パス(register promotion
pass )が行なわれた後の、第4図の被生成コード
52を示すものである。このコードは、4つの基本ブロ
ック501〜504に分割される。基本ブロックは、単
一の入口点と単一の出口点を有する直線的コード・シー
ケンスである。
用促進パス(register promotion
pass )が行なわれた後の、第4図の被生成コード
52を示すものである。このコードは、4つの基本ブロ
ック501〜504に分割される。基本ブロックは、単
一の入口点と単一の出口点を有する直線的コード・シー
ケンスである。
レジスタ使用促進バスを行なっている間に、コード・オ
プテイマイザは被生成コード52で用いられている各レ
ジスタまたはメモリ・ロケーション毎に、ウェブ(we
b) を計算する。ウェブとは、特定の資源にアクセ
スする1組の命令である。資源が特定の値を持つものと
定義されたときくウェブが開始される。その後、この資
源を利用する命令であって、この資源が新しい値を持つ
と定義されるまでのものは皆、このウェブに含まれる。
プテイマイザは被生成コード52で用いられている各レ
ジスタまたはメモリ・ロケーション毎に、ウェブ(we
b) を計算する。ウェブとは、特定の資源にアクセ
スする1組の命令である。資源が特定の値を持つものと
定義されたときくウェブが開始される。その後、この資
源を利用する命令であって、この資源が新しい値を持つ
と定義されるまでのものは皆、このウェブに含まれる。
単一の資源について2つ以上のウェブが構成されること
がある。資源を定義し利用する一群の命令力入この資源
を定義し利用する他の一群の命令から完全に切シ離され
ている場合に、これが起る。
がある。資源を定義し利用する一群の命令力入この資源
を定義し利用する他の一群の命令から完全に切シ離され
ている場合に、これが起る。
資源がメモリ・ロケーションではなくレジスタに記憶さ
れるときには、コードがよシ速く走行するので、このバ
スにおいてはコード・オプテイマイザは、レジス゛り資
源を使うように変更できるメモリ資源を探す。第5図と
第4図を詳しく比較すると明らかになるように、ユーザ
資源X、y、および2がそれぞれレジスタr9、rlO
,およびrllに「昇格」させられる。第5図から分る
ように、ユーザ資源Xに対する各記憶動作は、Vジスタ
r9に対するコピーに変更され、ユーザ資源yに対する
各記憶動作はレジスタrlOに対するコピーに変更され
、資源2に対する各記憶動作はレジスタrllに対する
コピーに変更される。
れるときには、コードがよシ速く走行するので、このバ
スにおいてはコード・オプテイマイザは、レジス゛り資
源を使うように変更できるメモリ資源を探す。第5図と
第4図を詳しく比較すると明らかになるように、ユーザ
資源X、y、および2がそれぞれレジスタr9、rlO
,およびrllに「昇格」させられる。第5図から分る
ように、ユーザ資源Xに対する各記憶動作は、Vジスタ
r9に対するコピーに変更され、ユーザ資源yに対する
各記憶動作はレジスタrlOに対するコピーに変更され
、資源2に対する各記憶動作はレジスタrllに対する
コピーに変更される。
第5図のコードに関して生成されるワエプが下記の表1
に示されている: 表 1 ウェブ番号 命 令 資 源 2−f資源ポイ
ンタ webl 1.2 rl Nu
l1web2 2.6.15 r9
xweb3 3.4 r2 Nul
lWeb4 4.7 rlo z
web5 6.8 r3 Nul
1web6 7.8 r4 Nul
1web7 8,12、 r5 Nul
116.17 web8 10.12 rll y
web9 15.16 r3 Nul
lweblo 16 r6 Nu
llwebll 17.19 r9
x本発明の目的は、どのウェブがユーザ資源に関連し
ているかを常に掌握しておくことにある。この情報は資
源衣54内の各資源衣エントリにフィールドの形で記憶
されている。資源衣54の全ての資源について、それに
関連したユーザ資源があれば、ポインタがデバッグ・シ
ンボル表55内の −そのユーザ資源に関するエント
リを指示する。資源衣エントリに関連したユーザ資源が
なければ、ポインタはナル・ポインタになる。表1では
、各ウェブに対するこのポインタは、′ユーザ資源ポイ
ンタ”と表示された列に示されている。
に示されている: 表 1 ウェブ番号 命 令 資 源 2−f資源ポイ
ンタ webl 1.2 rl Nu
l1web2 2.6.15 r9
xweb3 3.4 r2 Nul
lWeb4 4.7 rlo z
web5 6.8 r3 Nul
1web6 7.8 r4 Nul
1web7 8,12、 r5 Nul
116.17 web8 10.12 rll y
web9 15.16 r3 Nul
lweblo 16 r6 Nu
llwebll 17.19 r9
x本発明の目的は、どのウェブがユーザ資源に関連し
ているかを常に掌握しておくことにある。この情報は資
源衣54内の各資源衣エントリにフィールドの形で記憶
されている。資源衣54の全ての資源について、それに
関連したユーザ資源があれば、ポインタがデバッグ・シ
ンボル表55内の −そのユーザ資源に関するエント
リを指示する。資源衣エントリに関連したユーザ資源が
なければ、ポインタはナル・ポインタになる。表1では
、各ウェブに対するこのポインタは、′ユーザ資源ポイ
ンタ”と表示された列に示されている。
第5A図には、資源衣54の一部が示されている。ユー
ザ資源Xに関するエントリ510にはデバッグ・シンボ
ル表55中のユーザ資源Xに関するエントリな指示する
ポインタ510aが含まれている。ユーザ資源yに関す
るエンドIJ 511にはデバッグ・シンボル表55中
のユーザ資源yに関するエントリを指示するポインタ5
11aが含まれている。ユーザ資源2に関するエントリ
512にはデバッグ・シンボル表55中のユーザ資源2
に関するエントリを指示するポインタ512aが含まれ
ている。
ザ資源Xに関するエントリ510にはデバッグ・シンボ
ル表55中のユーザ資源Xに関するエントリな指示する
ポインタ510aが含まれている。ユーザ資源yに関す
るエンドIJ 511にはデバッグ・シンボル表55中
のユーザ資源yに関するエントリを指示するポインタ5
11aが含まれている。ユーザ資源2に関するエントリ
512にはデバッグ・シンボル表55中のユーザ資源2
に関するエントリを指示するポインタ512aが含まれ
ている。
第5B図にはレジスタ使用促進パス後における資源衣5
4が示されている。資源光54中のエンド!J 510
.511および512は前と同じである。資源衣54に
対して新しいエントリ520.521および522が追
加されている。レジスタr9に関するエントリ520に
はデバッグ・シンボル表55中のユーザ資源Xに関する
エントリを指示するポインタ510 aが含まれている
。レジスタrllに関するエンl”) 521 Kはデ
バッグ争シンボル表55中のユーザ資源yに関するエン
トリを指示するポインタ511aが含まれている。レジ
スタrlOに関するエントリ522にはデバッグ・シン
ボル表55中のユーザ資源2に関するエントリを指示す
るポインタ512aが含まれている。
4が示されている。資源光54中のエンド!J 510
.511および512は前と同じである。資源衣54に
対して新しいエントリ520.521および522が追
加されている。レジスタr9に関するエントリ520に
はデバッグ・シンボル表55中のユーザ資源Xに関する
エントリを指示するポインタ510 aが含まれている
。レジスタrllに関するエンl”) 521 Kはデ
バッグ争シンボル表55中のユーザ資源yに関するエン
トリを指示するポインタ511aが含まれている。レジ
スタrlOに関するエントリ522にはデバッグ・シン
ボル表55中のユーザ資源2に関するエントリを指示す
るポインタ512aが含まれている。
さらに、レジスタ使用促進パスの間、コード・オプテイ
マイザ53は、各基本ブロックの終了時点で生きている
1組のウェブを算出する。特定の基本ブロックの終了時
点で生きているウェブと)Lウェブに関連した資源の現
在値が、その特定の基本ブロックに引き続き実行される
他の基本ブロックによって必要とされるということを意
味している。第5図のコードに関し、下記の表2に、ブ
ロック501〜504の終了時点でとのウェブが生きて
いるかを示す。
マイザ53は、各基本ブロックの終了時点で生きている
1組のウェブを算出する。特定の基本ブロックの終了時
点で生きているウェブと)Lウェブに関連した資源の現
在値が、その特定の基本ブロックに引き続き実行される
他の基本ブロックによって必要とされるということを意
味している。第5図のコードに関し、下記の表2に、ブ
ロック501〜504の終了時点でとのウェブが生きて
いるかを示す。
表 2
基本ブロック 活性ウェブ
ブロック501 ウェブ2.ウェブ7
′ブロック502 ウェブ7 ブロツク503 ウェブ7、ウェブxq ′
ブロック504 ウェブ10 コード・オプテイマイザ53は、ウェブ間の干渉を判定
するため、もう1つのパスを行なう。パ −スの結果は
第6図に示され【いる。第6図では、各資源はそれに対
応している表1中のウェブに置 “を各命令毎に算出
する。各命令毎の11w5は、その命令の実行時におい
て、現在性きているウェブの集合である。各命令毎のl
1w5の算出は次のように行なう。コード・オプテイマ
イザ53が、ブロック501〜504のそれぞれについ
て、逆の順序で命令列を走査する。各ブロックにおける
最後の命令についてのl 1wsは、表2で与えられる
活性ウェブの集合である。各ブロックにおける逆の順序
による命令列の走査を行なっている間に、コード・オプ
テイマイザ53が現在のl 1wsにないウェブに遭遇
するとコード・オプテイマイザ53は11w5 にその
ウェブを追加する。コード・オプテイマイザ53が、あ
るウェブに対する定義(つまりこのウェブに対応する資
源への値のストア)に出くわすと、そのウェブはl l
w sから除去される。
′ブロック502 ウェブ7 ブロツク503 ウェブ7、ウェブxq ′
ブロック504 ウェブ10 コード・オプテイマイザ53は、ウェブ間の干渉を判定
するため、もう1つのパスを行なう。パ −スの結果は
第6図に示され【いる。第6図では、各資源はそれに対
応している表1中のウェブに置 “を各命令毎に算出
する。各命令毎の11w5は、その命令の実行時におい
て、現在性きているウェブの集合である。各命令毎のl
1w5の算出は次のように行なう。コード・オプテイマ
イザ53が、ブロック501〜504のそれぞれについ
て、逆の順序で命令列を走査する。各ブロックにおける
最後の命令についてのl 1wsは、表2で与えられる
活性ウェブの集合である。各ブロックにおける逆の順序
による命令列の走査を行なっている間に、コード・オプ
テイマイザ53が現在のl 1wsにないウェブに遭遇
するとコード・オプテイマイザ53は11w5 にその
ウェブを追加する。コード・オプテイマイザ53が、あ
るウェブに対する定義(つまりこのウェブに対応する資
源への値のストア)に出くわすと、そのウェブはl l
w sから除去される。
各命令の処理後に存在するl1w5が、第6図に示され
ている。 。
ている。 。
このバスを行った間に導き出される情報から、ウェブ間
の干渉、すなわち、とのウェブが、他のウェブが生きて
いる特注きているかの判定が行なわれる。下記の表3に
は、第6図のコードについてのウェブ間の干渉が示され
ている。
の干渉、すなわち、とのウェブが、他のウェブが生きて
いる特注きているかの判定が行なわれる。下記の表3に
は、第6図のコードについてのウェブ間の干渉が示され
ている。
表 3
ウェブ 干渉ウェブ
web1
web2 web3、web 41web 5%we
b 6、web7web3 web2 web 4 web2%web5 web 5 web 2.web 4web6 w
eb2.web5 web 7 web 2. web 9、weblO
eb8 web9 web7 weblOweb7 webll コード・オプテイマイザ53が干渉グラフを作成するの
に利用する同じ情報が、レンジに関する情報の算出にも
利用できる。レンジの算出は次のように行なわれる。
b 6、web7web3 web2 web 4 web2%web5 web 5 web 2.web 4web6 w
eb2.web5 web 7 web 2. web 9、weblO
eb8 web9 web7 weblOweb7 webll コード・オプテイマイザ53が干渉グラフを作成するの
に利用する同じ情報が、レンジに関する情報の算出にも
利用できる。レンジの算出は次のように行なわれる。
表Iにおいて、成るウェブには、デバッグ・シンボル表
55中のマーザ資源のエンドIJ Ic対するポインタ
がある。これらのウェブに関する情報は、これらに関連
するユーザ資源のレンジを算出するのに用いられる。こ
れらのレンジの算出に当って、高水位マークと低水位マ
ークが利用される。高水位マークはレンジの上端の前に
ある命令である。
55中のマーザ資源のエンドIJ Ic対するポインタ
がある。これらのウェブに関する情報は、これらに関連
するユーザ資源のレンジを算出するのに用いられる。こ
れらのレンジの算出に当って、高水位マークと低水位マ
ークが利用される。高水位マークはレンジの上端の前に
ある命令である。
低水位マークはレンジの下端の前にある命令である。
ブロックの末端の11w5中にウェブがまだ残っている
場合、この最後の命令はそのウェブに関連したユーザ資
源に対する高水位マークである。また、各ブロックにお
ける逆順序の命令列走査をしている間に、コード・オプ
テイマイザ53が11w5へのウェブの追加を行なうコ
ード列中の位置において、ここにある命令もやはシその
ウェブに関連したユーザ資源に対する高水位マークと考
えられる。同様に、11w5からウェブが除去される時
、そこの命令はそのウェブに関連したユーザ資源に対す
る低水位マークと考えられる。また、ブロックの上端は
任意のユーザ資源に対する低水位マークと考えてもよい
。(各ブロック内で命令列を走査することに加えて)ブ
ロック列自体を逆順序で走査すれば、上述のシステムを
改良することが可能である。この場合、次に走査すべき
ブロックの末尾における11w5中に伺らかのウェブが
存在するなら、その直前に走査したブロックの上端に低
水位マークを置く必要はない。
場合、この最後の命令はそのウェブに関連したユーザ資
源に対する高水位マークである。また、各ブロックにお
ける逆順序の命令列走査をしている間に、コード・オプ
テイマイザ53が11w5へのウェブの追加を行なうコ
ード列中の位置において、ここにある命令もやはシその
ウェブに関連したユーザ資源に対する高水位マークと考
えられる。同様に、11w5からウェブが除去される時
、そこの命令はそのウェブに関連したユーザ資源に対す
る低水位マークと考えられる。また、ブロックの上端は
任意のユーザ資源に対する低水位マークと考えてもよい
。(各ブロック内で命令列を走査することに加えて)ブ
ロック列自体を逆順序で走査すれば、上述のシステムを
改良することが可能である。この場合、次に走査すべき
ブロックの末尾における11w5中に伺らかのウェブが
存在するなら、その直前に走査したブロックの上端に低
水位マークを置く必要はない。
第6図および第7図を利用して、上述のレンジを決める
方法が第6図に示すコードに対しいかに行なわれるかに
ついて見ることができる。命令19から始めると、11
w5にはwebllが含まれている。
方法が第6図に示すコードに対しいかに行なわれるかに
ついて見ることができる。命令19から始めると、11
w5にはwebllが含まれている。
表1から分るように、webllにはユーザ資源xへの
ユーザ資源ポインタがある。従って、命令19はユーザ
資源Xについての高水位マークである。
ユーザ資源ポインタがある。従って、命令19はユーザ
資源Xについての高水位マークである。
命令17においてwebll が定義される。よって
、webllは11w5から除去される。従って、命令
17はユーザ資源Xについての低水位マークである。
、webllは11w5から除去される。従って、命令
17はユーザ資源Xについての低水位マークである。
ユーザ資源Xについてのレンジ701の上限と下限は与
えられたこれらの高水位マークと低水位マークから求め
ることができる。
えられたこれらの高水位マークと低水位マークから求め
ることができる。
命令15においてはweb 2が用いられるが、現在1
1w5Kは含まれていない。従って、それは。
1w5Kは含まれていない。従って、それは。
web2の最後の使用である。表1によれば、web2
にはユーザ資源Xへのユーザ資源ポインタがある。
にはユーザ資源Xへのユーザ資源ポインタがある。
従って、命令15はユーザ資源Xについての高水位マー
クである。命令14はブロック503の最初に位置して
いる。web2はブロック502の最後の1 Iwsに
含まれていない。従って、命令14はユーザ資源〜につ
いての低水位マークである。ユーザ資源Xについてのレ
ンジ702はこれらの高水位マークと低水位マークから
決めることができる。
クである。命令14はブロック503の最初に位置して
いる。web2はブロック502の最後の1 Iwsに
含まれていない。従って、命令14はユーザ資源〜につ
いての低水位マークである。ユーザ資源Xについてのレ
ンジ702はこれらの高水位マークと低水位マークから
決めることができる。
命令12では、web 8が用いられているがこれは現
在の11w5には含まれていない。従ってそれはweb
8の最後゛の使用である。表1によれば。
在の11w5には含まれていない。従ってそれはweb
8の最後゛の使用である。表1によれば。
web 8にはユーザ資源yへのユーザ資源ポインタが
ある。従って、命令12はユーザ資源yについての高水
位マークである。命令10において、web8が定義さ
れる。従って、命令10はユーザ資源yについての低水
位マークである。ユーザ資源yについてのレンジ703
は、これらの高水位マークと低水位マークから決めるこ
とができる。
ある。従って、命令12はユーザ資源yについての高水
位マークである。命令10において、web8が定義さ
れる。従って、命令10はユーザ資源yについての低水
位マークである。ユーザ資源yについてのレンジ703
は、これらの高水位マークと低水位マークから決めるこ
とができる。
命令9はブロック501の末端である。web2はブロ
ック501の末端にある命令9の11w5に含まれてい
る。表1によれば、web2にはユーザ資源Xへのユー
ザ資源ポインタがある。従って、命令9はユーザ資源X
についての高水位マークであム命令7においてweb4
が用いられているがこのウェブはl Iwsには含まれ
ていない。従りてそれはweb4の最後の使用である。
ック501の末端にある命令9の11w5に含まれてい
る。表1によれば、web2にはユーザ資源Xへのユー
ザ資源ポインタがある。従って、命令9はユーザ資源X
についての高水位マークであム命令7においてweb4
が用いられているがこのウェブはl Iwsには含まれ
ていない。従りてそれはweb4の最後の使用である。
表1によれば、web4には、ユーザ資源2への資源ポ
インタがある。
インタがある。
従って、命命7はユーザ資源2についての高水位マーク
である。命令4において、web 4が定義される。従
って、命令4はユーザ資源2についての低水位マークで
ある。ユーザ資源2についてのレンジ704はこれら高
水位マークと低水位マークから決めることができる。
である。命令4において、web 4が定義される。従
って、命令4はユーザ資源2についての低水位マークで
ある。ユーザ資源2についてのレンジ704はこれら高
水位マークと低水位マークから決めることができる。
命令2においてはweb2が定義される。従り毛命令2
はユーザ資源Xについての低水位マークである。ユーザ
賃源Xについてのレンジ705は、これら高水位マーク
と低水位マークから決めることができる。この段階で、
第7A図に示すようなレンジ表を作成することができる
。
はユーザ資源Xについての低水位マークである。ユーザ
賃源Xについてのレンジ705は、これら高水位マーク
と低水位マークから決めることができる。この段階で、
第7A図に示すようなレンジ表を作成することができる
。
第7A図のレンジ表において、マーザ資源X。
y、zの各々についてのデバッグ・シンボル表からのポ
インタ131は、レンジ表内のレンジを指示する。列1
32にはユーザ資源X%yおよび2についての各レンジ
の下限が含まれている。列133には、ユーザ資源X%
yおよび2に対する各レンジの上限が含まれている。列
134には、それぞれのレンジに対応するユーザ資源に
対するロケーションが含まれている。列135は、所与
のレンジ内に居る間に、ユーザ資源が格納されていると
ころの資源のタイプを示している。レンジについての情
報はそれぞれのウェブに関連付けられている。例えば、
この関連付けは、レジスタの割りっけを行なうコード・
オプテイマイザ53の一部(レジスタ割付はルーチンと
呼ばれる)によって構築され利用されるデータ構造体に
対して、レンジのリストを追加することによって行なう
ことができる。
インタ131は、レンジ表内のレンジを指示する。列1
32にはユーザ資源X%yおよび2についての各レンジ
の下限が含まれている。列133には、ユーザ資源X%
yおよび2に対する各レンジの上限が含まれている。列
134には、それぞれのレンジに対応するユーザ資源に
対するロケーションが含まれている。列135は、所与
のレンジ内に居る間に、ユーザ資源が格納されていると
ころの資源のタイプを示している。レンジについての情
報はそれぞれのウェブに関連付けられている。例えば、
この関連付けは、レジスタの割りっけを行なうコード・
オプテイマイザ53の一部(レジスタ割付はルーチンと
呼ばれる)によって構築され利用されるデータ構造体に
対して、レンジのリストを追加することによって行なう
ことができる。
割付はルーチンによって構築されたデータ構造は干渉グ
ラフと呼ばれる。各ウェブ毎に別個のエントリが備わっ
ている。各ウェブについてのレンジのりストが、干渉グ
ラフ中のウェブのエントリに加えられる。
ラフと呼ばれる。各ウェブ毎に別個のエントリが備わっ
ている。各ウェブについてのレンジのりストが、干渉グ
ラフ中のウェブのエントリに加えられる。
コード・オプテイマイザ53がこのコードにおいて別の
バスを行なうと、それによってレンジの調整を行なう必
要が生じる可能性がある。例えば、コード・オプテイマ
イザ53がコピー消去(copyeliminatro
n )を行なうかもしれない。コード・オプテイマイザ
53が、2つのウェブが干渉していないが、共通のコピ
ー命令を共用していると判断したときには、コピー消去
を行なってよい。これが行なわれると、コピーが消去さ
れ、2つのウェブは、単一の複合ウェブになる。
バスを行なうと、それによってレンジの調整を行なう必
要が生じる可能性がある。例えば、コード・オプテイマ
イザ53がコピー消去(copyeliminatro
n )を行なうかもしれない。コード・オプテイマイザ
53が、2つのウェブが干渉していないが、共通のコピ
ー命令を共用していると判断したときには、コピー消去
を行なってよい。これが行なわれると、コピーが消去さ
れ、2つのウェブは、単一の複合ウェブになる。
ユーザ資源に関連したウェブが除去されると、除去され
たウェブについてのレンジのリストを複合ウェブに追加
しなければならない。第8図にはコード・オプテイマイ
ザ53がコピー消去を行った後の第7図のコードが示さ
れている。下記の表4に、コピー消去の結果必要になっ
た表1に対する修正を示す。
たウェブについてのレンジのリストを複合ウェブに追加
しなければならない。第8図にはコード・オプテイマイ
ザ53がコピー消去を行った後の第7図のコードが示さ
れている。下記の表4に、コピー消去の結果必要になっ
た表1に対する修正を示す。
表 4
vrebl:web2
web2:web9
web3:web4
web4:web6
web5 6,8 r3
Nul1web6 7,8t3,4s4,
7 r4+r2trlOzweb7:webll web8:web7 we b 9 15 e 16 s 2 +
6 e r 3 + r 9 + r 1
x15.1.2 weblo 16,19 r6
Nullwebll 1’L19,
8,12w r9tr5.rll x、y16.
17,10.12 コード・オプテイマイザ53はまた定数追出しくcon
stant 5pill)を行なうこともできる。例え
ばあるウェブが定数変数(constant vari
able) L。
Nul1web6 7,8t3,4s4,
7 r4+r2trlOzweb7:webll web8:web7 we b 9 15 e 16 s 2 +
6 e r 3 + r 9 + r 1
x15.1.2 weblo 16,19 r6
Nullwebll 1’L19,
8,12w r9tr5.rll x、y16.
17,10.12 コード・オプテイマイザ53はまた定数追出しくcon
stant 5pill)を行なうこともできる。例え
ばあるウェブが定数変数(constant vari
able) L。
か含んでいなければ、コード・オプテイマイザ53はレ
ジスタ内にその定数をずっととっておくよりも、それを
使用することになる毎にレジスタに定数を再ロードし、
これによってレジスタを解放する方が有利であると判定
するかもしれない。この場合、以前はレジスタ・レンジ
・タイプであったーレンジが、定数レンジ・タイプに変
更される。ユーザ資源のロケーションは変更され、その
定数と等しい直接値が入れられる。第9図には、コード
・オプテイマイザ53による定数追出し後に、第8図の
コードがいかに修正されているかが示されている。第9
A図には、第7A図に示すレンジ表が定数追出しの結果
、いかに修正されるかが示されている。第9図を見れば
、レジスタから追出された定数が命令中に直接値として
埋込まれそいることがわかるだろう(命令6.8等)。
ジスタ内にその定数をずっととっておくよりも、それを
使用することになる毎にレジスタに定数を再ロードし、
これによってレジスタを解放する方が有利であると判定
するかもしれない。この場合、以前はレジスタ・レンジ
・タイプであったーレンジが、定数レンジ・タイプに変
更される。ユーザ資源のロケーションは変更され、その
定数と等しい直接値が入れられる。第9図には、コード
・オプテイマイザ53による定数追出し後に、第8図の
コードがいかに修正されているかが示されている。第9
A図には、第7A図に示すレンジ表が定数追出しの結果
、いかに修正されるかが示されている。第9図を見れば
、レジスタから追出された定数が命令中に直接値として
埋込まれそいることがわかるだろう(命令6.8等)。
この段階において、コード・オプテイマイザ53はウェ
ブに対してレジスタの割付けを行なう。第10図には、
レジスタ割付は後における第9図のコードが示されてい
る。ウェブに対するレジスタの割付けがすむと、レンジ
表にそれらのレジスタに関する情報を書込むことができ
る。第10A図にレジスタ割付は後における第9A図の
レンジ表を示す。
ブに対してレジスタの割付けを行なう。第10図には、
レジスタ割付は後における第9図のコードが示されてい
る。ウェブに対するレジスタの割付けがすむと、レンジ
表にそれらのレジスタに関する情報を書込むことができ
る。第10A図にレジスタ割付は後における第9A図の
レンジ表を示す。
レジスタの割付は時、十分なレジスタがなければ、コー
ド・オプテイマイザ53がウェブの一部をメモリへ追出
す。追出されたウェブは、定義後。
ド・オプテイマイザ53がウェブの一部をメモリへ追出
す。追出されたウェブは、定義後。
メモリに記憶され、その使用前に再ロードされる。
これが行なわれる際、レンジの追出しを行なうためにレ
ンジ表のエントリが変更される。低水位マークと高水位
マークは同じままだが、ロケーシ(ンは追出し先のメモ
リ・ロケーションに変更され。
ンジ表のエントリが変更される。低水位マークと高水位
マークは同じままだが、ロケーシ(ンは追出し先のメモ
リ・ロケーションに変更され。
またレンジのタイプは追出しに変更される。
レンジは、別のパスを行なうことによって、しばしば拡
張されることがある。高水位マークは、基本ブロックの
末端またはユーザ資源が入っているレジスタの内容を一
部する可能性のある命令のどちらが先に起るところに移
すことができる。
張されることがある。高水位マークは、基本ブロックの
末端またはユーザ資源が入っているレジスタの内容を一
部する可能性のある命令のどちらが先に起るところに移
すことができる。
これを行なうためには、各ウェブ毎に基本ブロックの最
後の命令を上述の拡張された部分の命令として掌握しな
がら、コードを再び逆頭序で走査する。1組のフラグを
用いることによって、基本ブロックの現在の命令と最後
の命令との間で定義されているレジスタを常に掌握し続
ける。レジスタの定義が見つかると、適切なレジスタに
対応するフラグがセットされ、この定義を行なりている
命令へのポインタがウェブに付加される。この定義を行
なっている命令はそのウェブに対する新しい拡張命令に
なる。
後の命令を上述の拡張された部分の命令として掌握しな
がら、コードを再び逆頭序で走査する。1組のフラグを
用いることによって、基本ブロックの現在の命令と最後
の命令との間で定義されているレジスタを常に掌握し続
ける。レジスタの定義が見つかると、適切なレジスタに
対応するフラグがセットされ、この定義を行なりている
命令へのポインタがウェブに付加される。この定義を行
なっている命令はそのウェブに対する新しい拡張命令に
なる。
呼出しを行なう命令が見つかると、そのcoil命令は
、全てのウェブにおいて拡張命令になる。
、全てのウェブにおいて拡張命令になる。
これは、呼出しによってレジスタ中の値が一掃されるこ
とがあるからである。
とがあるからである。
ウェブを使用していることが見つかったとき、そのウェ
ブに割り付けられたレジスタが、最後の命令以前に定義
されていた場合には、その命令がそのウェブに対する拡
張命令になる。
ブに割り付けられたレジスタが、最後の命令以前に定義
されていた場合には、その命令がそのウェブに対する拡
張命令になる。
この走査が終了した時、高水位マークが拡張命令より低
位のレンジを有するウェブについては、その拡張命令が
新しい高水位マークになシ、そのレンジはこれに従って
調整される。
位のレンジを有するウェブについては、その拡張命令が
新しい高水位マークになシ、そのレンジはこれに従って
調整される。
最後に、コード・オプテイマイザ内の付加機能ユニット
がコードに対して作用し、既存のレンジとオーバーラツ
プするレンジを生成してよい。この場合、優先順位が最
下位のレンジを短縮しなければならない。例えば、第1
1図では、コード・オプテイマイザ53内のスケジュー
ラが、命令11と命令10の動作を逆にしている。これ
によって。
がコードに対して作用し、既存のレンジとオーバーラツ
プするレンジを生成してよい。この場合、優先順位が最
下位のレンジを短縮しなければならない。例えば、第1
1図では、コード・オプテイマイザ53内のスケジュー
ラが、命令11と命令10の動作を逆にしている。これ
によって。
レンジ703とオーバーラツプするスケジューラ・レン
ジ119が生成されている。先に生成されたのはレンジ
703であるので、これの優先順位が最下位になる。従
って、レンジ703は短縮された。第11A図は第10
A図に示されたレンジ表がいかに修正されてレンジ70
3の短縮を反映するようになったかを示すものである。
ジ119が生成されている。先に生成されたのはレンジ
703であるので、これの優先順位が最下位になる。従
って、レンジ703は短縮された。第11A図は第10
A図に示されたレンジ表がいかに修正されてレンジ70
3の短縮を反映するようになったかを示すものである。
以上説明したように、本発明によれば最適化を行なった
コードについてもソース・コード・レベルのシンボリッ
ク・デバッグが可能になるので、ソフトウェアの生産性
の向上に大いに有効である。
コードについてもソース・コード・レベルのシンボリッ
ク・デバッグが可能になるので、ソフトウェアの生産性
の向上に大いに有効である。
第1図は本発明の一実施例におけるレンジ表を示す図、
第2A図および第2B図は本発明を適用シ得るコンピュ
ータ・システムを説明する図、第3A図および第3B図
は夫々従来技術および本発明の一実施例において使用さ
れるデバッグ・シンボル表中の構造体を示す図、第4図
はコード・ジェネレータの出力の例を示す図、第5図は
レジスタ使用促進バス後の第4図のコードを示す図、第
5A図は資源表の構成を説明する図、第5B図はレジス
タ使用促進バス後の資源表の構成を説明する図、第6図
はウェブ間干渉を調べるためのバス後の第5図のコード
を示す図、第7図は第6図に基いて算出したレンジを示
す図、第7A図は第7図に基いて作ることのできるレン
ジ表を示す図、第8図はコピー消去後の第7図のコード
を示す図、第9図は定数散布後の第8図のコードを示す
図、第9A図は定数散布の処理にともなって修正され順
序の変更を行なった後の第10図のコードを示す図、第
11A図は命令の順序の変更の処理にともなって修正さ
れた第10A図のレンジ表を示す図である。 41:ソース・コード 42:コンパイラ 43:オブジェクト・コード 44:コンピュータ 51:コード・ジェネレータ 52:被生成コード 53:コード・オプテイマイザ 54:資源表 55:デバッグ・シンボル表 100〜104,205 :語 106:構造体 107〜112,213,214 :フィールド301
〜305:レンジ 311:ポインタ。 出願人 ヒユーレット・パラカード・カンパニー代理人
弁理士 長 谷 川 次 男r1
で1 struct DNTT−VAR(ITS ITS ITS IG publ ic 1 ;−,1Q9indir
ect: 1;(7,110type; offset; 3日 struct DNTT−VAR(ITS ITS ITS ITS ITS l1 public 1;−、:1Q9offse
t; −onge−index; 3B 1 Ioadi 300.r118 1ns
t i9 1oad x、r6 IG 4 IG 5 FIG 6 11ws = empty 11ws = webl 11ws = web2 11ws = web2.web3 11ws = web2.web4 11ws = web2.web4 11ws =、web2.web4.web511ws
= web2.web5.web611ws = w
eb2.web7 11ws = web7 11ws = web8 11ws = web8 11ws = web7 11ws = web2.web7 11ws = web2.web7 11ws = web7.web9 11ws = web7 11ws = webll 11ws = web11 1 1oadi 300.webIFIG 8 IG 9 FIG 10
第2A図および第2B図は本発明を適用シ得るコンピュ
ータ・システムを説明する図、第3A図および第3B図
は夫々従来技術および本発明の一実施例において使用さ
れるデバッグ・シンボル表中の構造体を示す図、第4図
はコード・ジェネレータの出力の例を示す図、第5図は
レジスタ使用促進バス後の第4図のコードを示す図、第
5A図は資源表の構成を説明する図、第5B図はレジス
タ使用促進バス後の資源表の構成を説明する図、第6図
はウェブ間干渉を調べるためのバス後の第5図のコード
を示す図、第7図は第6図に基いて算出したレンジを示
す図、第7A図は第7図に基いて作ることのできるレン
ジ表を示す図、第8図はコピー消去後の第7図のコード
を示す図、第9図は定数散布後の第8図のコードを示す
図、第9A図は定数散布の処理にともなって修正され順
序の変更を行なった後の第10図のコードを示す図、第
11A図は命令の順序の変更の処理にともなって修正さ
れた第10A図のレンジ表を示す図である。 41:ソース・コード 42:コンパイラ 43:オブジェクト・コード 44:コンピュータ 51:コード・ジェネレータ 52:被生成コード 53:コード・オプテイマイザ 54:資源表 55:デバッグ・シンボル表 100〜104,205 :語 106:構造体 107〜112,213,214 :フィールド301
〜305:レンジ 311:ポインタ。 出願人 ヒユーレット・パラカード・カンパニー代理人
弁理士 長 谷 川 次 男r1
で1 struct DNTT−VAR(ITS ITS ITS IG publ ic 1 ;−,1Q9indir
ect: 1;(7,110type; offset; 3日 struct DNTT−VAR(ITS ITS ITS ITS ITS l1 public 1;−、:1Q9offse
t; −onge−index; 3B 1 Ioadi 300.r118 1ns
t i9 1oad x、r6 IG 4 IG 5 FIG 6 11ws = empty 11ws = webl 11ws = web2 11ws = web2.web3 11ws = web2.web4 11ws = web2.web4 11ws =、web2.web4.web511ws
= web2.web5.web611ws = w
eb2.web7 11ws = web7 11ws = web8 11ws = web8 11ws = web7 11ws = web2.web7 11ws = web2.web7 11ws = web7.web9 11ws = web7 11ws = webll 11ws = web11 1 1oadi 300.webIFIG 8 IG 9 FIG 10
Claims (1)
- ソース・コード中で使用される資源の少なくとも一部に
ついて、コンパイルされたコードの実行中に前記資源が
実行のどの段階でどこに存在するかを示すレンジ情報を
保持するデバッグ方式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/121,311 US4953084A (en) | 1987-11-16 | 1987-11-16 | Method and apparatus using variable ranges to support symbolic debugging of optimized code |
US121,311 | 1987-11-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH01166141A true JPH01166141A (ja) | 1989-06-30 |
JP2810675B2 JP2810675B2 (ja) | 1998-10-15 |
Family
ID=22395855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP63289913A Expired - Fee Related JP2810675B2 (ja) | 1987-11-16 | 1988-11-16 | デバック方式 |
Country Status (5)
Country | Link |
---|---|
US (1) | US4953084A (ja) |
EP (1) | EP0317080B1 (ja) |
JP (1) | JP2810675B2 (ja) |
CA (1) | CA1293810C (ja) |
DE (1) | DE3853981T2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06242943A (ja) * | 1993-02-15 | 1994-09-02 | Nec Corp | ソースコードレベルデバッグ装置 |
Families Citing this family (68)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5193190A (en) * | 1989-06-26 | 1993-03-09 | International Business Machines Corporation | Partitioning optimizations in an optimizing compiler |
US5048018A (en) * | 1989-06-29 | 1991-09-10 | International Business Machines Corporation | Debugging parallel programs by serialization |
FR2649507B1 (fr) * | 1989-07-07 | 1994-07-08 | Bull Sa | Procede d'observation de l'execution d'un programme charge dans un systeme informatique et dispositif pour la mise en oeuvre dudit procede |
US5394544A (en) * | 1989-08-07 | 1995-02-28 | Ricoh Co., Ltd. | Software system debugger with distinct interrupt vector maps for debugging and application programs |
US5274820A (en) * | 1989-08-14 | 1993-12-28 | International Business Machines Corporation | Method and system for eliminating operation codes from intermediate prolog instructions |
JPH03150636A (ja) * | 1989-11-08 | 1991-06-27 | Matsushita Electric Ind Co Ltd | コンパイル方法 |
US5428793A (en) * | 1989-11-13 | 1995-06-27 | Hewlett-Packard Company | Method and apparatus for compiling computer programs with interproceduural register allocation |
JP2978189B2 (ja) * | 1989-11-16 | 1999-11-15 | シャープ株式会社 | 自動フローチャート作成装置 |
US5029170A (en) * | 1989-11-30 | 1991-07-02 | Hansen Robert G | Assembly language programming potential error detection scheme which recognizes incorrect symbolic or literal address constructs |
US5560009A (en) * | 1990-09-21 | 1996-09-24 | Hewlett-Packard Company | Generating symbolic debug information by merging translation and compiler debug information |
JPH0816871B2 (ja) * | 1990-12-07 | 1996-02-21 | 富士ゼロックス株式会社 | プログラム翻訳装置およびプログラム翻訳方法 |
US5511218A (en) * | 1991-02-13 | 1996-04-23 | Hughes Aircraft Company | Connectionist architecture for weapons assignment |
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 |
US5339428A (en) * | 1991-09-04 | 1994-08-16 | Digital Equipment Corporation | Compiler allocating a register to a data item used between a use and store of another data item previously allocated to the register |
US5488727A (en) * | 1991-09-30 | 1996-01-30 | International Business Machines Corporation | Methods to support multimethod function overloading with compile-time type checking |
US5535318A (en) * | 1992-04-30 | 1996-07-09 | Ricoh Company, Ltd. | Debugging system for a hierarchically structured page description language |
AU4598593A (en) * | 1992-06-05 | 1994-01-04 | Convex Computer Corporation | Computer program debugging in the presence of compiler synthesized variables |
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 |
JP3205406B2 (ja) * | 1992-11-10 | 2001-09-04 | 富士通株式会社 | 参照対象変数決定処理方法および翻訳処理システム |
US5555419A (en) * | 1993-01-06 | 1996-09-10 | Digital Equipment Corporation | Correlation system |
JP2856663B2 (ja) * | 1993-01-15 | 1999-02-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンパイル・コードに可視境界を定義する最適化方法および装置 |
US5548761A (en) * | 1993-03-09 | 1996-08-20 | International Business Machines Corporation | Compiler for target machine independent optimization of data movement, ownership transfer and device control |
US6178547B1 (en) | 1993-06-17 | 2001-01-23 | Metaware Incorporated | Method and apparatus for generating non-redundant symbolic debug information in computer programs |
US5495561A (en) * | 1993-06-21 | 1996-02-27 | Taligent, Inc. | Operating system with object-oriented printing interface |
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 |
US5325533A (en) * | 1993-06-28 | 1994-06-28 | Taligent, Inc. | Engineering system for modeling computer programs |
US5519866A (en) * | 1993-06-28 | 1996-05-21 | Taligent, Inc. | Method and apparatus of incrementally linking components of a modeled computer program |
US5613063A (en) * | 1994-07-01 | 1997-03-18 | Digital Equipment Corporation | Method and apparatus for checking validity of memory operations |
US5694539A (en) * | 1994-08-10 | 1997-12-02 | Intrinsa Corporation | Computer process resource modelling method and apparatus |
US5537620A (en) * | 1994-09-16 | 1996-07-16 | International Business Machines Corporation | Redundant load elimination on optimizing compilers |
CA2153032A1 (en) * | 1994-09-16 | 1996-03-17 | William Martin Schell | Method of and apparatus for efficiently debugging programs given limited system resources |
US5696973A (en) * | 1995-02-17 | 1997-12-09 | International Business Machines Corporation | Index-based method for supporting multimethod function overloading with compile-time type checking and run-time dispatch |
JPH1021086A (ja) * | 1996-06-28 | 1998-01-23 | Matsushita Electric Ind Co Ltd | プログラム変換装置とデバッグ装置 |
US5758061A (en) * | 1995-12-15 | 1998-05-26 | Plum; Thomas S. | Computer software testing method and apparatus |
US6091896A (en) * | 1995-12-22 | 2000-07-18 | Hewlett-Packard Company | Debugging optimized code using data change points |
US5860008A (en) * | 1996-02-02 | 1999-01-12 | Apple Computer, Inc. | Method and apparatus for decompiling a compiled interpretive code |
US5764989A (en) * | 1996-02-29 | 1998-06-09 | Supercede, Inc. | Interactive software development system |
US5848274A (en) * | 1996-02-29 | 1998-12-08 | Supercede, Inc. | Incremental byte code compilation system |
US6067413A (en) * | 1996-06-13 | 2000-05-23 | Instantations, Inc. | Data representation for mixed-language program development |
US6249881B1 (en) * | 1997-07-01 | 2001-06-19 | National Semiconductor Corporation | Method for enabling and servicing critical interrupts while running an interrupt based debug monitor |
US6016556A (en) * | 1997-07-17 | 2000-01-18 | Tektronix, Inc. | System for identifying an acquisition sample corresponding to a source code statement |
US6016557A (en) * | 1997-09-25 | 2000-01-18 | Lucent Technologies, Inc. | Method and apparatus for nonintrusive passive processor monitor |
US6263489B1 (en) * | 1998-04-30 | 2001-07-17 | Hewlett-Packard Company | Method and apparatus for debugging of optimized code |
US6434741B1 (en) | 1998-04-30 | 2002-08-13 | Hewlett-Packard Company | Method and apparatus for debugging of optimized code using emulation |
US6202175B1 (en) * | 1998-08-05 | 2001-03-13 | International Business Machines Corporation | Debuggin client server programs from third party workstations |
US6223307B1 (en) * | 1998-08-05 | 2001-04-24 | International Business Machines Corporation | Debugging client server programs from third party workstations |
US6256777B1 (en) * | 1998-10-09 | 2001-07-03 | Hewlett-Packard Company | Method and apparatus for debugging of optimized machine code, using hidden breakpoints |
US6108659A (en) * | 1998-12-22 | 2000-08-22 | Computer Associates Think, Inc. | Method and apparatus for executing stored code objects in a database |
CA2368472A1 (en) * | 1999-06-03 | 2000-12-14 | Algorithmics International Corp. | Risk management system and method providing rule-based evolution of a portfolio of instruments |
US20020100031A1 (en) * | 2000-01-14 | 2002-07-25 | Miguel Miranda | System and method for optimizing source code |
US6968543B2 (en) * | 2000-03-10 | 2005-11-22 | Fujitsu Limited | Information processing apparatus |
JP2002108756A (ja) * | 2000-09-28 | 2002-04-12 | Hitachi Ltd | ユーザインタフェース統合方法 |
US7293264B2 (en) * | 2003-09-17 | 2007-11-06 | Nokia Corporation | Method and a device for abstracting instruction sequences with tail merging |
US9111033B2 (en) | 2012-04-17 | 2015-08-18 | International Business Machines Corporation | Compiling source code for debugging with user preferred snapshot locations |
US8910126B2 (en) | 2012-04-18 | 2014-12-09 | International Business Machines Corporation | Compiling source code for debugging with variable value restoration based on debugging user activity |
US8826240B1 (en) | 2012-09-29 | 2014-09-02 | Appurify, Inc. | Application validation through object level hierarchy analysis |
US9015832B1 (en) | 2012-10-19 | 2015-04-21 | Google Inc. | Application auditing through object level code inspection |
US9113358B1 (en) | 2012-11-19 | 2015-08-18 | Google Inc. | Configurable network virtualization |
US9268668B1 (en) | 2012-12-20 | 2016-02-23 | Google Inc. | System for testing markup language applications |
US9274935B1 (en) | 2013-01-15 | 2016-03-01 | Google Inc. | Application testing system with application programming interface |
US9122791B2 (en) * | 2013-03-05 | 2015-09-01 | International Business Machines Corporation | Identifying a storage location for a storage address requested during debugging |
US9021443B1 (en) | 2013-04-12 | 2015-04-28 | Google Inc. | Test automation API for host devices |
US9268670B1 (en) | 2013-08-08 | 2016-02-23 | Google Inc. | System for module selection in software application testing including generating a test executable based on an availability of root access |
US9367415B1 (en) | 2014-01-20 | 2016-06-14 | Google Inc. | System for testing markup language applications on a device |
US9491229B1 (en) | 2014-01-24 | 2016-11-08 | Google Inc. | Application experience sharing system |
US9170922B1 (en) | 2014-01-27 | 2015-10-27 | Google Inc. | Remote application debugging |
US9864655B2 (en) | 2015-10-30 | 2018-01-09 | Google Llc | Methods and apparatus for mobile computing device security in testing facilities |
US10929216B2 (en) * | 2019-01-29 | 2021-02-23 | EMC IP Holding Company LLC | Application crash analysis techniques when memory dump and debug symbols are not co-located |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4462077A (en) * | 1982-06-24 | 1984-07-24 | Bell Telephone Laboratories, Incorporated | Trace facility for use in multiprocessing environment |
US4567574A (en) * | 1983-03-14 | 1986-01-28 | International Business Machines Corporation | Optimizing cobol object code instruction path length with respect to perform statements |
US4589068A (en) * | 1983-10-03 | 1986-05-13 | Digital Equipment Corporation | Segmented debugger |
US4667290A (en) * | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
DE3678893D1 (de) * | 1985-10-03 | 1991-05-29 | Mitsubishi Electric Corp | Rechnerprogrammdebugsystem. |
US4782444A (en) * | 1985-12-17 | 1988-11-01 | International Business Machine Corporation | Compilation using two-colored pebbling register allocation method such that spill code amount is invariant with basic block's textual ordering |
US4819234A (en) * | 1987-05-01 | 1989-04-04 | Prime Computer, Inc. | Operating system debugger |
-
1987
- 1987-11-16 US US07/121,311 patent/US4953084A/en not_active Expired - Lifetime
-
1988
- 1988-09-08 CA CA000576769A patent/CA1293810C/en not_active Expired - Lifetime
- 1988-10-19 DE DE3853981T patent/DE3853981T2/de not_active Expired - Fee Related
- 1988-10-19 EP EP88309777A patent/EP0317080B1/en not_active Expired - Lifetime
- 1988-11-16 JP JP63289913A patent/JP2810675B2/ja not_active Expired - Fee Related
Non-Patent Citations (1)
Title |
---|
COMPILERS PRICIPLES TECHNIQUES AND TOOLS=1986 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06242943A (ja) * | 1993-02-15 | 1994-09-02 | Nec Corp | ソースコードレベルデバッグ装置 |
Also Published As
Publication number | Publication date |
---|---|
DE3853981D1 (de) | 1995-07-20 |
US4953084A (en) | 1990-08-28 |
EP0317080B1 (en) | 1995-06-14 |
DE3853981T2 (de) | 1995-10-12 |
EP0317080A2 (en) | 1989-05-24 |
JP2810675B2 (ja) | 1998-10-15 |
CA1293810C (en) | 1991-12-31 |
EP0317080A3 (en) | 1991-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH01166141A (ja) | デバッグ情報提供方法 | |
US8832672B2 (en) | Ensuring register availability for dynamic binary optimization | |
US5325531A (en) | Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines | |
US5313387A (en) | Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers | |
US5201050A (en) | Line-skip compiler for source-code development system | |
US5193191A (en) | Incremental linking in source-code development system | |
US5182806A (en) | Incremental compiler for source-code development system | |
US5170465A (en) | Incremental-scanning compiler for source-code development system | |
KR100518584B1 (ko) | 공유 라이브러리 시스템 및 상기 시스템 구축 방법 | |
JP3553834B2 (ja) | コンピュータアーキテクチャエミュレーションシステム | |
US9495136B2 (en) | Using aliasing information for dynamic binary optimization | |
US5850554A (en) | Compiler tool set for efficiently generating and easily managing multiple program versions of different types | |
US5764989A (en) | Interactive software development system | |
JP5851396B2 (ja) | 処理方法 | |
WO1999066396A1 (en) | A method of implementing parameterized types to be compatible with existing unparameterized libraries | |
JPH03500463A (ja) | デジタルデータ処理システム用総称コード共用化装置及び方法 | |
US7480902B2 (en) | Unwind information for optimized programs | |
US5301327A (en) | Virtual memory management for source-code development system | |
Felgentreff et al. | How to build a high-performance vm for squeak/smalltalk in your spare time: An experience report of using the rpython toolchain | |
US10459702B2 (en) | Flow control for language-embedded programming in general purpose computing on graphics processing units | |
US10496433B2 (en) | Modification of context saving functions | |
AU638999B2 (en) | Incremental compiler for source-code development system | |
US6944637B2 (en) | Reduced size objects headers | |
US6275985B1 (en) | Method and apparatus for developing an application that implements garbage collection efficiently by combining proxy objects with compiler support | |
JP2012103923A (ja) | コンパイラ装置、コンパイル方法及びコンパイラプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080731 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |