JPH0414144A - コンパイル処理方法 - Google Patents

コンパイル処理方法

Info

Publication number
JPH0414144A
JPH0414144A JP11786090A JP11786090A JPH0414144A JP H0414144 A JPH0414144 A JP H0414144A JP 11786090 A JP11786090 A JP 11786090A JP 11786090 A JP11786090 A JP 11786090A JP H0414144 A JPH0414144 A JP H0414144A
Authority
JP
Japan
Prior art keywords
architecture
intermediate language
general
semantic analysis
code generation
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
JP11786090A
Other languages
English (en)
Inventor
Takeshi Sagara
相良 雄
Takeshi Kosuge
健 小菅
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 JP11786090A priority Critical patent/JPH0414144A/ja
Publication of JPH0414144A publication Critical patent/JPH0414144A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔概要〕 C0BOLコンパイラやF]RTRANコンパイラなど
のデータ処理装置におけるコンパイル処理方法に関し コンパイラにおける意味解析処理の手続き中から、アー
キテクチャ依存部分を分離し、テーブル化することによ
り、コンパイラの開発効率を向上させることを目的とし 計算機アーキテクチャに依存しない汎用的な意味解析を
行い、原始プログラムから汎用中間言を生成する意味解
析処理過程と、汎用中間言と計算機アーキテクチャに応
じた中間言との対応情報が格納された中間言用スケルト
ンテーブルを使用し。
汎用中間言を計算機アーキテクチャに依存した中間型に
変換するアーキテクチャ依存処理過程とを備え、意味解
析およびコード生成の双方でテーブルを用いたスケルト
ン展開を行うように構成する。
〔産業上の利用分野〕
本発明は、C0BOLコンパイラやFORTRANコン
パイラなどのデータ処理装置におけるコンパイル処理方
法に関する。
〔従来の技術〕
第6図は従来技術の例を示す。
第6図において、11はコンパイル対象となる原始プロ
グラム、13はアーキテクチャに依存したコード生成に
使用されるコード生成用スケルトンテーブル、16は意
味解析結果の中間的なテキストである中間型、17は最
適化中間型、18はコンパイル結果の目的プログラム、
60は意味解析処理、61は最適化処理、62はコード
生成処理を表す。
C0BOLの原始プログラム11を翻訳する場合を例に
して、従来技術を説明する。
意味解析処理60では、原始プログラム11を入力し、
その意味解析を行って、中間型16を出力する。ここで
は、外部10進で定義された変数B、 Cを、内部10
進に変換し5それについて内部10進加算命令を用いて
加算する中間型16を生成している。
最適化処理61では、中間型16についての実行論理の
変更や不要な手続きの削除などの最適化を行い5その結
果を最適化中間型17として出力する。
コード生成処理62では、コート生成用スケルトンテー
ブル13を用いて最適化中間型17から目的プログラム
18を生成する処理を行う。コード生成用スケルトンテ
ーブル13は、ターゲットとなる計算機アーキテクチャ
に依存したコードの形式をテーブルとして持つものであ
る。コード生成処理62において、最適化中間型17の
中間型をもとにしてコード生成用スケルトンテーブル1
3を検索することにより、出力するコードを決定する。
目的プログラム18におけるPACK命令は外部10進
(ゾーン形式)を内部10進(パンク形式)に変換する
命令、AP命令は、内部10進を加算する命令、UNP
K命令は、内部10進を外部10進に変換する命令であ
る。中間型16における一時域のT3は、目的プログラ
ム18では一時域のT2に重ねられている。
従来技術では、コード生成処理62の中で、アーキテク
チャに依存したコード生成を行うためのコード生成用ス
ケルトンテーブル13が用いられていたが、意味解析処
理60では、アーキテクチャに依存した部分を処理する
ための手続きが、意味解析の処理の中に混在していた。
〔発明が解決しようとする課題〕
従来技術では1例えば第6図に示すように、コンパイラ
の意味解析処理60部分で、計算機アーキテクチャに依
存した中間型16を出力し、コード生成処理62部分で
は、その中間型16または最適化中間型17とコード生
成用スケルトンテーブル13とをもとにして、生成する
コードを決定していた。
これは、対象となるアーキテクチャにおいて高性能なオ
ブジェクトを生成するために2中間言16の出力元であ
る意味解析処理60部分で、計算機アーキテクチャを意
識しなければならなかったためである。しかし、意味解
析処理60部分にアーキテクチャに依存した処理を混在
させると対象アーキテクチャが変更になるごとに、意味
解析の手続きを変更する必要が生し、開発効率が悪くな
るという問題がある。
本発明は上記問題点の解決を図り、コンパイラにおける
意味解析処理の手続き中から、アーキテクチャ依存部分
を分離し、テーブル化することにより、コンパイラの開
発効率を向上させることを目的としている。
〔課題を解決するための手段〕
第1図は本発明の原理説明図である。
第1図において、10はCPUおよびメモリなどからな
るデータ処理装置、11はコンパイル対象となる原始プ
ログラム、12はアーキテクチャに依存した中間型の生
成に使用される中間言用スケルトンテーブル、13はア
ーキテクチャに依存したコード生成に使用されるコード
生成用スケルトンテーブル、14はアーキテクチャに依
存しない意味解析結果の汎用中間型、15は最適化され
た中間型である最適化汎用中間型、16はアーキテクチ
ャに応じた中間型、17は最適化された最適化中間型、
18はコンパイル結果の目的プログラム、20は意味解
析処理、21は汎用中間言置適化処理、22はアーキテ
クチャ依存処理、23は中間言置適化処理、24はコー
ド生成処理を表す。
意味解析処理20では、原始プログラム11を入力して
、所定の文法に従った意味解析を行い。
アーキテクチャに依存しない汎用中間型14を出力する
。汎用中間言置適化処理21では、必要に応じて汎用中
間型14に対する最適化のための変更を行い、その結果
を最適化汎用中間型15として出力する。
アーキテクチャ依存処理22は、従来の意味解析に関係
するアーキテクチャに依存した処理を行う部分で、ここ
で中間言用スケルトンテーブル12を用いることにより
、最適化汎用中間型15から計算機アーキテクチャに依
存した中間型16を生成する。
中間言置適化処理23では、中間型16についての実行
論理の変更や不要な手続きの削除などの最適化を行い、
最適化中間型17を出力する。
コード生成処理24では、コード生成用スケルトンテー
ブル13を用いて、最適化中間型17から機械語命令列
などからなる目的プログラム18を生成する。
コード生成用スケルトンテーブル13は、アーキテクチ
ャに依存した中間型16または最適化中間型17をもと
に、アーキテクチャに合致したオブジェクトコードを生
成するためのテーブルで従来から用いられていたもので
ある。
本発明では、さらに汎用中間型14または最適化汎用中
間型15から、アーキテクチャに依存した中間型16を
切り分ける中間言用スケルトンテーブル12が設けられ
、これによって、意味解析処理20の本体部分と、アー
キテクチャ依存処理22とを分離させる。
クチャに依存するため、アーキテクチャが変更となるご
とに変更が必要になるが、アーキテクチャに依存した部
分が手続き部分に入らないため、意味解析処理20を各
アーキテクチャで共通化することができる。したがって
、コンパイラの効率的な開発が可能になり、保守性も向
上する。
〔作用〕
アーキテクチャ間の相違点を吸収する箇所をテーブル化
して、意味解析と分離する。そして、意味解析処理20
では、意味解析だけに徹し2各アーキテクチヤに対して
汎用的な中間型を出力する。
アーキテクチャ依存処理22では、意味解析処理20.
汎用中間言置適化処理21が出力した汎用中間型14ま
たは最適化汎用中間型15をもとに、中間言用スケルト
ンテーブル12を参照することにより、汎用中間型14
または最適化汎用中間型15を5従来のアーキテクチャ
に依存した中間型16に変換する処理を行う。
中間言用スケルトンテーブル12は、アーキテ〔実施例
〕 第2圀は本発明の一実施例による展開例、第3図ないし
第5図は本発明の一実施例で用いる中間言用スケルトン
テーブルの構成例を示す。
以下、C0BOLのコンパイラについての例を説明する
が、他の計算機言語についても同様に本発明を適用する
ことが可能である。
意味解析処理では、第2図に示す原始プログラム11を
入力すると、その意味解析を行い、汎用中間型14を出
力する。ここで、r#ADD  AB、CJは、変数B
と変数Cの加算結果を、変数Aに代入することを示す中
間型である。この段階では、変数A、B、Cのデータ属
性は、まだ決まっていない。
原始プログラム11中では、変数A、B、Cが外部lO
進で定義されているが、内部では必ずしも外部10進で
ある必要はない。どのデータ属性で扱えば高速なオブジ
ェクトになるかは、対象となる計算機アーキテクチャに
依存する。そこで。
アーキテクチャ依存最適化により1例えば変数A。
B、Cの属性を内部10進とすることが決まるとその条
件に応して汎用中間型14を中間型16にスケルトン展
開する。
rADDP−L  A、B、Cjは、内部10進の変数
Bと変数Cを加算して、結果を内部10進の変数Aに代
入することを示す中間型16である。
第2図に示す目的プログラム18は、中間型16にもと
づいて、最終的に出力されたオブジェクトコードであり
、  rAP  A、B、CJは、BとCとを足し、A
に代入する処理を実行する内部10進の加算命令である
。変数Aの属性が、内部10進に変更されたため、1つ
のAP命令だけで手続きが完了している。
次に、Xという計算機アーキテクチャと、Yという計算
機アーキテクチャの2種類のアーキテクチャをサポート
する場合を例に、第1図に示す中間言用スケルトンテー
ブル12の構成について説明する。
例えば、第3図(イ)に示す汎用中間型14について、
アーキテクチャに依存した中間型を生成するものとする
。なお、変数の属性は、それぞれAは外部10進、Bは
内部10進、Cは2進で定義されているとする。
中間言用スケルトンテーブル12のテーブル本体は2例
えばXアーキテクチャの場合、あらかじめ第3図(ロ)
に示すように作成され、Xアーキテクチャの場合、第3
図(ハ)に示すように作成される。
このテーブル本体における中間型は、それぞれ次のよう
な意味を持っている。
(a)CVBP 内部10進を2進に変換する。
(b)ADDB 2進同士を加算する。
(C)CVZB 2進を外部10進に変換する。
(d)CVPB 2進を内部10進に変換する。
(e)ADDP 内部10進同士を加算する。
(f)CVZP 内部10進を外部10進に変換する。
(6)ADDZ 外部10進同士を加算する。
スケルトンテーブル本体の他に、Xアーキテクチャの場
合、第4回(イ)に示す条件識別チーフルと、第4図(
ロ)に示す取出しビットテーブルとが用意される。一方
、Xアーキテクチャの場合第5図(イ)に示す条件識別
テーブルと、第5図(ロ)に示す取出しビットテーブル
とが用意される。
各条件識別テーブルにおけるBINは、演算が2進モー
ドになる条件、PACKは、演算が内部10進モードに
なる条件、ZONEは、演算が外部10進モードになる
条件であり1条件識別テーブルには、アーキテクチャに
応して決定する演算モートの条件が記述されている。
取出しビットテーブルには2条件識別テーブルにより決
定された演算モードに対して2スケルトンチ一フル本体
から、どの中間型を取り出すべきかの情報が記述されて
いる。取出しビットテーブルにおける値が“0”ならば
、取出しを行わす“°1°゛ならば取出しを行うことを
示している。
取出しビットテーブルの上欄に表した数字と。
スケルトンテーブル本体の左側に表した数字とが対応し
ている。
アーキテクチャ依存処理の手順は、各アーキテクチャに
共通であり、以下のとおりである。
(1)条件識別テーブルを参照し、どの演算モードでの
処理が妥当かを判断する。
(2)  その後、決定した演算モード用の取出しピン
トテーブルを参照し、出力する中間型を第3図(ロ)ま
たは(ハ)に示すスケルトンテーブル本体から取り出す
この例の場合、Xアーキテクチャでは、外部10進の機
械語命令があり、Xアーキテクチャでは外部10進の機
械語命令はない、XアーキテクチャとXアーキテクチャ
とでは1条件識別テーブルの内容が異なり、特にXアー
キテクチャで外部10進の演算モードが選択されること
はないため。
外部10進となるモード(ZONE)の条件は存在しな
い。そのため、取出しビットテーブルのZONEモード
用のテーブルには、第5図(ロ)に示すように値が“0
”以外は設定されない。
Xアーキテクチャの場合、第3図(イ)に示すような汎
用中間型14に対して、第4図(イ)に示す条件識別テ
ーブルによる条件判定を行い、各演算モードに応して2
次のような中間型を出力する。
(a)  演算モードが2進(BIN)の場合第3図(
ロ)に示す1番から3番までの中間型を出力する。
[有])演算モードが内部10進(PACK)の場合第
3図(ロ)に示す4番から6番までの中間易を出力する
(C)゛ 演算モードが外部10進(ZONE)の場合
第3図(ロ)に示す7番から9番までの中間型を出力す
る。
一方、Yアーキテクチャの場合、第3図(イ)に示すよ
うな汎用中間型14に対して、第5回(イ)に示す条件
識別テーブルによる条件判定を行い、各演算モードに応
じて1次のような中間型を出力する。
(a)  演算モードが2進(BIN)の場合第3図(
ハ)に示す1番から4番までの中間型を出力する。
0)演算モードが内部10進(PACK)の場合第3図
(ハ)に示す5番から7番までの中間型を出力する。
Xアーキテクチャでは、Xアーキテクチャとは異なり、
直接、2進を外部10進に変換する命令がないため、−
旦、内部10進を経由する処理(CVPB、CVZP)
の追加が必要になってい以上のように、各アーキテクチ
ャごとに、実際には、意味解析結果の中間型が違うこと
になるが中間8用スケルトンテーブルで、その違いを吸
収することができる。なお、第1図に示す中間型16を
生成した後の中間言置適化処理23およびコド生成処理
24の処理は、従来と同様でよいので、その詳しい説明
を省略する。
〔発明の効果〕
以上説明したように7本発明によれば、2段スケルトン
を使用することにより、アーキテクチャに依存した部分
を手続きから分離することができ。
特に多数のアーキテクチャに対する開発効率が向上する
。また、アーキテクチャ依存部分のテーブル化によって
保守性も向上し、信頼性が高くなる。
第3図ないし第5図は本発明の一実施例で用いる中間8
用スケルトンテーブルの構成例第6図は従来技術の例を
示す。
図中、10はデータ処理装置、11は原始プログラム、
12は中間8用スケルトンテーブル、13はコード生成
用スケルトンテーブル、14は汎用中間型、15は最適
化汎用中間型、16は中間型、17は最適化中間型、1
8は目的プログラム20は意味解析処理、21は汎用中
間型最適化処理、22はアーキテクチャ依存処理、23
は中間言置適化処理、24はコード生成処理を表す。

