JPH0126091B2 - - Google Patents
Info
- Publication number
- JPH0126091B2 JPH0126091B2 JP4207481A JP4207481A JPH0126091B2 JP H0126091 B2 JPH0126091 B2 JP H0126091B2 JP 4207481 A JP4207481 A JP 4207481A JP 4207481 A JP4207481 A JP 4207481A JP H0126091 B2 JPH0126091 B2 JP H0126091B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- object program
- contents
- registers
- register
- 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.)
- Expired
Links
- 238000004458 analytical method Methods 0.000 claims description 4
- 238000003672 processing method Methods 0.000 claims description 4
- 238000000034 method Methods 0.000 description 2
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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】
本発明は、コンパイル処理方法、特にソース・
プログラムをオブジエクト・プログラムにコンパ
イルするに当つて、生成された当該オブジエク
ト・プログラムが内容変更を行なうレジスタのみ
を退避するプロローグを附加するようにしたコン
パイル処理システムにおいて、上記ソース・プロ
グラムがマシン独立なシステム記述言語で記述さ
れていても、上記生成されるオブジエクト・プロ
グラムが内容変更するレジスタをコンパイル処理
の間にビツトマツプ・テーブルの形で把握してお
いて、上記プロローグと必要に応じてエピローグ
とを附加できるようにしたコンパイル処理方法に
関するものである。
プログラムをオブジエクト・プログラムにコンパ
イルするに当つて、生成された当該オブジエク
ト・プログラムが内容変更を行なうレジスタのみ
を退避するプロローグを附加するようにしたコン
パイル処理システムにおいて、上記ソース・プロ
グラムがマシン独立なシステム記述言語で記述さ
れていても、上記生成されるオブジエクト・プロ
グラムが内容変更するレジスタをコンパイル処理
の間にビツトマツプ・テーブルの形で把握してお
いて、上記プロローグと必要に応じてエピローグ
とを附加できるようにしたコンパイル処理方法に
関するものである。
一般にソース・プログラムをオブジエクト・プ
ログラムに変換するコンパイル処理においては、
1つのソース・プログラムに対応したオブジエク
ト・プログラムAと次のソース・プログラムに対
応したオブジエクト・プログラムBとのリンケー
ジ部分において、レジスタの内容を退避するプロ
ローグを与えるようにされる。即ち1つのオブジ
エクト・プログラムについて考えると、当該オブ
ジエクト・プログラムの実行においてデータ処理
装置上のレジスタの内容が書替えられることがあ
るために、上記レジスタの内容を一旦退避するプ
ロローグを附加し、上記オブジエクト・プログラ
ムの末尾に必要に応じて上記退避したレジスタの
内容を復元させるエピローグを附加するようにさ
れる。
ログラムに変換するコンパイル処理においては、
1つのソース・プログラムに対応したオブジエク
ト・プログラムAと次のソース・プログラムに対
応したオブジエクト・プログラムBとのリンケー
ジ部分において、レジスタの内容を退避するプロ
ローグを与えるようにされる。即ち1つのオブジ
エクト・プログラムについて考えると、当該オブ
ジエクト・プログラムの実行においてデータ処理
装置上のレジスタの内容が書替えられることがあ
るために、上記レジスタの内容を一旦退避するプ
ロローグを附加し、上記オブジエクト・プログラ
ムの末尾に必要に応じて上記退避したレジスタの
内容を復元させるエピローグを附加するようにさ
れる。
しかし、上記プロローグにおいてデータ処理装
置上のいわば全レジスタの内容を退避するように
し、またエピローグにおいて当該全レジスタの内
容を復元するようにすると、一連のオブジエク
ト・プログラムを順次実行する場合には、全レジ
スタの内容の退避と復元とが繰返されることとな
り、処理効率上必らずしも好ましくない。このた
めに、1つのオブジエクト・プログラム例えばA
が処理を実行する間に内容が書替えられるレジス
タについてのみ上記退避と復元とを行なうように
して処理効率を向上することが行なわれている。
置上のいわば全レジスタの内容を退避するように
し、またエピローグにおいて当該全レジスタの内
容を復元するようにすると、一連のオブジエク
ト・プログラムを順次実行する場合には、全レジ
スタの内容の退避と復元とが繰返されることとな
り、処理効率上必らずしも好ましくない。このた
めに、1つのオブジエクト・プログラム例えばA
が処理を実行する間に内容が書替えられるレジス
タについてのみ上記退避と復元とを行なうように
して処理効率を向上することが行なわれている。
該後者の場合には、使用されるマシンに応じて
どのレジスタの内容が変更されるかが定まつてく
るために、ソース・プログラムとして、マシン独
立なシステム記述言語の形をとることが困難とな
る。しかし一方では、マシン独立なシステム記述
言語をもつてソース・プログラムを記述すること
が好ましいものであり、その必要性がせまられて
いる。
どのレジスタの内容が変更されるかが定まつてく
るために、ソース・プログラムとして、マシン独
立なシステム記述言語の形をとることが困難とな
る。しかし一方では、マシン独立なシステム記述
言語をもつてソース・プログラムを記述すること
が好ましいものであり、その必要性がせまられて
いる。
本発明は、上記の問題をコンパイラの機能を向
上することによつて解決をはかることを目的とし
ており、既存のマシン独立でないソース・プログ
ラムをコンパイルするコンパイラにおいても、現
実にどのレジスタを使用するかについてはコンパ
イラ内のレジスタ割付けモジユールが最適な形で
レジスタの割付けを行なつている点に注目し、い
わばコンパイラ内にビツトマツプ作成モジユール
を附加するだけで、マシン独立なシステム記述言
語をもつて記述されたソース・プログラムをコン
パイルし、かつ上記レジスタ退避などを最小限度
に抑えてオブジエクト・プログラム実行時の処理
効率を向上できるようにすることを目的としてい
る。そしてそのため、本発明のコンパイル処理方
法は、構文解析部とオブジエクト・プログラムに
対応したコードを生成するコード生成モジユール
と生成されたオブジエクト・プログラムが使用す
るレジスタを割付けるレジスタ割付けモジユール
とをそなえたコンパイラが用いられ、 与えられたソース・プログラムをオブジエク
ト・プログラムに変換し、 かつ、上記ソース・プログラム相互間のリンケ
ージ部分に対応して、前ソース・プログラムに対
応したオブジエクト・プログラムが内容変更を行
なうレジスタについてのみ内容退避を行なう所の
プログラム・コードであるプロローグと 当該オブジエクト・プログラムの末尾に上記退
避したレジスタの内容を復元する所のプログラ
ム・コードであるエピローグと を与えるようにしたコンパイル処理システムにお
いて、 上記コンパイラにビツトマツプ作成モジユール
をもうけると共に該ビツトマツプ作成モジユール
が上記使用されるレジスタに対応づけられたビツ
トマツプ・テーブルを作成するよう構成され、 上記レジスタ割付けモジユールにおいて上記生
成されるオブジエクト・プログラムが処理実行中
に内容変更を与えるレジスタが決定されたことに
もとづいて、上記レジスタ割付けモジユールが上
記ビツトマツプ作成モジユールに対して当該レジ
スタを通知し、 少なくとも1つのソース・プログラムに対応す
るオブジエクト・プログラムが生成されたとき、 上記コード生成モジユールが上記ビツトマツプ
作成モジユールにおいて生成されたビツトマツ
プ・テーブルの内容にもとづいて、上記プロロー
グと上記エピローグとを当該オブジエクト・プロ
グラムに附加する ことを特徴としている。以下図面を参照しつつ説
明する。
上することによつて解決をはかることを目的とし
ており、既存のマシン独立でないソース・プログ
ラムをコンパイルするコンパイラにおいても、現
実にどのレジスタを使用するかについてはコンパ
イラ内のレジスタ割付けモジユールが最適な形で
レジスタの割付けを行なつている点に注目し、い
わばコンパイラ内にビツトマツプ作成モジユール
を附加するだけで、マシン独立なシステム記述言
語をもつて記述されたソース・プログラムをコン
パイルし、かつ上記レジスタ退避などを最小限度
に抑えてオブジエクト・プログラム実行時の処理
効率を向上できるようにすることを目的としてい
る。そしてそのため、本発明のコンパイル処理方
法は、構文解析部とオブジエクト・プログラムに
対応したコードを生成するコード生成モジユール
と生成されたオブジエクト・プログラムが使用す
るレジスタを割付けるレジスタ割付けモジユール
とをそなえたコンパイラが用いられ、 与えられたソース・プログラムをオブジエク
ト・プログラムに変換し、 かつ、上記ソース・プログラム相互間のリンケ
ージ部分に対応して、前ソース・プログラムに対
応したオブジエクト・プログラムが内容変更を行
なうレジスタについてのみ内容退避を行なう所の
プログラム・コードであるプロローグと 当該オブジエクト・プログラムの末尾に上記退
避したレジスタの内容を復元する所のプログラ
ム・コードであるエピローグと を与えるようにしたコンパイル処理システムにお
いて、 上記コンパイラにビツトマツプ作成モジユール
をもうけると共に該ビツトマツプ作成モジユール
が上記使用されるレジスタに対応づけられたビツ
トマツプ・テーブルを作成するよう構成され、 上記レジスタ割付けモジユールにおいて上記生
成されるオブジエクト・プログラムが処理実行中
に内容変更を与えるレジスタが決定されたことに
もとづいて、上記レジスタ割付けモジユールが上
記ビツトマツプ作成モジユールに対して当該レジ
スタを通知し、 少なくとも1つのソース・プログラムに対応す
るオブジエクト・プログラムが生成されたとき、 上記コード生成モジユールが上記ビツトマツプ
作成モジユールにおいて生成されたビツトマツ
プ・テーブルの内容にもとづいて、上記プロロー
グと上記エピローグとを当該オブジエクト・プロ
グラムに附加する ことを特徴としている。以下図面を参照しつつ説
明する。
図は本発明の一実施例構成を示す。図中1はマ
シン独立なシステム記述言語にて記述されたソー
ス・プログラム、2はコンパイラ、3は変換され
たオブジエクト・プログラム、3−1は当該オブ
ジエクト・プログラムに附加されたプロローグ、
3−2は当該オブジエクト・プログラムに附加さ
れたエピローグ、4は構文解析部、5はコード生
成モジユールであつてオブジエクト・プログラム
のコードを生成するもの、5−1はプロローグ・
エピローグ作成部であつて上述のプロローグとエ
ピローグとに対応するコードを作成してオブジエ
クト・プログラム3全体を完成するもの、6はレ
ジスタ割付けモジユールであつて上記コード生成
モジユールによつてコードを生成してゆく間に上
記生成されるオブジエクト・プログラムが使用す
ることになるレジスタの使用状況を管理し最適な
使用状態となるようレジスタ使用状態の割付けを
行なうもの、7はビツトマツプ作成モジユールで
あつて本発明において用意され上記レジスタ割付
けモジユールからの指示に応じてビツトマツプ・
テーブル(後述)を作成するもの、8ビツトマツ
プ・テーブルであつて使用される可能性のあるデ
ータ処理装置中に含まれるレジスタに対応して1
ビツトを用意されるものを表わしている。
シン独立なシステム記述言語にて記述されたソー
ス・プログラム、2はコンパイラ、3は変換され
たオブジエクト・プログラム、3−1は当該オブ
ジエクト・プログラムに附加されたプロローグ、
3−2は当該オブジエクト・プログラムに附加さ
れたエピローグ、4は構文解析部、5はコード生
成モジユールであつてオブジエクト・プログラム
のコードを生成するもの、5−1はプロローグ・
エピローグ作成部であつて上述のプロローグとエ
ピローグとに対応するコードを作成してオブジエ
クト・プログラム3全体を完成するもの、6はレ
ジスタ割付けモジユールであつて上記コード生成
モジユールによつてコードを生成してゆく間に上
記生成されるオブジエクト・プログラムが使用す
ることになるレジスタの使用状況を管理し最適な
使用状態となるようレジスタ使用状態の割付けを
行なうもの、7はビツトマツプ作成モジユールで
あつて本発明において用意され上記レジスタ割付
けモジユールからの指示に応じてビツトマツプ・
テーブル(後述)を作成するもの、8ビツトマツ
プ・テーブルであつて使用される可能性のあるデ
ータ処理装置中に含まれるレジスタに対応して1
ビツトを用意されるものを表わしている。
ソース・プログラム1の内容は、コンパイラ2
内に読込まれて、オブジエクト・プログラム3に
変換される。即ち、読込まれたソース・プログラ
ム1は、構文解析部4によつて構文解析が行なわ
れ、コード生成モジユール5によつてオブジエク
ト・プログラムのコードが順次生成されてゆく。
この間に、レジスタ割付けモジユール6は、生成
されたオブジエクト・プログラムが或るデータ処
理装置によつて実行される段階に入つたときにど
のレジスタが使用されることになるかを管理し、
また或るレジスタを使用することになる際にどの
レジスタを使用させれば全体として効率がよいか
を判定して最適なレジスタを決定してコード生成
モジユール5に通知する。
内に読込まれて、オブジエクト・プログラム3に
変換される。即ち、読込まれたソース・プログラ
ム1は、構文解析部4によつて構文解析が行なわ
れ、コード生成モジユール5によつてオブジエク
ト・プログラムのコードが順次生成されてゆく。
この間に、レジスタ割付けモジユール6は、生成
されたオブジエクト・プログラムが或るデータ処
理装置によつて実行される段階に入つたときにど
のレジスタが使用されることになるかを管理し、
また或るレジスタを使用することになる際にどの
レジスタを使用させれば全体として効率がよいか
を判定して最適なレジスタを決定してコード生成
モジユール5に通知する。
本発明の場合、上記最適レジスタを判定したと
きに、当該レジスタの内容が変更されることとな
る場合に、この旨を当該レジスタを指定してビツ
トマツプ作成モジユール7に通知するようにされ
る。ビツトマツプ作成モジユール7においては、
上記通知を受けて、上述のビツトマツプ・テーブ
ル8上の位置即ち上記通知されたレジスタに対応
したビツト位置に例えば論理「1」を立てるよう
にされる。
きに、当該レジスタの内容が変更されることとな
る場合に、この旨を当該レジスタを指定してビツ
トマツプ作成モジユール7に通知するようにされ
る。ビツトマツプ作成モジユール7においては、
上記通知を受けて、上述のビツトマツプ・テーブ
ル8上の位置即ち上記通知されたレジスタに対応
したビツト位置に例えば論理「1」を立てるよう
にされる。
上述の如き処理を行ないつつ、コンパイラ2が
1つのソース・プログラム1に対応するオブジエ
クト・プログラムのコードを例えば生成し終つた
際に、コード生成モジユール5は上記ビツトマツ
プ・テーブル8の内容を参照する。そして、当該
テーブル8上において、論理「1」が立てられて
いるレジスタについては、上記当該オブジエク
ト・プログラムが実行される際に、その内容が書
替えられるものであることを知り、プロローグ・
エピローグ作成部5−1において、上記レジスタ
の内容を退避するプロローグと当該レジスタの内
容を復元するエピローグとを生成する。即ち、プ
ロローグ3−1とエピローグ3−2とを附加した
オブジエクト・プログラム3を出力するようにす
る。
1つのソース・プログラム1に対応するオブジエ
クト・プログラムのコードを例えば生成し終つた
際に、コード生成モジユール5は上記ビツトマツ
プ・テーブル8の内容を参照する。そして、当該
テーブル8上において、論理「1」が立てられて
いるレジスタについては、上記当該オブジエク
ト・プログラムが実行される際に、その内容が書
替えられるものであることを知り、プロローグ・
エピローグ作成部5−1において、上記レジスタ
の内容を退避するプロローグと当該レジスタの内
容を復元するエピローグとを生成する。即ち、プ
ロローグ3−1とエピローグ3−2とを附加した
オブジエクト・プログラム3を出力するようにす
る。
以上説明した如く、本発明によれば、従来公知
のコンパイルにおいてもレジスタ割付けモジユー
ル6が現実にオブジエクト・プログラムが実行段
階に入つた際において使用することとなるレジス
タを判定している点に注目して、内容変更が生じ
ることとなるレジスタをビツトマツプ作成モジユ
ール7に通知し、ビツトマツプ作成モジユール7
において当該レジスタをビツトマツプ・テーブル
8の形で管理するようにしている。そしてプロロ
ーグやエピローグ作成段階において、上記レジス
タを判別して所望のプロローグやエピローグを記
述するようにしている。
のコンパイルにおいてもレジスタ割付けモジユー
ル6が現実にオブジエクト・プログラムが実行段
階に入つた際において使用することとなるレジス
タを判定している点に注目して、内容変更が生じ
ることとなるレジスタをビツトマツプ作成モジユ
ール7に通知し、ビツトマツプ作成モジユール7
において当該レジスタをビツトマツプ・テーブル
8の形で管理するようにしている。そしてプロロ
ーグやエピローグ作成段階において、上記レジス
タを判別して所望のプロローグやエピローグを記
述するようにしている。
このために、ソース・プログラムとしてマシン
独立なシステム記述言語をもつて記述した場合に
おいても、必要最小限度のレジスタについて内容
退避を行なわせることが可能となり、オブジエク
ト・プログラム実行段階における高い処理効率を
維持することが可能となる。
独立なシステム記述言語をもつて記述した場合に
おいても、必要最小限度のレジスタについて内容
退避を行なわせることが可能となり、オブジエク
ト・プログラム実行段階における高い処理効率を
維持することが可能となる。
図は本発明の一実施例構成を示す。
図中1はソース・プログラム、2はコンパイ
ラ、3はオブジエクト・プログラム、3−1はプ
ロローグ、3−2はエピローグ、4は構文解析
部、5はコード生成モジユール、5−1はプロロ
ーグ・エピローグ作成部、6はレジスタ割付けモ
ジユール、7はビツトマツプ作成モジユール、8
はビツトマツプ・テーブルを表わす。
ラ、3はオブジエクト・プログラム、3−1はプ
ロローグ、3−2はエピローグ、4は構文解析
部、5はコード生成モジユール、5−1はプロロ
ーグ・エピローグ作成部、6はレジスタ割付けモ
ジユール、7はビツトマツプ作成モジユール、8
はビツトマツプ・テーブルを表わす。
Claims (1)
- 【特許請求の範囲】 1 構文解析部とオブジエクト・プログラムに対
応したコードを生成するコード生成モジユールと
生成されたオブジエクト・プログラムが使用する
レジスタを割付けるレジスタ割付けモジユールと
をそなえたコンパイラが用いられ、 与えられたソース・プログラムをオブジエク
ト・プログラムに変換し、 かつ、上記ソース・プログラム相互間のリンケ
ージ部分に対応して、前ソース・プログラムに対
応したオブジエクト・プログラムが内容変更を行
なうレジスタについてのみ内容退避を行なう所の
プログラム・コードであるプロローグと 当該オブジエクト・プログラムの末尾に上記退
避したレジスタの内容を復元する所のプログラ
ム・コードであるエピローグと を与えるようにしたコンパイル処理システムにお
いて、 上記コンパイラにビツトマツプ作成モジユール
をもうけると共に該ビツトマツプ作成モジユール
が上記使用されるレジスタに対応づけられたビツ
トマツプ・テーブルを作成するよう構成され、 上記レジスタ割付けモジユールにおいて上記生
成されるオブジエクト・プログラムが処理実行中
に内容変更を与えるレジスタが決定されたことに
もとづいて、上記レジスタ割付けモジユールが上
記ビツトマツプ作成モジユールに対して当該レジ
スタを通知し、 少なくとも1つのソース・プログラムに対応す
るオブジエクト・プログラムが生成されたとき、 上記コード生成モジユールが上記ビツトマツプ
作成モジユールにおいて生成されたビツトマツ
プ・テーブルの内容にもとづいて、上記プロロー
グと上記エピローグとを当該オブジエクト・プロ
グラムに附加する ことを特徴とするコンパイル処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4207481A JPS57157357A (en) | 1981-03-23 | 1981-03-23 | Compile processing system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4207481A JPS57157357A (en) | 1981-03-23 | 1981-03-23 | Compile processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS57157357A JPS57157357A (en) | 1982-09-28 |
JPH0126091B2 true JPH0126091B2 (ja) | 1989-05-22 |
Family
ID=12625910
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4207481A Granted JPS57157357A (en) | 1981-03-23 | 1981-03-23 | Compile processing system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS57157357A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5353388A (en) * | 1991-10-17 | 1994-10-04 | Ricoh Company, Ltd. | System and method for document processing |
-
1981
- 1981-03-23 JP JP4207481A patent/JPS57157357A/ja active Granted
Also Published As
Publication number | Publication date |
---|---|
JPS57157357A (en) | 1982-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5606697A (en) | Compiler system for language processing program | |
US5586328A (en) | Module dependency based incremental compiler and method | |
EP1164478A2 (en) | Method and apparatus for resolving data references in generated code | |
US20070226720A1 (en) | System and Method for Efficiently Passing Information Between Compiler and Post-Compile-Time Software | |
US5956510A (en) | Apparatus and method for revising computer program code | |
US5812854A (en) | Mechanism for integrating user-defined instructions with compiler-generated instructions and for optimizing the integrated instruction stream | |
US6256782B1 (en) | Compile apparatus, compile method and computer-readable medium storing compiler | |
JP2008305337A (ja) | プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム | |
KR0125605B1 (ko) | 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치 | |
US6178547B1 (en) | Method and apparatus for generating non-redundant symbolic debug information in computer programs | |
JPH0126091B2 (ja) | ||
JP3327674B2 (ja) | プログラム翻訳装置及び方法 | |
US5394550A (en) | System for affecting recompilation of source code | |
JP3018783B2 (ja) | コンパイル方式 | |
US7337173B1 (en) | Compiler having global element optimization | |
Räihä | Attribute grammar design using the compiler writing system HLP | |
JP2005301415A (ja) | コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム | |
JPH0689187A (ja) | インライン展開最適化方法 | |
JPH0358232A (ja) | プリプロセッサ呼び出し方式 | |
JPH081608B2 (ja) | プログラム実行解析ツール | |
JPH04343140A (ja) | コンパイラの最適化処理方法 | |
JPH06242942A (ja) | ソースコードレベルデバッグ装置 | |
JPH03268029A (ja) | 構文チェッカ | |
JPH0535494A (ja) | 高級プログラム言語の対話型最適化コンパイル方式 | |
JPH02105224A (ja) | コンパイラにおけるデータ割付け方式 |