JPS6365530A - コ−ド最適化方式 - Google Patents

コ−ド最適化方式

Info

Publication number
JPS6365530A
JPS6365530A JP20935186A JP20935186A JPS6365530A JP S6365530 A JPS6365530 A JP S6365530A JP 20935186 A JP20935186 A JP 20935186A JP 20935186 A JP20935186 A JP 20935186A JP S6365530 A JPS6365530 A JP S6365530A
Authority
JP
Japan
Prior art keywords
list
holding
assembler
template
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.)
Pending
Application number
JP20935186A
Other languages
English (en)
Inventor
Makoto Noda
誠 野田
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP20935186A priority Critical patent/JPS6365530A/ja
Publication of JPS6365530A publication Critical patent/JPS6365530A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は電子計算機システムなどで利用される高級言語
のソースコードの翻訳に関し、特に目的コードの最適化
方式に関する。
C従来の技術〕 電子計算機システム上で、高級言語のソースコードをコ
ンパイラによりアセンブラソースコード(アセンブラ命
令)に翻訳する場合、コンパイラから出力されたアセン
ブラ命令列を更に効率の良いものにする為、一度コンパ
イラから出力されたアセンブラ命令列に対し最適化処理
を施すことがある。
従来、上述したような最適化処理を行なうコンパイラお
よび最適化処理部は、各々次のような構成要素から構成
されていた。
・コンパイラ (1)  ソースコードを入力して、語い解析、構文解
析、意味解析を行ない、弐トリーを生成する弐トリー生
成手段 (2)上記弐トリー生成手段で生成された式トリーを保
持する弐トリー保持手段 (3)式トリーのパターン毎にコード生成の為の情報が
対応付けられているテンプレートを保持するテンプレー
ト保持手段 (4)  上記式トリー保持手段に保持されている弐ト
リーと、上記テンプレート保持手段に保持されているテ
ンプレートとを照合し、−敗するテンプレートがあれば
、それに対応するアセンブラ命令を生成し、またその時
レジスタ等のリソース管理も行なうコード生成手段 ・最適化処理部 (1)上記コンパイラから出力されるアセンブラ命令を
入力し、一つのアセンブラ命令毎にメモリ上にノードを
作成し、その前後のノードを連結しリスト化するリスト
生成手段 (2)上記リスト生成手段で生成されたリストを保持す
るリスト保持手段 (3)  上記リスト保持手段に保持されているリスト
をノード毎にたどってレジスタの使用状態を解析してい
くデータフロー解析手段 (4)上記データフロー解析手段によって解析されたレ
ジスタ使用状態の情報に基づいて冗長な命令の削除、変
更を行なうレジスタ管理最適化手段〔発明が解決しよう
とする問題点〕 上述したように、従来の最適化方式では、リスト生成手
段が一つのアセンブラ命令毎にノードを作成し、データ
フロー解析手段はそのノードをたどワてレジスタの使用
状態を解析していくので、処理時間の大部分がデータフ
ロー解析の為のリスト処理が占め、アセンブラ命令の数
が増加すると共に最適化処理に要する時間が急増すると
いう問題がある。特に、従来方式では、コード生成時に
得られるレジスタの使用状態に関する情報が最適化処理
部に伝わらない為、最適化処理におけるデータフロー解
析時に再びレジスタ使用状態を1アセンブラ命令毎に解
析していかなければならず、余分な処理時間を要してし
まうという問題がある。
本発明はこのような従来の問題を解決したもので、その
目的は、最適化処理を高速に行なうことができるように
することにある。
〔問題点を解決するための手段〕
上記従来の問題点を解決する本発明のコード最適化方式
は、ソースファイルから高級言語のソースコードを入力
して語い解析、構文解析、意味解析を行ない、式トリー
を生成する式トリー生成手段と、 該弐トリー生成手段によって生成された弐トリーを保持
する式トリー保持手段と、 式トリーのパターン毎にコード生成の為の情報が対応付
けられているテンプレートを保持するテンプレート保持
手段と、 前記式トリー保持手段に保持されている弐トリーと前記
テンプレート保持手段に保持されているテンプレートと
を照合し、一致するテンプレートがあればそれに対応す
るアセンブラ命令を生成し、その際にレジスタ等のリソ
ース管理も行なうコード生成手段と、 該コード生成手段によって前記式トリーと一敗したテン
プレートのパターン内で、参照、書込みが行なわれるレ
ジスタの使用情報を出力するレジスタ情報出力手段とを
含むコンパイラ、前記コード生成手段で生成されたアセ
ンブラ命令と前記レジスタ情報出力手段から出力された
レジスタに関する情報とを対応付けて格納するアセンブ
ラソースファイル、 該アセンブラソースファイルを入力し、一つのテンプレ
ートのパターンに対応する個数のアセンブラ命令を1ブ
ロックとして扱って該ブロックに対応する前記アセンブ
ラソースファイル内のレジスタ情報を保持させた一つの
ノードを順次に作成し、該ノードをリスト化するリスト
生成手段と、該リスト生成手段によって生成されたリス
トを保持するリスト保持手段と、 該リスト保持手段に保持されているリストをノード毎に
たどり、レジスタの使用状態を解析するデータフロー解
析手段と、 該データフロー解析手段によって解析されたレジスタの
使用状態の情報に基づいて冗長な命令を削除、変更する
レジスタ管理最適化手段とを含む最適化処理部を有する
〔作用〕
データフロー解析の為のリスト処理は1アセンブラ命令
毎に行なわれるのではなく、コンパイラから出力された
複数個のアセンブラ命令毎つまりブロック毎に1テなわ
れ、一つのブロックが一つのノードに対応させられてリ
スト処理され、なおかつ、従来は利用されていなかった
コンパイラ内部で得ることができるブロック内のレジス
タ使用情報をそのノードに付加して利用可能とすること
により、データフロー解析の時間を大幅に削減し、これ
によって最適化処理に要する時間を大幅に短縮するよう
に構成されている。
〔実施例〕
次に本発明の実施例について図面を参照して説明する。
第1図は本発明の実施例の機能ブロック図であり、同図
を参照すれば本実施例は、ソースファイル1と、コンパ
イラ20と、アセンブラソースファイル8と、最適化処
理部21と、最適化後アセンブラソースファイル13と
から構成されている。また、コンパイラ20は、式トリ
ー生成手段2と、式トリー保持手段3と、コード生成手
段4と、テンブレー 1−保持手段5と、テンプレート
情報出力手段6と、レジスタ情報出力手段7とを含み、
最適化処理部21は、リスト生成手段9と、データフロ
ー解析手段10と、レジスタ管理最適化手段11と、リ
スト保持手段工2とを含んでいる。
ソースファイル1には、翻訳の対象となる高級言語のソ
ースコードが格納されており、コンパイラ20の入力と
なる。
コンパイラ20は、ソースファイル1からソースコード
を入力してアセンブラ命令に翻訳し、そのアセンブラ命
令などをアセンブラソースファイル8に出力する。
コンパイラ20内部での制御の流れは、先ず、式トリー
生成手段2がソースファイル1からソースコードを人力
して弐トリーを生成し、その弐トリーを式トリー保持手
段3に設定し、制御をコード生成手段4に渡す。
テンプレート保持手段5には式トリーのパターン毎にコ
ード生成の為の情報が対応付けられているテンプレート
が予め保持されており、コード生成手段4は式トリー生
成手段2から制御を渡されると、弐トリー保持手段3に
保持されている弐トリーとテンプレート保持手段5に保
持されているテンプレートとの照合を行なう。そして、
式トリーと一敗するテンプレートが見つかると、そのテ
ンプレートに保持されている情報に従って、幾つかのア
センブラ命令を生成する。なお、このコード生成をする
際にはレジスタの割付けも行なわれる。また、コード生
成手段4は式トリーと一致するテンプレートが見つかっ
た時点で一度制御をテンプレート情報出力手段6に渡す
テンプレート情報出力手段6はコード生成手段4から制
御を渡されると、コード生成手段4において見つけられ
た式トリーと一致したテンプレートを識別するためのテ
ンプレート番号等の識別情報をアセンブラソースファイ
ル8に出力し、制御をコード生成手段4に戻す。
コード生成出力手段4はテンプレート情報出力手段6か
ら制御が戻されると、上記生成したアセンブラ命令のア
センブラソースファイル8に対する出力を行ない、制御
をレジスタ情報出力手段7に移す。
レジスタ情報出力手段7は、コード生成手段4から制御
を移されると、コード生成手段4から一つの弐トリーに
対応して今回出力された複数個のアセンブラ命令の範囲
内で、参照、書込みが行なわれるレジスタに関する情報
をアセンブラソースファイル8に出力し、制御をコード
生成手段4に戻す。
コード生成手段4は、レジスタ情報出力手段7から制御
が戻されると、残りのソースコードがあれば上記処理を
繰返し、全てのコード生成が完了すると、コンパイラ2
0の処理を終了させる。
上述のようなコンパイラ20の処理によりて、アセンブ
ラソースファイル8には、例えば第2図に示すように一
つの弐トリーに対応して生成された複数個のアセンブラ
命令Bと、その複数個のアセンブラ命令Bの範囲内で参
照、書込みが行なわれるレジスタに関する情報Cと、上
記一つの弐トリーと一敗したテンプレートの識別情報A
とが、複数組格納されることになる。
一方、最適化処理部21は、コンパイラ20から出力さ
れたアセンブラソースファイル8の中のアセンブラ命令
列を入力し、より効率の良いアセンブラ命令列に変換し
て、最適化後アセンブラソースファイル13に出力する
最適化処理部21内部の制御の流れは、先ず、リスト生
成手段9がアセンブラソースファイル8からテンプレー
トの識別情報Aを入力し、この入力したテンプレートの
識別情報Aに基づいて以下のアセンブラ命令Bに含まれ
るアセンブラ命令数を識別して複数個のアセンブラ命令
Bを取出し、この複数のアセンブラ命令Bを一つのノー
ドに対応させる。また、アセンブラソースファイル8か
らレジスタに関する情報Cを読取り、その情報を上記ノ
ードに保持させる。このような動作を7センブラソース
フアイル8に格納されたテンプレートの識別情報に基づ
く個数のアセンブラ命令毎に実行して順次に作成した前
後のノードを連結してリスト化し、このリストをリスト
保持手段12に設定する。そしてその後、制御をデータ
フロー解析手段10に移す。
データフロー解析手段10は、リスト生成手段9から制
御を渡されると、リスト保持手段12に保持されている
リストを前後にたどりながら、各ノードに保持されてい
るレジスタに関する情報に基づき、レジスタの使用状態
を解析していき、その結果得られた情報と制御をレジス
タ管理最適化手段11に渡す。このレジスタ管理最適化
手段11においては、第2図の複数個のアセンブラ命令
B内でのレジスタに関する情報はレジスタに関する情報
Cに記述されているので、その範囲内での処理は省け、
またノード数が従来より少なくなることから処理が高速
化する。
さて、レジスタ管理最適化手段11は、データフロー解
析手段10からレジスタ使用状態情報と制御が渡される
と、その情報に基づいて冗長な命令の削除や変更を行な
い、アセンブラ命令列を最適化する。そして、最適化が
終了したら、アセンブラ命令列を最適化後アセンブラソ
ースファイル13に出力し、最適化処理全体の制御を終
了させる。
以上、本発明の実施例について説明したが、本発明は以
上の実施例にのみ限定されずその他各種の付加変更が可
能である。例えば、上記実施例では、最適化処理部21
のリスト生成手段9で一つのノードに対応させるアセン
ブラ命令数を識別させる為にテンプレートの識別情報を
用いたが、これはテンプレート情報を最適化処理部21
における他の処理で利用し得るよう便宜を図ったもので
あり、それ以外に例えばアセンブラ谷令数の個数を直接
に指定するようにしても良い。
〔発明の効果〕
以上説明したように、本発明の最適化方式では、データ
フロー解析の為のリスト処理を1アセンブラ命令毎に行
なうのではなく、コンパイラから出力された情報を下に
複数個のアセンブラ命令を1ブロックとして扱って一つ
のノードに対応させてリスト処理を行ない、なお且つ、
従来は利用されていなかったコンパイラ内部で得ること
ができるレジスタに関する情報をアセンブラソースファ
イルに含めて最適化処理部で利用できるようにしたので
、データフロー解析の時間が短くなり、これによって最
適化処理に要する時間が大幅に短縮されるという効果が
ある。
【図面の簡単な説明】
第1図は本発明の実施例の機能ブロック図および、 第2図はアセンブラソースファイル8の格納内容例を示
す図である。 図において、l・・・ソースファイル、2・・・式トリ
ー生成手段、3・・・式トリー保持手段、4・・・コー
ド生成手段、5・・・テンプレート保持手段、6・・・
テンプレート情報出力手段、7・・・レジスタ情報出力
手段、8・・・アセンブラソースファイル、9・・・リ
スト生成手段、10・・・データフロー解析手段、11
・・・レジスタ管理最適化手段、12・・・リスト保持
手段、13・・・最適化後アセンブラソースファイル、
20・・・コンパイラ、21・・・最適化処理部。