Claims (1)

  1. 【特許請求の範囲】 原始プログラム(11)の意味解析および最適化処理を
    行った結果の中間言(16)から、目的プログラム(1
    8)の対象となる計算機アーキテクチャに応じてあらか
    じめ用意されたコード生成用スケルトンテーブル(13
    )を使用して、出力するコードを決定するコード生成処
    理過程(24)を備えたデータ処理装置(10)におけ
    るコンパイル処理方法において、計算機アーキテクチャ
    に依存しない汎用的な意味解析を行い、原始プログラム
    から汎用中間言を生成する意味解析処理過程(20)と
    、 汎用中間言と計算機アーキテクチャに応じた中間言との
    対応情報が格納された中間言用スケルトンテーブル(1
    2)を使用し、汎用中間言を計算機アーキテクチャに依
    存した中間言に変換するアーキテクチャ依存処理過程(
    22)とを備え、 意味解析およびコード生成の双方でテーブルを用いたス
    ケルトン展開を行うことを特徴とするコンパイル処理方
    法。
JP11786090A 1990-05-08 1990-05-08 コンパイル処理方法 Pending JPH0414144A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11786090A JPH0414144A (ja) 1990-05-08 1990-05-08 コンパイル処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11786090A JPH0414144A (ja) 1990-05-08 1990-05-08 コンパイル処理方法

