JPH11288375A - 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体 - Google Patents

可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体

Info

Publication number
JPH11288375A
JPH11288375A JP10089087A JP8908798A JPH11288375A JP H11288375 A JPH11288375 A JP H11288375A JP 10089087 A JP10089087 A JP 10089087A JP 8908798 A JP8908798 A JP 8908798A JP H11288375 A JPH11288375 A JP H11288375A
Authority
JP
Japan
Prior art keywords
code
conversion table
output
program
target
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.)
Granted
Application number
JP10089087A
Other languages
English (en)
Other versions
JP3246438B2 (ja
Inventor
Takashi Miyamoto
敬士 宮本
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 JP08908798A priority Critical patent/JP3246438B2/ja
Priority to EP99106704A priority patent/EP0947923A3/en
Priority to US09/285,039 priority patent/US6305013B1/en
Publication of JPH11288375A publication Critical patent/JPH11288375A/ja
Application granted granted Critical
Publication of JP3246438B2 publication Critical patent/JP3246438B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers

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)

Abstract

(57)【要約】 【課題】 複数のターゲットに対してコード生成を行う
コンパイル処理方法において、コンパイラ作成に要する
作業量を削減する。 【解決手段】 コード生成部18は、第1変換部22お
よび第2変換部26を備え、第1変換部22は、第1記
憶装置24に格納されている第1変換テーブルを参照し
て、上位コード20から下位中間言語用の下位コード3
0を生成し、第2変換部は、第2記憶装置に格納されて
いる第2変換テーブルを参照して、下位コードからター
ゲット用の出力コード14を生成する。そして、第2変
換テーブルは、下位中間言語のコードと出力コードとを
対応づけるに当たり、互いに異なる複数の種類のターゲ
ットプログラムどうしで、互いに同一もしくは類似の機
能を表す出力コードを、1つの下位コードに共に対応づ
けてある。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、入力プログラム
(原始プログラム)から、互いに異なる複数のターゲッ
ト用の出力コードを個別に生成するのに用いて好適な可
変ターゲットコンパイル処理方法、その方法を実現する
ための装置、その方法をコンピュータに実行させるため
のプログラムが記憶された記憶媒体、および、その方法
に用いる変換コードテーブルが記憶された記憶媒体に関
する。
【0002】
【従来の技術】従来のコンパイル方式の一例が、文献
1:「特開平6−332719号公報」に開示されてい
る。この文献1に開示の技術について、図13を参照し
て、第1の従来例として簡単に説明する。図13は、第
1の従来例の説明に供するフローチャートである。第1
の従来例では、原始プログラムから中間言語コード命令
を生成し、この中間言語コード命令からターゲットプロ
グラム(以下、単に「ターゲット」とも称する。)用の
出力コードを生成するに当たり、コード生成手段を用い
る。このコード生成手段としてのコンパイラコード発生
装置には、コンパイラが発生するコードにヘッダを付け
た発生コードテーブルと発生コードのプログラム依存の
変更内容とを入力する。
【0003】ここで、発生コードテーブルとは、中間言
語コード命令に対応する出力コードパタンであって、各
出力コードにヘッダを付したものをいう。また、変更内
容とは、出力コードパタン中に展開しなければならない
即値データをいう。
【0004】そして、このコンパイル方式においては、
コンパイラコード発生装置は、発生コードテーブルに示
された発生コードパタンから発生コードを取り出す。そ
して、発生コードのヘッダの種類にしたがって、プログ
ラム依存の変更内容を発生コード内に展開し、これを発
生コードとする。
【0005】ここで、発生コードのヘッダとは、発生コ
ード内に展開するプログラム依存の変更内容の種類と、
発生コード内に展開する位置を示すための一種のパラメ
ータである。また、プログラム依存の変更内容の発生コ
ード内の展開とは、この一種のパラメータをプログラム
依存の変更内容自体に置き換えることをいう。
【0006】なお、この方式では、与えられた中間言語
オペレータに対して、これに対応する発生コードパタン
の内容にかかわらず、プログラム依存の変更内容を発生
コード内に展開する形式は一定であることを前提として
いる。この方式により、異なるターゲットに対しても発
生コードテーブルの内容を変更するのみでコンパイラコ
ード発生装置を作成することができる。
【0007】また、従来のコンパイル方式の他の一例
が、文献2:「特開平4−014144号公報」に開示
されている。この文献2に開示の技術について、図14
を参照して、第2の従来例として簡単に説明する。図1
4は、第2の従来例の説明に供する機能ブロック図であ
る。このコンパイル方式を実現するためのコンパイラ1
00は、アーキテクチャ非依存の意味解析処理部分20
0、汎用中間言語最適化処理部分210、アーキテクチ
ャ依存処理部分220、中間言最適化処理部分230、
コード生成処理部240、中間言用スケルトントンテー
ブル120およびコード生成用スケルトンテーブル13
0を以て構成されている。
【0008】そして、このコンパイル方式では、次のよ
うにしてコンパイルを行う。まず、意味解析処理部分2
00において、入力された原始プログラム110の意味
解析処理を行って、アーキテクチャに非依存の汎用中間
言語140を出力する。次に、汎用中間言語最適化処理
部分210において、必要に応じて、汎用中間言に対す
る最適化のための変換を行って、その結果を最適化中間
言150として出力する。
【0009】そして、この第2の従来例では、アーキテ
クチャ依存処理部分220において、従来の意味解析に
関係するアーキテクチャに依存した処理を行う。この処
理に当たっては、中間言用スケルトンテーブル120を
用いることにより、最適化汎用中間言150から計算機
アーキテクチャに依存した中間言160を生成する。次
に、中間言最適化処理部分230において、中間言16
0について最適化を行って、最適化中間言170を出力
する。次に、コード生成処理部分240において、コー
ド生成用スケルトンテーブル130を用いることによ
り、最適化中間言170から機械語命令列などからなる
目的プログラム180を生成する。
【0010】このように、第2の従来例のコンパイル方
式では、意味解析処理から計算機アーキテクチャに依存
する処理を分離することによって、高性能なオブジェク
トの生成を実現している。
【0011】
【発明が解決しようとする課題】しかしながら、上述の
第1の従来例のコンパイル方式において、プログラム依
存の変更内容が展開される部分、すなわち、前述した一
種のパラメータの部分、を除き、発生コードテーブル
(変換テーブル)がターゲットの命令で記述されてい
る。このため、全ての発生コードパタンに対して、それ
ぞれターゲットの命令を用いた記述を与える必要があ
る。
【0012】その結果、この方式においては、複数のタ
ーゲットに個別に対応するコード生成装置を作成するた
めに、ターゲットの種類毎に個別の発生コードテーブル
をそれぞれ作成する必要がある。すなわち、ターゲット
を変更する都度、発生コードパタンを全て変更しなけれ
ばならない。その結果、多数の種類のターゲットにそれ
ぞれ対応する場合、発生コードテーブルの量が膨大な量
となるという問題がある。さらに、発生コードテーブル
の量が膨大となると、発生コードテーブルを作成するた
めに要する作業量が多くなるという問題も生じる。
【0013】また、ターゲットの種類を変更した場合、
発生コードパタンだけでなく、プログラム依存の変更内
容を発生コード内に展開する形式にも影響が及ぶ。この
影響は、ターゲットのアーキテクチャの相違によるもの
である。アーキテクチャの相違の具体例としては、整数
回繰り返されるループの上限あるいは下限の判定におい
て、あるターゲットでは等号を含む比較命令を用い、別
のターゲットでは等号不含の比較命令を用いる場合が挙
げられる。この場合、ループの上限値あるいは下限値と
なる即値データが、ターゲットの種類によって発生コー
ド内で異なる場合が生じる。
【0014】この点、この第1の従来例の方式では、プ
ログラム依存の変更内容を発生コードに展開する形式
が、ヘッダの種類に従うものに固定化されている。この
ため、第1の従来例の方式は、展開する形式が原始プロ
グラムの形式と同一であるような限定された種類のター
ゲット群に対してしか用いることができない。例えば、
この方式では、特定のメーカーの製造したマイクロプロ
セッサ用のプログラム(ターゲットプログラム)にはコ
ンパイルすることができるが、他のメーカーの製造した
マイクロプロセッサ用のプログラムにはコンパイルする
ことができない場合がある。したがって、第1の従来例
の方式では、ターゲットの種類が制限されるという問題
がある。
【0015】また、上述の第2の従来例のコンパイル方
式においては、意味解析処理からアーキテクチャ依存部
分を分離している。このため、アーキテクチャを変更す
る度に、中間言スケルトンテーブルを変更する必要があ
る。また、この方式においても、コード生成用スケルト
ンテーブル(変換テーブル)はターゲットの命令で記述
されている。このため、すべての発生コードパタンに対
して、それぞれターゲットの命令を用いた記述を与える
必要がある。
【0016】その結果、この方式においても、複数のタ
ーゲットに個別に対応するために、ターゲットの種類毎
に個別のコード生成用スケルトンテーブルをそれぞれ作
成する必要がある。すなわち、ターゲットを変更する都
度、コード生成用スケルトンテーブルを全て変更しなけ
ればならない。その結果、多数の種類のターゲットにそ
れぞれ対応する場合、コード生成用スケルトンテーブル
の量が膨大な量となるという問題がある。さらに、コー
ド生成用スケルトンテーブルの量が膨大となると、コー
ド生成用スケルトンテーブルを作成するために要する作
業量が多くなるという問題も生じる。
【0017】本発明は、上記の問題を解決すべくなされ
たものであり、ターゲットの種類の変更に伴う変換テー
ブルの変更量の低減を図ることができるコンパイル処理
技術の提供を目的とする。
【0018】
【課題を解決するための手段】この目的の達成を図るた
め、この出願にかかる発明者は、互いに異なる複数のタ
ーゲットの出力コード(ターゲット命令)に、ターゲッ
トどうしで同一もしくは類似の機能を表す出力コード
が、通常それぞれ含まれていることに着目した。そし
て、これらの互いに同一もしくは類似の機能を表す出力
コードを、中間言語の1つのコードに共に対応づけてお
けば、変換テーブルの少なくとも一部分を共通化できる
ので、ターゲットプログラムの変更に伴う変換テーブル
の変更量の低減を図ることができることに想到した。
【0019】そこで、この発明の可変ターゲットコンパ
イル処理方法(以下、単に「コンパイル処理方法」とも
称する。)によれば、入力プログラムの意味解析を行っ
て、該入力プログラムの入力コードからターゲットプロ
グラムの種類に非依存の上位中間言語用の上位コードを
生成し、さらに該上位コードからターゲットプログラム
用の出力コードを生成する可変ターゲットコンパイル処
理方法において、上位コードと下位中間言語用の下位コ
ードとを対応づけた第1変換テーブルを参照して、上位
コードから下位中間言語用の下位コードを生成する第1
変換処理と、下位コードと出力コードとを対応づけた第
2変換テーブルを参照して、下位コードから出力コード
を生成する第2変換処理とを含み、第2変換テーブル
は、下位コードと出力コードとを対応づけるに当たり、
互いに異なる複数の種類のターゲットプログラムどうし
で、互いに同一もしくは類似の機能を表す出力コード
を、1つの下位コードに共に対応づけてあることを特徴
とする。
【0020】また、この発明の可変ターゲットコンパイ
ル処理装置(以下、単に「コンパイル処理装置」若しく
は「コンパイラ」とも称する。)によれば、入力プログ
ラムの意味解析を行って、該入力プログラムの入力コー
ドからターゲットプログラムの種類に非依存の上位中間
言語用の上位コードを生成するフロントエンドと、該上
位コードからターゲットプログラム用の出力コードを生
成するコード生成部とを備えた可変ターゲットコンパイ
ル処理装置において、コード生成部は、上位コードと下
位中間言語用の下位コードとを対応づけた第1変換テー
ブルを参照して、上位コードから下位コードを生成する
第1変換部と、下位コードと出力コードとを対応づけた
第2変換テーブルを参照して、下位コードから出力コー
ドを生成する第2変換部とを備え、第2変換テーブル
は、下位中間言語のコードと出力コードとを対応づける
に当たり、互いに異なる複数の種類のターゲットプログ
ラムどうしで、互いに同一もしくは類似の機能を表す出
力コードを、1つの下位コードに共に対応づけてあるこ
とを特徴とする。
【0021】また、この発明の可変ターゲットコンパイ
ル用プログラムの記憶媒体(以下、単に「プログラム記
憶媒体」とも称する。)によれば、入力プログラムの意
味解析を行って、該入力プログラムの入力コードからタ
ーゲットプログラムの種類に非依存の上位中間言語用の
上位コードを生成し、さらに該上位コードからターゲッ
トプログラム用の出力コードを生成する処理をコンピュ
ータに実行させるための可変ターゲットコンパイル用プ
ログラムの記憶媒体であって、上位コードと下位中間言
語用の下位コードとを対応づけた第1変換テーブルを参
照して、上位コードから下位コードを生成する第1変換
処理と、下位コードと出力コードを対応づけるに当た
り、互いに異なる複数の種類のターゲットプログラムど
うしで、互いに同一もしくは類似の機能を表す出力コー
ドを、1つの下位コードに共に対応づけた第2変換テー
ブルを参照して、下位コードから出力コードを生成する
第2変換処理とを順次にコンピュータに実行させるため
の可変ターゲットコンパイル用プログラムを記憶したこ
とを特徴とする。
【0022】また、この発明の変換テーブルを記憶した
第1の記憶媒体(以下、単に「第1のテーブル記憶媒
体」とも称する。)によれば、入力プログラムの意味解
析を行って、該入力プログラムの入力コードからターゲ
ットプログラムの種類に非依存の上位中間言語用の上位
コードを生成し、さらに該上位コードからターゲットプ
ログラム用の出力コードを生成する処理に用いる変換テ
ーブルを記憶した記録媒体であって、変換テーブルは、
上位中間言語から下位中間言語を生成する際に参照する
ための第1変換テーブルと、下位中間言語から出力コー
ドを生成する際に参照するための第2変換テーブルとを
以て構成されており、第1変換テーブルは、上位コード
と下位コードとを対応づけてあり、第2変換テーブル
は、下位コードと出力コードとを対応づけるに当たり、
互いに異なる複数の種類のターゲットプログラムどうし
で、互いに同一もしくは類似の機能を表す出力コード
を、1つの下位コードに共に対応づけてあることを特徴
とする。
【0023】また、この発明の変換テーブルを記憶した
第2記憶媒体(以下、単に「第2のテーブル記憶媒体」
とも称する。)によれば、入力プログラムの意味解析を
行って、該入力プログラムの入力コードからターゲット
プログラムの種類に非依存の上位中間言語用の上位コー
ドを生成し、該上記コードから下位中間言語用のコード
を生成し、さらに該下位コードからターゲットプログラ
ム用の出力コードを生成する処理に用いる、下位コード
から出力コードを生成する際に参照するための変換テー
ブル(以下、「第2変換テーブル」とも称する。)を記
憶した記録媒体であって、変換テーブルは、下位コード
と出力コードとを対応づけるに当たり、互いに異なる複
数の種類のターゲットプログラムどうしで、互いに同一
もしくは類似の機能を表す出力コードを、1つの下位コ
ードに共に対応づけてあることを特徴とする。
【0024】このように、この発明のコンパイル処理方
法、コンパイル処理装置およびプログラム記憶媒体、第
1のテーブル記憶媒体および第2のテーブル記憶媒体に
よれば、いずれも、第2変換テーブルにおいて、互いに
異なる複数の種類のターゲットプログラムどうしで、互
いに同一もしくは類似の機能をそれぞれ表す出力コード
を、1つの下位コードに共に対応づけている。
【0025】したがって、この発明によれば、互いに異
なる複数のターゲット用の第2変換テーブルどうしで、
下位コードの少なくとも一部分を共通化することができ
る。このため、互いに異なる複数のターゲット用のそれ
ぞれの第1変換テーブルどうしでも、下位コードの少な
くとも一部分を共通化することができる。その結果、こ
の発明においては、複数の種類のターゲット用の第1変
換テーブルどうしの少なくとも一部分を共通化すること
ができると共に、複数種類のターゲット用に第2変換テ
ーブルどうしの少なくとも一部分を共通化することがで
きる。
【0026】このように、変換テーブルの少なくとも一
部分を共通化できるので、この発明においては、ターゲ
ットの種類を変更した場合に、第1および第2変換テー
ブルを全て変更する必要がない。例えば、ある種類のタ
ーゲット用の第1および第2変換テーブルそれぞれの一
部分を、他の種類のターゲット用の第1および第2変換
テーブル(併せて「変換テーブル」とも称する。)それ
ぞれの一部分として使用することができる。このため、
この発明によれば、ターゲットの種類の変更に伴う変換
テーブルの変更量の低減を図ることができる。また、変
換テーブルの変更量の低減を図ることができるので、変
換テーブルを変更するための作業量の低減を図ることが
できる。
【0027】また、この発明のコンパイル処理方法にお
いて、好ましくは、第1変換テーブルおよび第2変換テ
ーブルを、それぞれ記憶装置に格納するのが良い。この
記憶装置には、1つのターゲットに対応した第1および
第2変換テーブルを格納しても良いし、複数のターゲッ
トにそれぞれ対応した第1および第2変換テーブルを格
納しても良い。そのためには、この発明のコンパイル処
理装置において、好ましくは、第1変換テーブルを記憶
した第1記憶装置を備えるのが良い。また、好ましく
は、第2変換テーブルを記憶した第2記憶装置を備える
のが良い。
【0028】これら第1および第2記憶装置は、それぞ
れ例えばコード生成部の内部に設けても良いし、コード
生成部の外部に設けても良い。また、第1および第2記
憶装置は、例えば1つの記憶装置の互いに異なる2つの
記憶領域を以って構成しても良い。また、この発明のコ
ンパイル処理方法およびコンパイル処理装置において、
好ましくは、第1変換テーブルおよび第2変換テーブル
のうちの少なくとも一方を、外部記憶装置に格納するの
が良い。この外部記憶装置には、第1および第2変換テ
ーブルの両方を格納しても良いし、第1変換テーブルの
みを格納しても良いし、また、第2変換テーブルのみを
格納しても良い。
【0029】ところで、ターゲットの種類を変更した場
合、発生コードパタンだけでなく、プログラム依存の変
更内容を発生コード内に展開する形式も変更を要する場
合がある。その場合、発生コード内に展開すべき即値デ
ータは、ターゲット命令(オペレータ)やオペランドの
属性といったターゲット依存情報に基づいて変更して決
定する必要がある。そこで、この発明のコンパイル処理
方法、コンパイル処理装置、プログラム記憶媒体、第1
のテーブル記憶媒体および第2のテーブル記憶媒体にお
いて、好ましくは、第2変換テーブルは、下位コードと
して下位オペレータを含み、かつ、出力コードとして出
力オペレータと当該出力オペレータの出力オペランドと
を含むのが良い。
【0030】そして、この第2変換テーブルを用いて、
この発明のコンパイル処理方法およびプログラム記憶媒
体において、好ましくは、第2変換処理において、下位
オペレータを、第2変換テーブルにおいて対応づけられ
た出力オペレータおよびその出力オペランドに変換する
のが良い。そのために、この発明のコンパイル処理装置
において、好ましくは、コード生成部は、下位オペレー
タを、第2変換テーブルにおいて対応づけられた出力オ
ペレータおよびその出力オペランドに変換するのが良
い。
【0031】このように、第2変換テーブルに指定され
た出力オペランドへ変換すれば、ターゲットの種類を変
更した場合に、プログラム依存の変更内容をコード内に
展開する形式も変更することができる。その結果、ター
ゲットの種類によらずに、コンパイル処理を行なうこと
が可能となる。したがって、この発明によれば、ターゲ
ットの種類の限定を緩和することができる。さらに、こ
の発明の実施に当たり、第2変換テーブルは、下位オペ
レータの下位オペランドをさらに含むのが良い。
【0032】
【発明の実施の形態】以下、図面を参照して、この発明
の実施の形態について説明する。 <第1の実施の形態>第1の実施の形態では、この発明
の可変ターゲットコンパイル処理方法、可変ターゲット
コンパイル処理装置、可変ターゲットコンパイル用プロ
グラムの記憶媒体、および、変換テーブルを記憶した第
1および第2の記憶媒体の例について併せて説明する。
【0033】(構成について)先ず、図1および図2を
参照して、可変ターゲットコンパイル処理装置(コンパ
イル処理装置)の構成について説明する。
【0034】図1は、第1の実施の形態のコンパイル処
理装置の説明に供する機能ブロック図である。また、図
2は、コード生成部の説明に供する機能ブロック図であ
る。図1に示す構成では、このコンパイル処理装置10
は、入力プログラム12から第1のターゲットプログラ
ム用の出力コード14を生成する装置であって、フロン
トエンド16およびコード生成部18とを備えている。
このフロントエンド16は、入力プログラム12の意味
解析を行って、この入力プログラム12の入力コードか
らターゲットプログラムの種類に非依存の上位中間言語
用の上位コード20を生成する。なお、フロントエンド
16における意味解析の方法は、従来周知の方法を用い
ると良い。
【0035】また、コード生成部18は、上位コード2
0からターゲットプログラム用の出力コード14を生成
する。そして、図2に示す構成では、このコード生成部
18は、第1変換部22、第1記憶装置24、第2変換
部26および第2記憶装置28を備えている。この第1
変換部22は、第1変換テーブルを参照して、上位コー
ド20から下位中間言語用の下位コード30を生成す
る。この第1変換テーブルは、第1記憶装置24に格納
されている。そして、この第1変換テーブルでは、上位
中間言語用の上位コード20と下位中間言語用の下位コ
ード30とが対応づけられている。
【0036】ここで、図3に第1変換テーブルの一例を
示す。図3に要部を示す第1変換テーブル32では、テ
ーブルの左側に上位コード20を示し、その左側にその
上位コードに対応する下位コード30を示す。第1変換
テーブル32では、上位コード20の例として、「cm
p_and_br_LT」および「relop_EQ_
float」を示す。そして、「cmp_and_br
_LT」に対応する下位コード30として、「CMPL
T」および「BNEQ」を示す。
【0037】なお、上位コード20と下位コード30と
は1対1に対応する必要はなく、この第1変換テーブル
32のように、1つの上位コード20に複数の下位コー
ド30が対応しても良い。
【0038】以下、複数の下位コードを併せて下位コー
ドパタンと称する。また、「relop_EQ_flo
at」に対応する下位コード30として、「CMPFE
QU」および「BFF」を示す。
【0039】また、第2変換部26は、第2変換テーブ
ルを参照して、下位コード30から出力コード14を生
成する。この第2変換テーブルは、第2記憶装置26に
格納されている。そして、この第2変換テーブルでは、
下位中間言語用の下位コード30と第1のターゲットプ
ログラム用の出力コード14とが対応づけられている。
【0040】ここで、図4に第2変換テーブルの一例を
示す。図4に要部を示す第2変換テーブル34では、テ
ーブルの左側に下位コード30を示し、その左側にその
下位コード30に対応する出力コード14を示す。第2
変換テーブル34においては、出力コード14をターゲ
ット命令(オペレータ)36およびオペランド38との
組合せで表す。また、オペランド38は、第1〜第3の
3つのオペランド属性によって与えられる。
【0041】第2変換テーブル34では、下位コード3
0の例として、「CMPLT」、「CMPFEQU」、
「BNEQ」および「BFF」を示す。下位コード30
と出力コード14とは1対1に対応している。
【0042】具体的には、下位コード「CMPLT」
は、出力コード14のターゲット命令「slt」と対応
している。このターゲット命令「slt」は、次の機能
を表す。すなわち、「オペランド38として3個のレジ
スタを持つ命令であり、先ず、第1のレジスタの値と第
2のレジスタの値とを比較し、次に、第1のレジスタの
値が第2のレジスタの値よりも小さい場合に第3のレジ
スタに非ゼロの値を設定し、そうでない場合に第3のレ
ジスタにゼロの値を設定する。」という機能を表す。以
下、この機能を「less−than(レス・ザン)比
較および値設定」と称する。第2変換テーブル34で
は、この「slt」のオペランド38として、第1オペ
ランド属性を「reg」と表し、第2オペランド属性を
「reg」と表し、さらに、第3オペランド属性を「r
eg/imm」と表している。
【0043】なお、「reg」は「レジスタ」を表し、
「reg/imm」は「レジスタあるいは即値」を表
す。また、オペランドの属性は、即値についてはプログ
ラムの変更内容が対応するオペランドであることを意味
する。
【0044】また、下位コード「CMPFEQU」は、
出力コード14のターゲット命令「c.eq.s」と対
応している。このターゲット命令「c.eq.s」は、
次の機能を表す。すなわち、「オペランドとして2個の
浮動小数用のレジスタを持つ命令であり、2個の浮動小
数用のレジスタの値が互いに等しい場合に浮動小数用フ
ラグを設定し、そうでない場合に浮動小数用フラグを設
定しない。」という機能を表す。第2変換テーブル34
では、この「c.eq.s」のオペランド38として、
第1オペランド属性を「none」と表記し、第2オペ
ランド属性を「freg」と表記し、さらに、第3オペ
ランド属性を「freg」と表記している。
【0045】なお、「none」はオペランドがないこ
とを表し、「freg」は、「浮動小数レジスタ」を表
す。
【0046】また、下位コード「BNEQ」は、出力コ
ード14のターゲット命令「bne」と対応している。
このターゲット命令「bne」は、次の機能を表す。す
なわち、「オペランドとして2個のレジスタと1個のラ
ベルを持つ命令であり、2個のレジスタの値が互いに等
しい場合にラベルの示すアドレスに制御を移す。」とい
う機能を表す。第2変換テーブル34では、この「bn
e」のオペランド38として、第1オペランド属性を
「lab」と表記し、第2オペランド属性を「reg」
と表記し、さらに、第3オペランド属性を「reg」と
表記している。なお、「lab」は「ラベル」を表す。
【0047】また、下位コード「BFF」は、出力コー
ド14のターゲット命令「bc1f」と対応している。
このターゲット命令「bc1f」は、次の機能を表す。
すなわち、「オペランドとして1個のラベルを持つ命令
であり、浮動小数用フラグが設定されていない場合に、
ラベルの示すアドレスに制御を移す。」という機能を表
す。第2変換テーブル34では、この「bc1f」のオ
ペランド38として、第1オペランド属性を「lab」
と表し、第2オペランド属性を「none」と表記し、
さらに第3オペランド属性を「none」と表記してい
る。
【0048】なお、第1および第2の変換テーブル32
および34は、いずれも、例えば、FD(フロッピー・
ディスク)やハードディスクをはじめとする磁気記憶媒
体、光磁気記憶媒体、CD−ROM(シーディー・ロ
ム)をはじめとする光学的記録媒体、その他の任意好適
な記録媒体として提供することができる。
【0049】そして、第2変換テーブル34は、下位中
間言語のコードと出力コードとを対応づけるに当たり、
互いに異なる複数の種類のターゲットプログラムどうし
で、互いに同一もしくは類似の機能を表す出力コード
を、1つの下位コードに共に対応づけてある。この対応
づけを説明するために、図5に、第2のターゲットプロ
グラム用の第2変換テーブル34aを示す。
【0050】第2のターゲットプログラム用の第2変換
テーブル34aでも、下位コード30として、第1のタ
ーゲットプログラム用の第2変換テーブル34での下位
コード「CMPLT」、「CMPFEQU」、「BNE
Q」および「BFF」を使用する。そして、これらの下
位コード30を、図4に示した第2変換テーブル34に
おける各出力コード14と同一若しくは類似の機能を表
す、第2ターゲットプログラム用の出力コードと対応づ
けている。
【0051】具体的には、第2変換テーブル34aにお
いて、下位コード「CMPLT」は、「slt」と本質
的に同一の「less−than比較および設定」の機
能を表す、出力コードのターゲット命令「lt.w」と
対応している。そして、第2変換テーブル34では、こ
の「lt.w」のオペランド38として、第1オペラン
ド属性を「reg/imm」と表記し、第2オペランド
属性を「reg」と表記し、第3オペランド属性を「r
eg」と表記している。
【0052】また、下位コード「CMPFEQU」は、
「c.eq.s」と本質的に同一の機能を表す出力コー
ド「cmpeq.s」と対応している。そして、第2変
換テーブル34aでは、この「cmpeq.s」のオペ
ランド38として、第1オペランド属性を「none」
と表記し、第2オペランド属性を「freg」と表記
し、第3オペランド属性を「freg」と表記してい
る。
【0053】また、下位コード「BNEQ」は、「bn
e」と本質的に同一の機能を表す出力コード「jne」
と対応している。そして、第2変換テーブル34aで
は、この「jne」のオペランド38として、第1オペ
ランド属性を「reg」と表記し、第2オペランド属性
を「reg」と表記し、第3オペランド属性を「la
b」と表記している。
【0054】また、下位コード「BFF」は、「bc1
f」と本質的に同一の機能を表す「jff」と対応して
いる。そして、第2変換テーブル34aでは、この「j
ff」のオペランドと38して、第1オペランド属性を
「lab」と表記し、第2オペランド属性を「non
e」と表記し、第3オペランド属性を「none」と表
記している。
【0055】したがって、共通化されている下位コード
については、第1変換テーブルにおいても、その下位コ
ードを指定している部分を、互いに異なる複数のターゲ
ットについて共通化することができる。このため、共通
化された分だけ、ターゲットの変更に伴う変換テーブル
の変更量の低減を図ることができる。
【0056】(動作について)次に、第1の実施の形態
のコンパイル処理装置の動作、すなわち、可変ターゲッ
トコンパイル処理方法(以下、単に「コンパイル処理」
とも称する。)の例について説明する。
【0057】このコンパイル処理は、可変ターゲットコ
ンパイル処理用のプログラムをコンピュータに読み取ら
せ、このコンピュータがプログラムの指示に従って処理
を実行することにより実現される。また、そのプログラ
ムを記憶した記憶媒体としては、例えば、FD(フロッ
ピー・ディスク)やハードディスクをはじめとする磁気
記憶媒体、光磁気記憶媒体、CD−ROM(シーディー
・ロム)をはじめとする光学的記録媒体、その他の任意
好適な記録媒体を用いることができる。また、記憶媒体
に記憶されているプログラムをコンピュータに読み取ら
せるに当たっては、例えば、CD−ROMをコンピュー
タに装着して読み取らせても良いし、例えば、プログラ
ムを通信回線を介して外部からコンピュータに転送して
も良い。
【0058】先ず、図6を参照して、第1の実施の形態
のコンパイラのコンパイル処理の全般について説明す
る。図6は、第1の実施の形態のコンパイル処理の全般
の説明に供するフローチャートである。
【0059】このコンパイル処理に当たっては、先ず、
図1に示したコンパイラ10のフロントエンド16に入
力プログラム12が入力されると、フロントエンド16
は入力プログラムの意味解析を行う。意味解析の方法
は、従来周知の方法を用いることができる。そして、フ
ロントエンド16は、入力プログラム12の入力コード
から上位中間言語用の上位コード20を生成する。この
上位コード20は、ターゲットプログラムの種類に非依
存とする(図6のS1)。そして、フロントエンド16
で生成された上位コード20は、コード生成部18へ転
送される。次に、図2に示したコード生成部18の第1
変換部22に上位コード20が入力されると、第1変換
部22は第1変換処理を行なう。第1変換処理では、上
位中間言語用の上位コード20から下位中間言語用の下
位コード30を生成する(図6のS2)。
【0060】ここで、図7を参照して、第1変換処理に
ついて説明する。図7は、第1変換処理の説明に供する
フローチャートである。第1変換処理においては、第1
変換部22に上位コード20が入力されると(図7のS
4)、第1変換部22は、この上位コード20を、第1
記憶部24に格納されている第1変換テーブル32と照
合する(図7のS5)。ここでは、例えば、上位コード
20として「cmp_and_br_LT」が第1変換
部22に入力されたとする。照合に当たっては、第1変
換テーブル32の上位コードを1つづつ読出してきて、
入力された上位コードと一致するか否かを判定する(図
7のS6)。
【0061】そして、一致しない場合は、上位コードが
一致するまで順次に次の上位コードを読出す。また、一
致した場合には、第1変換テーブルにおいてその一致し
た上位コードに対応する下位コード30を、第1記憶部
24から読出す。ここでは、上位コード20「cmp_
and_br_LT」に対応する下位コード「CMPL
T」および「BNEQ」を読出す(図7のS7)。この
ようにして、第1変換部22は、上位コード20から下
位コードを生成する。そして、第1変換部22で生成さ
れた下位コード30は、第2変換部26へ転送される。
次に、図2に示したコード生成部18の第2変換部26
に下位コード30が入力されると、第2変換部26は第
2変換処理を行なう。第2変換処理では、下位中間言語
用の下位コード30からターゲットプログラム用の出力
コード14を生成する(図6のS3)。
【0062】ここで、図8を参照して、第2変換処理に
ついて説明する。図8は、第2変換処理の説明に供する
フローチャートである。ここでは、図4に示した第2変
換テーブル34を参照して、第1ターゲット用の出力コ
ード14を生成する例について説明する。第2変換処理
においては、第2変換部26に下位コード30が入力さ
れると、第1変換部26は、この下位コード30を、第
2記憶部28に格納されている第2変換テーブル34と
照合する(図8のS8)。ここでは、例えば、下位コー
ド30として「CMPLT」が第2変換部26に入力さ
れたとする。照合に当たっては、第2変換テーブル34
の下位コードを1つづつ読出してきて、入力された下位
コードと一致するか否かを判定する(図8のS9)。
【0063】そして、一致しない場合は、下位コードが
一致するまで順次に次の下位コードを読出す。また、一
致した場合には、第2変換テーブル34においてその一
致した下位コードに対応する出力コード14を、第2記
憶部28から読出す。ここでは、下位コード「CMPL
T」に対応する出力コード14として、ターゲット命令
「slt」およびそのオペランド「reg」、「re
g」、「reg/imm」を読出す(図8のS10)。
このようにして、第2変換部26は、下位コード30か
ら出力コード14を生成する。そして、コンパイラ10
は、この出力コード14を出力する。
【0064】<第2の実施の形態>次に、図9を参照し
て、この発明の第2の実施の形態について説明する。図
9は、第2の実施の形態におけるコード生成部18aの
説明に供する機能ブロック図である。第2の実施の形態
では、第1変換テーブル32および第2変換テーブル3
4を外部の記憶装置に格納してある。すなわち、第1変
換テーブル32は、第1外部記憶装置40に格納されて
いる。また、第2変換テーブル34は、第2外部記憶装
置42に格納されている。
【0065】ここで、変換テーブルを外部の記憶装置に
格納するとは、例えば、コード生成部を動作させるため
のプログラムとは個別のプログラムまたはコンピュータ
上の個別のファイルとして変換テーブルのデータを設け
る場合を含む。また、第1変換部22と第1外部記憶装
置40とは、例えば通信回線で接続しても良い。また、
第2変換部26と第2外部記憶装置42とも、例えば通
信回線で接続しても良い。なお、第2の実施の形態にお
いては、第1および第2変換テーブル32および34が
それぞれ外部の記憶装置に格納されている点を除いて
は、上述の第1の実施の形態における構成および動作と
同じであるので、その詳細な説明を省略する。
【0066】<第3の実施の形態>第3の実施の形態に
おいては、上位コードとして「ADD_M_M mem
1,mem2,reg$」を変換して出力コードを生成
する例について説明する。この上位コードの上位コード
命令「ADD_M_M」は、メモリ上にある2個のデー
タをレジスタにロードして加算を行なう機能表す。そし
て、この上位コード命令には、オペランドとして「me
m1」、「mem2」および「reg$」が与えられ
る。この「mem1」は、第1のメモリ上にあるデータ
を表す。また、「mem2」は、第2のメモリ上にある
データを表す。また、「reg$」は、結果を格納する
レジスタを表す。
【0067】そして、この上位コードを例えば、ターゲ
ットA用の出力コードで表すと、「ld.w mem
1,treg1」、「ld.w mem2,treg
2」および「add treg1,treg2,reg
$」となる。ただし、「ld.w」は、ワードサイズデ
ータのロード命令を表し、「treg1」および「tr
eg2」は、中間結果を一時的に格納するためのレジス
タを表し、「add」は加算命令を表す。また、この上
位コードを例えば、ターゲットB用の出力コードで表す
と、「lw treg1,mem1」、「lw tre
g2,mem2」および「addreg$,treg
1,treg2」となる。ただし、「lw」は、ワード
サイズデータのロード命令を表す。このように、1つの
上位コードに対応する出力コートは、ターゲット毎に通
常異なる。このため、例えば、上述した第1の従来例に
おいては、ターゲットA用の変換テーブルをターゲット
B用の変換テーブルとを全く個別に作成する必要があっ
た。
【0068】これに対して、この発明によれば、互いに
異なる複数の種類のターゲットプログラムどうしで、互
いに同一もしくは類似の機能をそれぞれ表す出力コード
を、1つの下位コードに共通化して対応づけている。そ
の結果、この発明によれば、共通化されている下位コー
ドについては、第1変換テーブルにおいても、その下位
コードを指定している部分を、互いに異なる複数のター
ゲットについて共通化することができる。以下、この対
応づけの具体例として、第1および第2変換テーブルの
例について説明する。
【0069】先ず、図10を参照して、第1変換テーブ
ルの例について説明する。図10に示す第1変換テーブ
ル44においては、上位コードと下位コードとを対応づ
けている。そして、この上位コードは、上位コード命令
(上位オペレータ)とそのオペランドで表されている。
このオペランドの属性は、第1オペランド、第2オペラ
ンドおよび第3オペランドの3つのオペランドで与えら
れる。また、下位コードは、下位コード命令とそのオペ
ランドで表されている。このオペランドの属性は、第1
オペランド、第2オペランドおよび第3オペランドの3
つのオペランドで与えられる。
【0070】そして、第1変換テーブル44において
は、上位コード命令の例として「ADD M M」を示
す。この上位コード命令には、オペランドとして「me
m1」、「mem2」および「reg$」が与えられ
る。また、下位コードは、下位コード命令(下位オペレ
ータ)とそのオペランドで表されている。このオペラン
ドの属性は、第1オペランド、第2オペランドおよび第
3オペランドの3つのオペランドで与えられる。そし
て、第1変換テーブル44においては、下位コードとし
て「LDW mem1,treg1」、「LDW me
m2,treg2」および「ADD treg1,tr
eg2,reg$」を示す。
【0071】そして、この第1変換テーブルは、以下に
説明するように、ターゲットAおよびターゲットBにつ
いて共用することができる。次に、図11の(A)を参
照して、ターゲットA用の第2変換テーブル46の例に
ついて説明する。図11の(A)に示す第2変換テーブ
ル46においては、下位コードと出力コードとを対応づ
けている。そして、この下位コードは、下位コード命令
(下位オペレータ)とそのオペランドで表されている。
このオペランドの属性は、第1オペランド、第2オペラ
ンドおよび第3オペランドの3つのオペランドで与えら
れる。また、出力コードは、出力コード命令(出力オペ
レータ)とそのオペランドで表されている。このオペラ
ンドの属性は、第1オペランド、第2オペランドおよび
第3オペランドの3つのオペランドで与えられる。そし
て、第2変換テーブル46においては、下位コードとし
て、「LDW mem,reg」が示されていおり、こ
の下位コードに対応するターゲットA用の出力コードと
して、「ld w reg,mem」が示されている。
さらに、下位コードとして「ADD reg1,reg
2,reg3」が示されており、この下位コードに対応
するターゲットA用の出力コードして、「add re
g1,reg2,reg3」が示されている。
【0072】次に、図11の(B)を参照して、ターゲ
ットB用の第2変換テーブル46aの例について説明す
る。図11の(B)に示す第2変換テーブル46aにお
いては、下位コードとして、「LDW mem,re
g」が示されていおり、この下位コードに対応するター
ゲットB用の出力コードとして、「lw reg,me
m」が示されている。さらに、下位コードとして「AD
D reg1,reg2,reg3」が示されており、
この下位コードに対応するターゲットB用の出力コード
して、「add reg3,reg1,reg2」が示
されている。
【0073】図11の(A)および(B)に示すよう
に、これらの第2変換テーブル46および46aにおい
ては、下位コードを共通化している。したがって、図1
0に示した第1変換テーブル44は、ターゲットAおよ
びターゲットBの両ターゲットについて使用することが
できる。このため、例えばターゲットAをターゲットB
に変更した場合に、第1変換テーブルは変更する必要が
ない。
【0074】<第4の実施の形態>第4の実施の形態で
は、下位コードから出力コードを生成する際に、ターゲ
ットプログラム依存の変更内容を発生コード内へ展開す
る他の例についてさらに説明する。ここで、図12の
(A)に、ターゲットAに対する第2変換テーブル48
の例を示し、図12の(B)に、ターゲットBに対する
第2変換テーブル48aの例を示す。これらの第2変換
テーブル48および48のいずれにおいても、共通の下
位コードとして下位コード命令「ANDI」およびその
3つのオペランド「imm」、「reg1」および「r
eg2」が示されている。なお、「imm」は整数のイ
ミディエート値を表す。そして、この実施の形態では、
第2変換テーブル48および48aのいずれに用いて
も、出力コードの出力コード命令として、「andi」
が与えられている。
【0075】しかし、ターゲットA用の第2変換テーブ
ル48においては、「andi」のオペランドとして、
下位コードのオペランドと同一の「imm」、「reg
1」および「reg2」が与えられているのに対して、
ターゲットB用の第2変換テーブル48aにおいては、
オペランドとして「reg2」、「posimm」およ
び「reg1」が与えられている。なお、「posim
m」は、正数のイミディエート値を表す。すなわち、タ
ーゲットBにおいては、出力コードの仕様上の制約(規
則)があり、整数イミディエート値に負数を書くことが
できない。
【0076】このような場合、オペランドを指定しなけ
れば、ターゲットB用の出力コードにおいて負数のイミ
ディエートが書込まれる場合が発生するので、コンパイ
ル処理を正しく行なうことが困難となる。この点、この
発明では、オペランドで「posimm」を指定するこ
とにより、コンパイル処理を正しく行なうことができ
る。
【0077】上述した実施の形態においては、この発明
を特定の条件で構成した例について説明したが、この発
明は、種々の変更を行うことができる。例えば、上述し
た実施の形態においては、2つのターゲットについて第
2変換テーブルを作成した例について説明したが、この
発明では、ターゲットの種類は2つに限定されない。
【0078】
【発明の効果】以上、詳細に説明した様に、この発明に
よれば、第2変換テーブルにおいて、互いに異なる複数
の種類のターゲットプログラムどうしで、互いに同一も
しくは類似の機能をそれぞれ表す出力コードを、1つの
下位コードに共に対応づけている。したがって、この発
明によれば、互いに異なる複数のターゲット用の第2変
換テーブルどうしで、下位コードの少なくとも一部分を
共通化することができる。このため、互いに異なる複数
のターゲット用のそれぞれの第1変換テーブルどうしで
も、下位コードの少なくとも一部分を共通化することが
できる。その結果、この発明においては、複数の種類の
ターゲット用の第1変換テーブルどうしの少なくとも一
部分を共通化することができると共に、複数種類のター
ゲット用に第2変換テーブルどうしの少なくとも一部分
を共通化することができる。このように、変換テーブル
どうしの少なくとも一部分を共通化することができるの
で、この発明においては、ターゲットの種類を変更した
場合に、第1および第2変換テーブルを全て変更する必
要がない。このため、この発明によれば、ターゲットの
種類の変更に伴う変換テーブルの変更量の低減を図るこ
とができる。また、変換テーブルの変更量の低減を図る
ことができるので、変換テーブルを変更するための作業
量の低減を図ることができる。また、この発明におい
て、第2変換テーブルに指定された出力オペランドに下
位オペランドを変換すれば、ターゲットの種類を変更し
た場合に、プログラム依存の変更内容をコード内に展開
する形式も変更することができる。その結果、ターゲッ
トの種類によらずに、コンパイル処理を行なうことが可
能となる。したがって、ターゲットの種類の限定を緩和
することができる。
【図面の簡単な説明】
【図1】第1の実施の形態のコンパイラの説明に供する
機能ブロック図である。
【図2】第1の実施の形態におけるコード生成部の説明
に供する機能ブロック図である。
【図3】第1の実施の形態における第1変換テーブルの
例である。
【図4】第1の実施の形態における第1のターゲット用
の第2変換テーブルの例である。
【図5】第1の実施の形態における第2のターゲット用
の第2変換テーブルの例である。
【図6】第1の実施の形態におけるコンパイル処理の説
明に供するフローチャートである。
【図7】第1の実施の形態における第1変換処理の説明
に供するフローチャートである。
【図8】第1の実施の形態における第2変換処理の説明
に供するフローチャートである。
【図9】第2の実施の形態におけるコード生成部の説明
に供する機能ブロック図である。
【図10】第3の実施の形態における第1変換テーブル
の例である。
【図11】第3の実施の形態におけるターゲットA用の
第2変換テーブルの例である。
【図12】第3の実施の形態におけるターゲットB用の
第2変換テーブルの例である。
【図13】第1の従来例の説明に供する図である。
【図14】第2の従来例の説明に供する図である。
【符号の説明】
10 可変ターゲットコンパイル処理装置(コンパイ
ラ) 12 入力プログラム 14 出力コード 16 フロントエンド 18、18a コード生成部 20 上位コード 22 第1変換部 24 第1記憶部 26 第2変換部 28 第2記憶部 30 下位コード 32、44 第1変換テーブル 34、34a、46、46a、48、48a 第2変換
テーブル 36 ターゲット命令(オペレータ) 38 オペランド 40 第1外部記憶装置 42 第2外部記憶装置 100 コンパイラ 110 原始プログラム 120 中間言用スケルトンテーブル 130 コード生成用スケルトンテーブル 140 汎用中間言 150 最適化汎用中間言 160 中間言 170 最適化中間言 180 目的プログラム 200 意味解析処理部 210 汎用中間言最適化処理部 220 アーキテクチャ依存処理部 230 中間言最適化処理部 240 コード生成処理部

