JPH0553821A - コンパイル処理方式 - Google Patents

コンパイル処理方式

Info

Publication number
JPH0553821A
JPH0553821A JP14435291A JP14435291A JPH0553821A JP H0553821 A JPH0553821 A JP H0553821A JP 14435291 A JP14435291 A JP 14435291A JP 14435291 A JP14435291 A JP 14435291A JP H0553821 A JPH0553821 A JP H0553821A
Authority
JP
Japan
Prior art keywords
register
unit
tree
intermediate language
machine instruction
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.)
Withdrawn
Application number
JP14435291A
Other languages
English (en)
Inventor
Teruhiro Watanabe
照洋 渡邉
Kakuji Hotsuta
拡二 堀田
Hiroyuki Akamatsu
弘之 赤松
Makoto Komagata
真 駒形
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 JP14435291A priority Critical patent/JPH0553821A/ja
Publication of JPH0553821A publication Critical patent/JPH0553821A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】本発明は、木構造データに対して書換規則を適
用することで対応の機械命令列を生成していくコンパイ
ル処理方式に関し、高速実行を可能にする機械命令列を
生成できるようにすることを目的とする。 【構成】書換規則の適用により特定される部分木を再構
成することで、元の木構造データに相当する構文木中間
言語を生成する木構造再構成部13と、木構造再構成部
13により生成される構文木中間言語を解析すること
で、共通の値を設定するレジスタを特定していくととも
に、この共通レジスタを単一のものに置き換えていく処
理を実行しつつ、この生成される構文木中間言語に対し
てレジスタを割り付けていくレジスタ割付部14と、レ
ジスタ割付部14によりレジスタの割り付けられた構文
木中間言語から対応の機械命令列を生成する命令生成部
15とを備えるように構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、木構造データに対して
書換規則を適用することで対応の機械命令列を生成して
いくコンパイル処理方式に関し、特に、高速実行を可能
にする機械命令列を生成するコンパイル処理方式に関す
るものである。
【0002】様々なタイプのCPUに対応可能となる柔
軟なコンパイル処理方式として、原始プログラムを木構
造データで表現して、この木構造データに対して動的計
画法のアルゴリズムに従って書換規則を適用して対応の
機械命令列を生成していくものがある。このようなコン
パイル処理方式の実用性を高めるためには、生成される
機械命令列の命令数を少なくして高速実行を可能とする
構成を採用していく必要がある。
【0003】
【従来の技術】従来、原始プログラムを木構造データで
表現して、この木構造データに対して動的計画法のアル
ゴリズムに従って書換規則を適用して対応の機械命令列
を生成していくコンパイル処理方式では、書換規則を適
用すると同時に、書換規則に対応した機械命令列を生成
していくことでコンパイル処理を実行していくという方
式を採っていた。すなわち、図9に示す木構造データで
表現された「A=B+C」という原始プログラムに対し
て、図10に示す書換規則を適用して対応の機械命令列
を生成する例で説明するならば、図11に示すように、
書換規則の適用と同時に機械命令列を生成していくこと
で、コンパイル処理を実行していくという構成を採って
いたのである。ここで、図10に示す書換規則中の
“R”はレジスタ、“M”はメモリデータを表してい
る。
【0004】
【発明が解決しようとする課題】しかしながら、このよ
うな従来技術では、生成される機械命令列が書換規則に
対応して規定された固定的な機械命令列になり、これに
対応して、空いているレジスタの中から順番にレジスタ
を割り付けていくことになることから、共通の値を設定
するレジスタがあっても別々にレジスタを割り付けてい
くことになる。これから、生成される機械命令列の命令
数が多くなることで高速実行が実現できないという問題
点があった。
【0005】本発明はかかる事情に鑑みてなされたもの
であって、木構造データに対して書換規則を適用するこ
とで対応の機械命令列を生成していくコンパイル処理方
式において、高速実行を可能にする機械命令列を生成す
る新たなコンパイル処理方式の提供を目的とするもので
ある。
【0006】
【課題を解決するための手段】図1に本発明の原理構成
を図示する。図中、1は本発明のコンパイル処理方式を
具備するデータ処理装置、2はコンパイル対象の原始プ
ログラムを格納するソースファイル、3はコンパイルさ
れた機械命令列を格納するオブジェクトファイルであ
る。
【0007】データ処理装置1は、本発明のコンパイル
処理方式を実現するために、コンパイル処理のための書
換規則を展開する書換規則展開部10と、入力されてく
る原始プログラムを構文解析することで、この原始プロ
グラムを表現する木構造データをなす構文木中間言語を
生成する構文解析部11と、構文解析部11により生成
された構文木中間言語と、書換規則展開部10に展開さ
れる書換規則とのパターンマッチング処理を実行して、
この構文木中間言語の各部分木に対して適用する書換規
則を特定することで、この生成された構文木中間言語を
部分木に分解するパターンマッチング部12と、パター
ンマッチング部12により分解される部分木を再構成す
ることで、元の木構造データに相当する構文木中間言語
を生成する木構造再構成部13と、木構造再構成部13
により生成される構文木中間言語に対してレジスタを割
り付けるレジスタ割付部14と、レジスタ割付部14に
よりレジスタの割り付けられた構文木中間言語から対応
の機械命令列を生成する命令生成部15とを備える構成
を採る。
【0008】
【作用】本発明では、パターンマッチング部12により
木構造データの部分木が分解されると、木構造再構成部
13は、この分解された部分木を再構成することで、元
の木構造データに相当する構文木中間言語を生成し、こ
の生成処理を受けて、レジスタ割付部14は、この木構
造再構成部13により生成された構文木中間言語を解析
することで、共通の値を設定するレジスタを特定してい
くとともに、この共通レジスタを単一のものに置き換え
ていく処理を実行しながら、この生成された構文木中間
言語に対してレジスタを割り付けていく。そして、命令
生成部15は、このレジスタの割り付けられた構文木中
間言語から対応の機械命令列を生成してオブジェクトフ
ァイル3に格納する。
【0009】このように、本発明では、木構造再構成部
13の処理に従って、分解された部分木を一旦元の木構
造と同様なデータ構造に再構成して、レジスタ割付部1
4でもって、複数の部分木を考慮しつつレジスタを割り
付けていくように構成することから、命令数が少なくな
ることで高速実行が可能となる機械命令列を生成できる
ようになるのである。
【0010】
【実施例】以下、実施例に従って本発明を詳細に説明す
る。図2に、「A=(B+D)+(C+D);」という
C言語で記述される原始プログラムをコンパイルすると
きの本発明の処理フローの一例を図示する。ここで、図
1で説明した書換規則展開部10は、図10に示した書
換規則を展開しているものとする。次に、この処理フロ
ーに従って、本発明のコンパイル処理について詳細に説
明する。
【0011】ソースファイル2から「A=(B+D)+
(C+D);」という原始プログラムを受け取ると、先
ず最初に、C言語用として用意される構文解析部11
は、入力されてくる原始プログラムを構文解析すること
で、この原始プログラムを表現する木構造データをなす
図3の構文木中間言語“#1”を生成する。
【0012】次に、パターンマッチング部12は、構文
解析部11により生成された構文木中間言語“#1”
と、書換規則展開部10に展開される書換規則とのパタ
ーンマッチング処理を実行して、この構文木中間言語
“#1”の各部分木に対して適用する書換規則を特定す
ることで、この生成された構文木中間言語“#1”を部
分木に分解する。このようにして、パターンマッチング
部12は、構文解析部11により生成された構文木中間
言語“#1”を部分木に分解することで、図4の構文木
中間言語“#2”を生成する。ここで、図4中の数値
は、パターンマッチング処理により求められる図10の
書換規則の規則名を表している。
【0013】続いて、木構造再構成部13は、パターン
マッチング部12により分解された部分木を再構成する
ことで、元の木構造データに相当する図5の構文木中間
言語“#3”を生成する。ここで、図5中、Rs ないし
Ry は、仮想的に割り付ける仮想レジスタのレジスタ番
号である。すなわち、従来であれば、書換規則の適用と
同時に対応の機械命令列を生成していく構成を採ってい
たのに対して、本発明では、木構造再構成部13が、パ
ターンマッチング部12により分解された部分木を再構
成することで、元の木構造データに相当する構文木中間
言語を生成する構成を採るものである。
【0014】続いて、レジスタ割付部14は、木構造再
構成部13により生成される構文木中間言語“#3”を
解析することで、共通の値を設定する仮想レジスタを特
定していくとともに、この特定した共通の仮想レジスタ
を単一のものに置き換えていく処理を実行しながら、木
構造再構成部13により生成される構文木中間言語“#
3”に対して実レジスタを割り付けていくことで、図6
の構文木中間言語“#4”を生成する。ここで、図6中
のR1 ないしR7 は、実際に割り付けられる実レジスタ
のレジスタ番号である。このレジスタ割付部14の割付
処理に従って、木構造再構成部13により生成される構
文木中間言語“#3”の第2番目の部分木(図中の)
に割り付けられる仮想レジスタRt と、第5番目の部分
木(図中の)に割り付けられる仮想レジスタRw と
が、共にDの値を設定していることから、図6に示すよ
うに、この2つの仮想レジスタRt,Rw が共通の実レジ
スタR2 に置き換えられていくことで、第5番目の部分
木が省略可能であることが判明するのである。
【0015】そして、最後に、命令生成部15は、レジ
スタ割付部14により実レジスタの割り付けられた構文
木中間言語“#4”から、図7に示す対応の機械命令列
を生成してオブジェクトファイル3に格納していく。こ
のようにして、従来技術に従うならば、図8の左欄に示
すように、構文木中間言語“#3”の第5番目の部分木
に対応する機械命令列が生成されるのに対して、本発明
を用いると、図8の右欄に示すように、この機械命令列
が生成されなくなるので、従来よりも少ない命令数の機
械命令列が生成されるようになるのである。
【0016】このように、本発明をコンパイラのバック
エンド部に適用することで、命令数の少ない機械命令列
を生成できるようになるのである。図示実施例について
説明したが、本発明はこれに限定されるものではない。
例えば、実施例では最適化部を含まないもので開示した
が、構文解析部11とパターンマッチング部12との間
に、抽象化レベルの高い最適化部を設けるものであって
もよく、また、木構造再構成部13とレジスタ割付部1
4との間に、ターゲットCPUに効果の高い最適化部を
設けるものであってもよいのである。
【0017】
【発明の効果】以上説明したように、本発明によれば、
木構造データに対して書換規則を適用することで対応の
機械命令列を生成していくコンパイル処理方式におい
て、高速実行を可能にする機械命令列を生成することが
できるようになるのである。
【図面の簡単な説明】
【図1】本発明の原理構成図である。
【図2】本発明の処理の一実施例である。
【図3】構文解析部の生成する構文木中間言語の説明図
である。
【図4】パターンマッチング部により分解された構文木
中間言語の説明図である。
【図5】木構造再構成部の生成する構文木中間言語の説
明図である。
【図6】レジスタ割付部の生成する構文木中間言語の説
明図である。
【図7】命令生成部の生成する機械命令列の説明図であ
る。
【図8】本発明と従来技術との比較図である。
【図9】木構造データの一例である。
【図10】書換規則の一例である。
【図11】従来技術の説明図である。
【符号の説明】
1 データ処理装置 2 ソースファイル 3 オブジェクトファイル 10 書換規則展開部 11 構文解析部 12 パターンマッチング部 13 木構造再構成部 14 レジスタ割付部 15 命令生成部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 駒形 真 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 木構造データに対して書換規則を適用す
    ることで対応の機械命令列を生成していくコンパイル処
    理方式において、 書換規則の適用により特定される部分木を再構成するこ
    とで、元の木構造データに相当する構文木中間言語を生
    成する木構造再構成部(13)と、 上記木構造再構成部(13)により生成される構文木中間言
    語を解析することで、共通の値を設定するレジスタを特
    定していくとともに、該共通レジスタを単一のものに置
    き換えていく処理を実行しながら、該構文木中間言語に
    対してレジスタを割り付けていくレジスタ割付部(14)
    と、 上記レジスタ割付部(14)によりレジスタの割り付けられ
    た構文木中間言語から対応の機械命令列を生成する命令
    生成部(15)とを備えることを、 特徴とするコンパイル処理方式。