Claims (1)

  1. 【特許請求の範囲】 ソースファイルから高級言語のソースコードを入力して
    語い解析、構文解析、意味解析を行ない、式トリーを生
    成する式トリー生成手段と、 該式トリー生成手段によって生成された式トリーを保持
    する式トリー保持手段と、 式トリーのパターン毎にコード生成の為の情報が対応付
    けられているテンプレートを保持するテンプレート保持
    手段と、 前記式トリー保持手段に保持されている式トリーと前記
    テンプレート保持手段に保持されているテンプレートと
    を照合し、一致するテンプレートがあればそれに対応す
    るアセンブラ命令を生成し、その際にレジスタ等のリソ
    ース管理も行なうコード生成手段と、 該コード生成手段によって前記式トリーと一致したテン
    プレートのパターン内で、参照、書込みが行なわれるレ
    ジスタに関する情報を出力するレジスタ情報出力手段と
    を含むコンパイラ、 前記コード生成手段で生成されたアセンブラ命令と前記
    レジスタ情報出力手段から出力されたレジスタ情報とを
    対応付けて格納するアセンブラソースファイル、 該アセンブラソースファイルを入力し、一つのテンプレ
    ートのパターンに対応する個数のアセンブラ命令を1ブ
    ロックとして扱って該ブロックに対応する前記アセンブ
    ラソースファイル内のレジスタ情報を保持させた一つの
    ノードを順次に作成し、該ノードをリスト化するリスト
    生成手段と、該リスト生成手段によって生成されたリス
    トを保持するリスト保持手段と、 該リスト保持手段に保持されているリストをノード毎に
    たどり、レジスタの使用状態を解析するデータフロー解
    析手段と、 該データフロー解析手段によって解析されたレジスタの
    使用状態の情報に基づいて冗長な命令を削除、変更する
    レジスタ管理最適化手段とを含む最適化処理部を具備し
    たことを特徴とするコード最適化方式。