Claims (23)

    【特許請求の範囲】
  1. 【請求項1】 入力プログラムの意味解析を行って、該
    入力プログラムの入力コードからターゲットプログラム
    の種類に非依存の上位中間言語用の上位コードを生成
    し、さらに該上位コードからターゲットプログラム用の
    出力コードを生成する可変ターゲットコンパイル処理方
    法において、 前記上位コードと下位中間言語用の下位コードとを対応
    づけた第1変換テーブルを参照して、前記上位コードか
    ら前記下位コードを生成する第1変換処理と、 前記下位コードと前記出力コードとを対応づけた第2変
    換テーブルを参照して、前記下位コードから前記出力コ
    ードを生成する第2変換処理とを含み、 前記第2変換テーブルは、前記下位コードと前記出力コ
    ードとを対応づけるに当たり、互いに異なる複数の種類
    のターゲットプログラムどうしで、互いに同一もしくは
    類似の機能を表す出力コードを、1つの前記下位コード
    に共に対応づけてあることを特徴とする可変ターゲット
    コンパイル処理方法。
  2. 【請求項2】 請求項1に記載の可変ターゲットコンパ
    イル処理方法において、 前記第1変換テーブルおよび前記第2変換テーブルを、
    それぞれ記憶装置に格納したことを特徴とする可変ター
    ゲットコンパイル処理方法。
  3. 【請求項3】 請求項1に記載の可変ターゲットコンパ
    イル処理方法において、 前記第1変換テーブルおよび前記第2変換テーブルのう
    ちの少なくとも一方を、外部記憶装置に格納したことを
    特徴とする可変ターゲットコンパイル処理方法。
  4. 【請求項4】 請求項1に記載の可変ターゲットコンパ
    イル処理方法において、 前記第2変換テーブルは、前記下位コードとして下位オ
    ペレータを含み、かつ、前記出力コードとして前記出力
    オペレータと当該出力オペレータの出力オペランドとを
    含むことを特徴とする可変ターゲットコンパイル処理方
    法。
  5. 【請求項5】 請求項4に記載の可変ターゲットコンパ
    イル処理方法において、 前記第2変換テーブルは、前
    記下位コードとして、前記下位オペレータの下位オペラ
    ンドをさらに含むことを特徴とする可変ターゲットコン
    パイル処理方法。
  6. 【請求項6】 請求項4に記載の可変ターゲットコンパ
    イル処理方法において、 前記第2変換処理において、前記下位オペレータを、前
    記第2変換テーブルにおいて対応づけられた前記出力オ
    ペレータおよび出力オペランドに変換することを特徴と
    する可変ターゲットコンパイル処理方法。
  7. 【請求項7】 入力プログラムの意味解析を行って、該
    入力プログラムの入力コードからターゲットプログラム
    の種類に非依存の上位中間言語用の上位コードを生成す
    るフロントエンドと、該上位コードからターゲットプロ
    グラム用の出力コードを生成するコード生成部とを備え
    た可変ターゲットコンパイル処理装置において、 前記コード生成部は、 前記上位コードと下位中間言語用の下位コードとを対応
    づけた第1変換テーブルを参照して、前記上位コードか
    ら下位中間言語用の下位コードを生成する第1変換部
    と、 前記下位コードと前記出力コードとを対応づけた第2変
    換テーブルを参照して、前記下位コードから前記出力コ
    ードを生成する第2変換部とを備え、 前記第2変換テーブルは、前記下位中間言語のコードと
    前記出力コードとを対応づけるに当たり、互いに異なる
    複数の種類のターゲットプログラムどうしで、互いに同
    一もしくは類似の機能を表す前記出力コードを、1つの
    前記下位コードに共に対応づけてあることを特徴とする
    可変ターゲットコンパイル処理装置。
  8. 【請求項8】 請求項7に記載の可変ターゲットコンパ
    イル処理装置において、 前記第1変換テーブルを記憶した第1記憶装置を備えた
    ことを特徴とする可変ターゲットコンパイル処理装置。
  9. 【請求項9】 請求項7に記載の可変ターゲットコンパ
    イル処理装置において、 前記第2変換テーブルを記憶した第2記憶装置を備えた
    ことを特徴とする可変ターゲットコンパイル処理装置。
  10. 【請求項10】 請求項7に記載の可変ターゲットコン
    パイル処理装置において、 前記第1変換テーブルおよび前記第2変換テーブルのう
    ちの少なくとも一方を外部記憶装置に格納したことを特
    徴とする可変ターゲットコンパイル処理装置。
  11. 【請求項11】 請求項7に記載の可変ターゲットコン
    パイル処理装置において、 前記第2変換テーブルは、前記下位コードとして下位オ
    ペレータを含み、かつ、前記出力コードとして出力オペ
    レータと当該出力オペレータの出力オペランドとを含む
    ことを特徴とする可変ターゲットコンパイル処理装置。
  12. 【請求項12】 請求項11に記載の可変ターゲットコ
    ンパイル処理装置において、 前記第2変換テーブルは、前記下位コードとして、前記
    下位オペレータの下位オペランドをさらに含むことを特
    徴とする可変ターゲットコンパイル処理装置。
  13. 【請求項13】 請求項11に記載の可変ターゲットコ
    ンパイル処理装置において、 前記コード生成部は、前記下位オペレータを、前記第2
    変換テーブルにおいて対応づけられた前記出力オペレー
    タおよび出力オペランドに変換する機能を有することを
    特徴とする可変ターゲットコンパイル処理装置。
  14. 【請求項14】 入力プログラムの意味解析を行って、
    該入力プログラムの入力コードからターゲットプログラ
    ムの種類に非依存の上位中間言語用の上位コードを生成
    し、さらに該上位コードからターゲットプログラム用の
    出力コードを生成する処理をコンピュータに実行させる
    ための可変ターゲットコンパイル用プログラムの記憶媒
    体であって、 前記上位コードと下位中間言語用の下位コードとを対応
    づけた第1変換テーブルを参照して、前記上位コードか
    ら下位コードを生成する第1変換処理と、 前記下位コードと前記出力コードを対応づけるに当た
    り、互いに異なる複数の種類の前記ターゲットプログラ
    ムどうしで、互いに同一もしくは類似の機能を表す出力
    コードを、1つの前記下位コードに共に対応づけた第2
    変換テーブルを参照して、前記下位コードから前記出力
    コードを生成する第2変換処理とを順次にコンピュータ
    に実行させるための可変ターゲットコンパイル用プログ
    ラムを記憶したことを特徴とする可変ターゲットコンパ
    イル用プログラムの記憶媒体。
  15. 【請求項15】 請求項14に記載の可変ターゲットコ
    ンパイル用プログラムの記憶媒体において、 前記第2変換テーブルは、前記下位コードとして下位オ
    ペレータを含み、前記出力コードとして出力オペレータ
    と当該出力オペレータの出力オペランドとを含むことを
    特徴とする可変ターゲットコンパイル用プログラムの記
    憶媒体。
  16. 【請求項16】 請求項15に記載の可変ターゲットコ
    ンパイル用プログラムの記憶媒体において、 前記第2変換テーブルは、前記下位コードとして、前記
    下位オペレータの下位オペランドをさらに含むことを特
    徴とする可変ターゲットコンパイル用プログラムの記憶
    媒体。
  17. 【請求項17】 請求項15に記載の可変ターゲットコ
    ンパイル用プログラムの記憶媒体において、 前記第2変換処理において、前記下位オペレータを、そ
    れぞれ前記第2変換テーブルにおいて対応づけられた前
    記出力オペレータおよび前記出力オペランドに変換する
    ことを特徴とする可変ターゲットコンパイル用プログラ
    ムの記憶媒体。
  18. 【請求項18】 入力プログラムの意味解析を行って、
    該入力プログラムの入力コードからターゲットプログラ
    ムの種類に非依存の上位中間言語用の上位コードを生成
    し、さらに該上位コードからターゲットプログラム用の
    出力コードを生成する処理に用いる変換テーブルを記憶
    した記録媒体であって、 前記変換テーブルは、前記上位コードから下位中間言語
    用の下位コードを生成する際に参照するための第1変換
    テーブルと、前記下位コードから前記出力コードを生成
    する際に参照するための第2変換テーブルとを以て構成
    されており、 前記第1変換テーブルは、前記上位コードと前記下位コ
    ードとを対応づけてあり、 前記第2変換テーブルは、前記下位コードと前記出力コ
    ードとを対応づけるに当たり、互いに異なる複数の種類
    のターゲットプログラムどうしで、互いに同一もしくは
    類似の機能を表す出力コードを、1つの下位コードに共
    に対応づけてあることを特徴とする変換テーブルの記憶
    媒体。
  19. 【請求項19】 請求項18に記載の変換テーブルの記
    憶媒体において、 前記第2変換テーブルは、前記下位コードとして下位オ
    ペレータを含み、かつ、前記出力コードとして前記出力
    オペレータと当該出力オペレータの出力オペランドとを
    含むことを特徴とする変換テーブルの記憶媒体。
  20. 【請求項20】 請求項19に記載の変換テーブルの記
    憶媒体において、前記第2変換テーブルは、前記下位コ
    ードとして前記下位オペレータの下位オペランドをさら
    に含むことを特徴とする変換テーブルの記憶媒体。
  21. 【請求項21】 入力プログラムの意味解析を行って、
    該入力プログラムの入力コードからターゲットプログラ
    ムに非依存の上位中間言語用の上位コードを生成し、該
    上位コードから下位中間言語用のコードを生成し、さら
    に該下位コードからターゲットプログラム用の出力コー
    ドを生成する処理に用いる、前記下位コードから前記出
    力コードを生成する際に参照するための変換テーブルを
    記憶した記録媒体であって、 前記第変換テーブルは、前記下位コードと前記出力コー
    ドとを対応づけるに当たり、互いに異なる複数の種類の
    ターゲットプログラムどうしで、互いに同一もしくは類
    似の機能を表す出力コードを、1つの下位コードに共に
    対応づけてあることを特徴とする変換テーブルの記憶媒
    体。
  22. 【請求項22】 請求項21に記載の変換テーブルの記
    憶媒体において、 前記第2変換テーブルは、前記下位コードとして下位オ
    ペレータを含み、かつ、前記出力コードとして前記出力
    オペレータと当該出力オペレータの出力オペランドとを
    含むことを特徴とする変換テーブルの記憶媒体。
  23. 【請求項23】 請求項21に記載の変換テーブルの記
    憶媒体において、 前記第2変換テーブルは、前記下位コードとして前記下
    位オペレータの下位オペランドをさらに含むことを特徴
    とする変換テーブルの記憶媒体。