JP14435291A 1991-06-17 1991-06-17 コンパイル処理方式 Withdrawn JPH0553821A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP14435291A JPH0553821A (ja) 1991-06-17 1991-06-17 コンパイル処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP14435291A JPH0553821A (ja) 1991-06-17 1991-06-17 コンパイル処理方式

Publications (1)

Publication Number Publication Date
JPH0553821A true JPH0553821A (ja) 1993-03-05

Family

ID=15360111

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14435291A Withdrawn JPH0553821A (ja) 1991-06-17 1991-06-17 コンパイル処理方式

Country Status (1)

Country Link
JP (1) JPH0553821A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002527815A (ja) * 1998-10-10 2002-08-27 ヴィクトリア・ユニバーシティ・オブ・マンチェスター プログラムコード変換方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002527815A (ja) * 1998-10-10 2002-08-27 ヴィクトリア・ユニバーシティ・オブ・マンチェスター プログラムコード変換方法
JP2010198628A (ja) * 1998-10-10 2010-09-09 Internatl Business Mach Corp <Ibm> プログラムコード変換方法
JP2010198629A (ja) * 1998-10-10 2010-09-09 Internatl Business Mach Corp <Ibm> プログラムコード変換方法
JP2010211816A (ja) * 1998-10-10 2010-09-24 Internatl Business Mach Corp <Ibm> プログラムコード変換方法
JP2010225162A (ja) * 1998-10-10 2010-10-07 Internatl Business Mach Corp <Ibm> プログラムコード変換方法
US8006237B2 (en) 1998-10-10 2011-08-23 International Business Machines Corporation Program code conversion
US8037461B2 (en) 1998-10-10 2011-10-11 International Business Machines Corporation Program code conversion

Similar Documents

Publication Publication Date Title
Nöcker et al. Concurrent clean
JP4640684B2 (ja) プログラムコード変換方法
US6072952A (en) Method and apparatus for coalescing variables
US6249910B1 (en) Apparatus and method for incrementally update static single assignment form for cloned variable name definitions
JPH0922362A (ja) コンピュータシステムおよびコンピュータ制御方法
US6117185A (en) Skip list data storage during compilation
JPH0432416B2 (ja)
JP2005332387A (ja) メモリ命令をグループ化及び管理する方法及びシステム
US5926639A (en) Embedded flow information for binary manipulation
JPH06110703A (ja) コンパイル方法
US6064820A (en) Apparatus and method to incrementally update single static assignment (SSA) form
JPH05101141A (ja) 高位合成装置
JP2000010791A (ja) グロ―バルレジスタを初期化するための方法、コンピュ―タプログラム製品及び装置
US7207032B1 (en) Expanding a software program by insertion of statements
JPH0689187A (ja) インライン展開最適化方法
JP3551352B2 (ja) ループ分割方法
Boyland et al. Attributed transformational code generation for dynamic compilers
Dekeyser et al. A geometrical data-parallel language
Ortiz et al. An array language for data parallelism: Definition, compilation, and applications
JP2004021425A (ja) コンパイラにおけるメモリ配置方式
Svensson et al. A language for hierarchical data parallel design-space exploration on GPUs
Sasaki et al. Global storage allocation in attribute evaluation
JP2809073B2 (ja) 配列のメモリ割り付け方式
Mason et al. Optimizing irregular communication patterns in UNH C*
JPH04256132A (ja) 高級プログラム言語の代入文最適化方式

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19980903