JP20935186A 1986-09-05 1986-09-05 コ−ド最適化方式 Pending JPS6365530A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20935186A JPS6365530A (ja) 1986-09-05 1986-09-05 コ−ド最適化方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20935186A JPS6365530A (ja) 1986-09-05 1986-09-05 コ−ド最適化方式

Publications (1)

Publication Number Publication Date
JPS6365530A true JPS6365530A (ja) 1988-03-24

Family

ID=16571510

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20935186A Pending JPS6365530A (ja) 1986-09-05 1986-09-05 コ−ド最適化方式

Country Status (1)

Country Link
JP (1) JPS6365530A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04247527A (ja) * 1990-10-15 1992-09-03 Internatl Business Mach Corp <Ibm> コンピュータの命令スケジューラ
JPH04263331A (ja) * 1990-10-15 1992-09-18 Internatl Business Mach Corp <Ibm> コンピュータ用大域命令スケジューラ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04247527A (ja) * 1990-10-15 1992-09-03 Internatl Business Mach Corp <Ibm> コンピュータの命令スケジューラ
JPH04263331A (ja) * 1990-10-15 1992-09-18 Internatl Business Mach Corp <Ibm> コンピュータ用大域命令スケジューラ

Similar Documents

Publication Publication Date Title
US7917899B2 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
JPS63201834A (ja) オブジエクト・モジユール生成方法
KR100853933B1 (ko) 메인프레임 시스템의 응용프로그램을 개방형 시스템에적합한 응용프로그램으로 변환하는 마이그레이션 장치 및그 방법
ITRM940789A1 (it) &#34;metodo e procedimento di comunicazione inter-macchina e metodo generalizzato per la riparazione di programmi per esso&#34;
Abrahams et al. The LISP 2 programming language and system
JP3318051B2 (ja) 翻訳処理方法
JPS6365530A (ja) コ−ド最適化方式
CN112114817B (zh) 基于cobol语言的数据字典字段信息获取方法及装置
US5671431A (en) Method for processing user program on a parallel computer system by inserting a tag during compiling
JPH11345127A (ja) コンパイラ
JP3003459B2 (ja) プログラム作成支援装置
Kumar et al. Revolutionizing Compilation: Lexical Analysis Approaches for Parallel Multi-Core Processing
KR100323372B1 (ko) 이엠 코드에 대한 실행시간 스택의 타입 분석 방법
Montuelle et al. Cross software using a universal object module format, CUFOM
JP3323147B2 (ja) コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体
Ishijima et al. A Small Engineering Workbench On A Personal Computer
Batory et al. Techniques for software system synthesis in ADAGE
JPH0695890A (ja) コンパイラにおける名前置換方式
KR970011897B1 (ko) 언어해석 처리장치
Pollice Using a very high level language to build families of high quality reusable components
Diviánszky et al. Detaching and Reconstructing the Documentary Structure of Source Code
JPH05197565A (ja) 定数領域割り付け処理方法
JPH10133885A (ja) 一括命令生成コンパイル方法
JPH02253443A (ja) プログラム生成方法
JPH0328932A (ja) 拡張された言語仕様のコンパイル方式