JP08908798A 1998-04-01 1998-04-01 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体 Expired - Fee Related JP3246438B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP08908798A JP3246438B2 (ja) 1998-04-01 1998-04-01 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体
EP99106704A EP0947923A3 (en) 1998-04-01 1999-04-01 Compiling method, compiling device, recording medium with compiling program recorded therein, and recording medium with conversion table used in compiling recorded therein, for generating target program in accordance with target processor type
US09/285,039 US6305013B1 (en) 1998-04-01 1999-04-01 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

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP08908798A JP3246438B2 (ja) 1998-04-01 1998-04-01 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体

Publications (2)

Publication Number Publication Date
JPH11288375A true JPH11288375A (ja) 1999-10-19
JP3246438B2 JP3246438B2 (ja) 2002-01-15

Family

ID=13961099

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08908798A Expired - Fee Related JP3246438B2 (ja) 1998-04-01 1998-04-01 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体

Country Status (3)

Country Link
US (1) US6305013B1 (ja)
EP (1) EP0947923A3 (ja)
JP (1) JP3246438B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010205068A (ja) * 2009-03-04 2010-09-16 Hitachi Information Systems Ltd ソフトウェア資源移行システム及び同移行方法
JP2018120285A (ja) * 2017-01-23 2018-08-02 茂 長澤 プログラムの開発を支援するためのシステム、そのシステムにおいて実行される方法およびプログラム

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2812479B1 (fr) * 2000-07-28 2003-01-31 Airsys Atm S A Generateur universel de code informatique
AU2001278329A1 (en) * 2000-11-20 2002-05-27 Zucotto Wireless, Inc. System and methods providing runtime byte code simplification for platform independent languages
US7278137B1 (en) * 2001-12-26 2007-10-02 Arc International Methods and apparatus for compiling instructions for a data processor
JP3801545B2 (ja) 2002-08-02 2006-07-26 松下電器産業株式会社 コンパイラ用プログラム、コンパイラ装置及びコンパイル方法
US7657881B2 (en) * 2004-12-21 2010-02-02 Intel Corporation Using optimized libraries to improve performance of deployed application code at runtime
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
KR101612594B1 (ko) 2011-01-27 2016-04-14 소프트 머신즈, 인크. 프로세서의 변환 룩 어사이드 버퍼를 이용하는 게스트 명령-네이티브 명령 레인지 기반 매핑
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
WO2012103253A2 (en) * 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
CN102647336B (zh) * 2011-02-22 2016-09-07 瑞昱半导体股份有限公司 用于封包内容转换的方法以及网络装置
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
KR101761498B1 (ko) 2013-03-15 2017-07-25 인텔 코포레이션 추론을 지원하는 게스트 반환 주소 스택 에뮬레이션을 위한 방법 및 장치
WO2015186178A1 (ja) * 2014-06-02 2015-12-10 三菱電機株式会社 プログラマブルコントローラシステム、プログラマブルコントローラ、プログラム表示装置、プログラムの表示方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS4847737A (ja) * 1971-10-12 1973-07-06
CA1248238A (en) * 1985-10-17 1989-01-03 Francis D. Lawlor Compiler including retargetable data generation
JPH0250730A (ja) 1988-08-12 1990-02-20 Nec Corp 共通機械語による言語変換方式
JPH032933A (ja) * 1989-05-30 1991-01-09 Mitsubishi Electric Corp オブジェクトコード生成装置
JPH03252820A (ja) 1990-03-02 1991-11-12 Nec Corp 最適オブジェクト生成処理方式
JPH0414144A (ja) 1990-05-08 1992-01-20 Fujitsu Ltd コンパイル処理方法
JP3602857B2 (ja) 1991-04-23 2004-12-15 株式会社日立製作所 多機種対応型情報処理システム、および、方法
JP2765423B2 (ja) * 1992-01-23 1998-06-18 三菱電機株式会社 プログラマブルコントローラ及びその制御方法
JPH06332719A (ja) 1993-05-24 1994-12-02 Sharp Corp コンパイラコード発生装置
JP3318051B2 (ja) * 1993-06-17 2002-08-26 富士通株式会社 翻訳処理方法
US5375242A (en) * 1993-09-29 1994-12-20 Hewlett-Packard Company Compiler architecture for cross-module optimization
JP3190773B2 (ja) * 1993-09-30 2001-07-23 日本電気株式会社 言語処理プログラムのコンパイル処理方法
US5488569A (en) * 1993-12-20 1996-01-30 At&T Corp. Application-oriented telecommunication system interface
US5768593A (en) * 1996-03-22 1998-06-16 Connectix Corporation Dynamic cross-compilation system and method
JPH10287743A (ja) 1997-04-11 1998-10-27 Toray Ind Inc 中空成形品の製造方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010205068A (ja) * 2009-03-04 2010-09-16 Hitachi Information Systems Ltd ソフトウェア資源移行システム及び同移行方法
JP2018120285A (ja) * 2017-01-23 2018-08-02 茂 長澤 プログラムの開発を支援するためのシステム、そのシステムにおいて実行される方法およびプログラム

