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
Application number
JP4207481A
Other languages
English (en)
Other versions
JPS57157357A (en
Inventor
Jiro Matsubayashi
Satoru Takeyama
Kazuyuki Yakabe
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP4207481A priority Critical patent/JPS57157357A/ja
Publication of JPS57157357A publication Critical patent/JPS57157357A/ja
Publication of JPH0126091B2 publication Critical patent/JPH0126091B2/ja
Granted legal-status Critical Current

Links

Classifications

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

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
が処理を実行する間に内容が書替えられるレジス
タについてのみ上記退避と復元とを行なうように
して処理効率を向上することが行なわれている。
該後者の場合には、使用されるマシンに応じて
どのレジスタの内容が変更されるかが定まつてく
るために、ソース・プログラムとして、マシン独
立なシステム記述言語の形をとることが困難とな
る。しかし一方では、マシン独立なシステム記述
言語をもつてソース・プログラムを記述すること
が好ましいものであり、その必要性がせまられて
いる。
本発明は、上記の問題をコンパイラの機能を向
上することによつて解決をはかることを目的とし
ており、既存のマシン独立でないソース・プログ
ラムをコンパイルするコンパイラにおいても、現
実にどのレジスタを使用するかについてはコンパ
イラ内のレジスタ割付けモジユールが最適な形で
レジスタの割付けを行なつている点に注目し、い
わばコンパイラ内にビツトマツプ作成モジユール
を附加するだけで、マシン独立なシステム記述言
語をもつて記述されたソース・プログラムをコン
パイルし、かつ上記レジスタ退避などを最小限度
に抑えてオブジエクト・プログラム実行時の処理
効率を向上できるようにすることを目的としてい
る。そしてそのため、本発明のコンパイル処理方
法は、構文解析部とオブジエクト・プログラムに
対応したコードを生成するコード生成モジユール
と生成されたオブジエクト・プログラムが使用す
るレジスタを割付けるレジスタ割付けモジユール
とをそなえたコンパイラが用いられ、 与えられたソース・プログラムをオブジエク
ト・プログラムに変換し、 かつ、上記ソース・プログラム相互間のリンケ
ージ部分に対応して、前ソース・プログラムに対
応したオブジエクト・プログラムが内容変更を行
なうレジスタについてのみ内容退避を行なう所の
プログラム・コードであるプロローグと 当該オブジエクト・プログラムの末尾に上記退
避したレジスタの内容を復元する所のプログラ
ム・コードであるエピローグと を与えるようにしたコンパイル処理システムにお
いて、 上記コンパイラにビツトマツプ作成モジユール
をもうけると共に該ビツトマツプ作成モジユール
が上記使用されるレジスタに対応づけられたビツ
トマツプ・テーブルを作成するよう構成され、 上記レジスタ割付けモジユールにおいて上記生
成されるオブジエクト・プログラムが処理実行中
に内容変更を与えるレジスタが決定されたことに
もとづいて、上記レジスタ割付けモジユールが上
記ビツトマツプ作成モジユールに対して当該レジ
スタを通知し、 少なくとも1つのソース・プログラムに対応す
るオブジエクト・プログラムが生成されたとき、 上記コード生成モジユールが上記ビツトマツプ
作成モジユールにおいて生成されたビツトマツ
プ・テーブルの内容にもとづいて、上記プロロー
グと上記エピローグとを当該オブジエクト・プロ
グラムに附加する ことを特徴としている。以下図面を参照しつつ説
明する。
図は本発明の一実施例構成を示す。図中1はマ
シン独立なシステム記述言語にて記述されたソー
ス・プログラム、2はコンパイラ、3は変換され
たオブジエクト・プログラム、3−1は当該オブ
ジエクト・プログラムに附加されたプロローグ、
3−2は当該オブジエクト・プログラムに附加さ
れたエピローグ、4は構文解析部、5はコード生
成モジユールであつてオブジエクト・プログラム
のコードを生成するもの、5−1はプロローグ・
エピローグ作成部であつて上述のプロローグとエ
ピローグとに対応するコードを作成してオブジエ
クト・プログラム3全体を完成するもの、6はレ
ジスタ割付けモジユールであつて上記コード生成
モジユールによつてコードを生成してゆく間に上
記生成されるオブジエクト・プログラムが使用す
ることになるレジスタの使用状況を管理し最適な
使用状態となるようレジスタ使用状態の割付けを
行なうもの、7はビツトマツプ作成モジユールで
あつて本発明において用意され上記レジスタ割付
けモジユールからの指示に応じてビツトマツプ・
テーブル(後述)を作成するもの、8ビツトマツ
プ・テーブルであつて使用される可能性のあるデ
ータ処理装置中に含まれるレジスタに対応して1
ビツトを用意されるものを表わしている。
ソース・プログラム1の内容は、コンパイラ2
内に読込まれて、オブジエクト・プログラム3に
変換される。即ち、読込まれたソース・プログラ
ム1は、構文解析部4によつて構文解析が行なわ
れ、コード生成モジユール5によつてオブジエク
ト・プログラムのコードが順次生成されてゆく。
この間に、レジスタ割付けモジユール6は、生成
されたオブジエクト・プログラムが或るデータ処
理装置によつて実行される段階に入つたときにど
のレジスタが使用されることになるかを管理し、
また或るレジスタを使用することになる際にどの
レジスタを使用させれば全体として効率がよいか
を判定して最適なレジスタを決定してコード生成
モジユール5に通知する。
本発明の場合、上記最適レジスタを判定したと
きに、当該レジスタの内容が変更されることとな
る場合に、この旨を当該レジスタを指定してビツ
トマツプ作成モジユール7に通知するようにされ
る。ビツトマツプ作成モジユール7においては、
上記通知を受けて、上述のビツトマツプ・テーブ
ル8上の位置即ち上記通知されたレジスタに対応
したビツト位置に例えば論理「1」を立てるよう
にされる。
上述の如き処理を行ないつつ、コンパイラ2が
1つのソース・プログラム1に対応するオブジエ
クト・プログラムのコードを例えば生成し終つた
際に、コード生成モジユール5は上記ビツトマツ
プ・テーブル8の内容を参照する。そして、当該
テーブル8上において、論理「1」が立てられて
いるレジスタについては、上記当該オブジエク
ト・プログラムが実行される際に、その内容が書
替えられるものであることを知り、プロローグ・
エピローグ作成部5−1において、上記レジスタ
の内容を退避するプロローグと当該レジスタの内
容を復元するエピローグとを生成する。即ち、プ
ロローグ3−1とエピローグ3−2とを附加した
オブジエクト・プログラム3を出力するようにす
る。
以上説明した如く、本発明によれば、従来公知
のコンパイルにおいてもレジスタ割付けモジユー
ル6が現実にオブジエクト・プログラムが実行段
階に入つた際において使用することとなるレジス
タを判定している点に注目して、内容変更が生じ
ることとなるレジスタをビツトマツプ作成モジユ
ール7に通知し、ビツトマツプ作成モジユール7
において当該レジスタをビツトマツプ・テーブル
8の形で管理するようにしている。そしてプロロ
ーグやエピローグ作成段階において、上記レジス
タを判別して所望のプロローグやエピローグを記
述するようにしている。
このために、ソース・プログラムとしてマシン
独立なシステム記述言語をもつて記述した場合に
おいても、必要最小限度のレジスタについて内容
退避を行なわせることが可能となり、オブジエク
ト・プログラム実行段階における高い処理効率を
維持することが可能となる。
【図面の簡単な説明】
図は本発明の一実施例構成を示す。 図中1はソース・プログラム、2はコンパイ
ラ、3はオブジエクト・プログラム、3−1はプ
ロローグ、3−2はエピローグ、4は構文解析
部、5はコード生成モジユール、5−1はプロロ
ーグ・エピローグ作成部、6はレジスタ割付けモ
ジユール、7はビツトマツプ作成モジユール、8
はビツトマツプ・テーブルを表わす。

Claims (1)

  1. 【特許請求の範囲】 1 構文解析部とオブジエクト・プログラムに対
    応したコードを生成するコード生成モジユールと
    生成されたオブジエクト・プログラムが使用する
    レジスタを割付けるレジスタ割付けモジユールと
    をそなえたコンパイラが用いられ、 与えられたソース・プログラムをオブジエク
    ト・プログラムに変換し、 かつ、上記ソース・プログラム相互間のリンケ
    ージ部分に対応して、前ソース・プログラムに対
    応したオブジエクト・プログラムが内容変更を行
    なうレジスタについてのみ内容退避を行なう所の
    プログラム・コードであるプロローグと 当該オブジエクト・プログラムの末尾に上記退
    避したレジスタの内容を復元する所のプログラ
    ム・コードであるエピローグと を与えるようにしたコンパイル処理システムにお
    いて、 上記コンパイラにビツトマツプ作成モジユール
    をもうけると共に該ビツトマツプ作成モジユール
    が上記使用されるレジスタに対応づけられたビツ
    トマツプ・テーブルを作成するよう構成され、 上記レジスタ割付けモジユールにおいて上記生
    成されるオブジエクト・プログラムが処理実行中
    に内容変更を与えるレジスタが決定されたことに
    もとづいて、上記レジスタ割付けモジユールが上
    記ビツトマツプ作成モジユールに対して当該レジ
    スタを通知し、 少なくとも1つのソース・プログラムに対応す
    るオブジエクト・プログラムが生成されたとき、 上記コード生成モジユールが上記ビツトマツプ
    作成モジユールにおいて生成されたビツトマツ
    プ・テーブルの内容にもとづいて、上記プロロー
    グと上記エピローグとを当該オブジエクト・プロ
    グラムに附加する ことを特徴とするコンパイル処理方法。
JP4207481A 1981-03-23 1981-03-23 Compile processing system Granted JPS57157357A (en)

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)

* Cited by examiner, † Cited by third party
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

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) コンパイラにおけるデータ割付け方式