Publications (1)

Publication Number Publication Date
JPH0414144A true JPH0414144A (ja) 1992-01-20

Family

ID=14722091

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11786090A Pending JPH0414144A (ja) 1990-05-08 1990-05-08 コンパイル処理方法

Country Status (1)

Country Link
JP (1) JPH0414144A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6305013B1 (en) 1998-04-01 2001-10-16 Nec Corporation Compiling method for generating target program in accordance with target processor type, compiling device, recording medium with compiling program recorded therein and recording medium with conversion table used in compiling recorded therein
JP2006525572A (ja) * 2003-05-02 2006-11-09 トランジティブ リミテッド プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ
USRE40498E1 (en) 1993-05-27 2008-09-09 Matsushita Electric Industrial Co., Ltd. Variable address length compiler and processor improved in address management

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE40498E1 (en) 1993-05-27 2008-09-09 Matsushita Electric Industrial Co., Ltd. Variable address length compiler and processor improved in address management
USRE41959E1 (en) 1993-05-27 2010-11-23 Panasonic Corporation Variable address length compiler and processor improved in address management
US6305013B1 (en) 1998-04-01 2001-10-16 Nec Corporation Compiling method for generating target program in accordance with target processor type, compiling device, recording medium with compiling program recorded therein and recording medium with conversion table used in compiling recorded therein
JP2006525572A (ja) * 2003-05-02 2006-11-09 トランジティブ リミテッド プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ
JP2007249991A (ja) * 2003-05-02 2007-09-27 Transitive Ltd プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ
US7921413B2 (en) 2003-05-02 2011-04-05 International Business Machines Corporation Architecture for generating intermediate representations for program code conversion
US8104027B2 (en) 2003-05-02 2012-01-24 International Business Machines Corporation Architecture for generating intermediate representations for program code conversion

Similar Documents

Publication Publication Date Title
JP3246438B2 (ja) 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体
JPH0414144A (ja) コンパイル処理方法
JPS6022373B2 (ja) プログラマブル制御装置のプログラム変換機構
JP2585793B2 (ja) コンパイラシステム
KR0169909B1 (ko) 목표 프로세서용 어셈블리 코드 생성기를 작성하는 방법
JP2533938B2 (ja) ベクトル演算処理方式
JP2585790B2 (ja) 複数コード系に対応するコンパイル処理方式
JPH07121379A (ja) 複数言語混在コンパイラ
JPH0561687A (ja) コンパイラの処理方式
JP3044953B2 (ja) 言語処理システムのシンボル処理方式
JP2638278B2 (ja) コンパイル処理方式
JPH01128136A (ja) コンパイル処理装置
JPH01237832A (ja) プログラムリンケージ方式
JPH04120629A (ja) コード生成方法
JPH05100866A (ja) コンパイル・リンク方式
JPH04323730A (ja) 最適化処理方式
JPH05120025A (ja) ソースプログラムのインライン展開方法
JPH0488531A (ja) コード最適化方式
JPH05150960A (ja) プリコンパイラ
JPS63317831A (ja) プログラム翻訳処理方法
JPH1124939A (ja) プログラム変換方法
JPH035827A (ja) コンパイル方法
JPS62212735A (ja) コンパイル方式
JPH0421072A (ja) 論理回路設計システム
JPH07110758A (ja) プログラムのコンパイル・リンク方式