Also Published As

Publication number Publication date
EP0947923A2 (en) 1999-10-06
JP3246438B2 (ja) 2002-01-15
EP0947923A3 (en) 2003-05-07
US6305013B1 (en) 2001-10-16

Similar Documents

Publication Publication Date Title
JP3246438B2 (ja) 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体
TWI416412B (zh) 在編譯處理的期間表示及檢測程式元件的一致性之可擴充式系統、電腦可讀取媒體、電腦程式產品及方法
JP3801545B2 (ja) コンパイラ用プログラム、コンパイラ装置及びコンパイル方法
JP3974063B2 (ja) プロセッサおよびコンパイラ
JP3606561B2 (ja) 第1ビット・アーキテクチャの命令を第2ビット・アーキテクチャの命令に変換する方法、システム、プログラムおよびデータ構造
US20040003381A1 (en) Compiler program and compilation processing method
US5956510A (en) Apparatus and method for revising computer program code
EP1253515A2 (en) Method for verifying basic instruction arrangement in VLIW instructions for variable length VLIW processor
JP2004038597A (ja) コンパイラ装置
JP5218063B2 (ja) 命令オペコード生成システム
JP4026940B2 (ja) プログラム変換装置
US9213548B2 (en) Code generation method and information processing apparatus
JPH11250112A (ja) ハードウェア合成方法およびハードウェア合成装置並びにハードウェア合成プログラムを記録した記録媒体
Berz et al. COSY INFINITY version 8.1 programming manual
US20060200796A1 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
US6925635B2 (en) Embedded pre-processor with dynamic macro forms
JP4045802B2 (ja) プログラム処理装置及びプログラム処理方法、記憶媒体、並びにコンピュータ・プログラム
JP7295466B2 (ja) クラス生成プログラム及びクラス生成方法
JP2002312176A (ja) 変換プログラム、コンパイラ、コンピュータ装置、プログラム変換方法及び記憶媒体
JP3727039B2 (ja) コンパイラにおける乗算実施方法
JP3542538B2 (ja) プログラム最適化処理装置及びプログラム最適化方法
JPH0414144A (ja) コンパイル処理方法
JP2001022808A (ja) 論理回路削減装置ならびに論理シミュレーション方法および装置
JPS62205437A (ja) 情報処理装置
JP3367438B2 (ja) 条件実行処理装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071102

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081102

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081102

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091102

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091102

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101102

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101102

Year of fee payment: 9

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101102

Year of fee payment: 9

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111102

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111102

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121102

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131102

Year of fee payment: 12

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees