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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/47—Retargetable 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
コンパイル処理方法において、コンパイラ作成に要する
作業量を削減する。 【解決手段】 コード生成部18は、第1変換部22お
よび第2変換部26を備え、第1変換部22は、第1記
憶装置24に格納されている第1変換テーブルを参照し
て、上位コード20から下位中間言語用の下位コード3
0を生成し、第2変換部は、第2記憶装置に格納されて
いる第2変換テーブルを参照して、下位コードからター
ゲット用の出力コード14を生成する。そして、第2変
換テーブルは、下位中間言語のコードと出力コードとを
対応づけるに当たり、互いに異なる複数の種類のターゲ
ットプログラムどうしで、互いに同一もしくは類似の機
能を表す出力コードを、1つの下位コードに共に対応づ
けてある。
Description
(原始プログラム)から、互いに異なる複数のターゲッ
ト用の出力コードを個別に生成するのに用いて好適な可
変ターゲットコンパイル処理方法、その方法を実現する
ための装置、その方法をコンピュータに実行させるため
のプログラムが記憶された記憶媒体、および、その方法
に用いる変換コードテーブルが記憶された記憶媒体に関
する。
1:「特開平6−332719号公報」に開示されてい
る。この文献1に開示の技術について、図13を参照し
て、第1の従来例として簡単に説明する。図13は、第
1の従来例の説明に供するフローチャートである。第1
の従来例では、原始プログラムから中間言語コード命令
を生成し、この中間言語コード命令からターゲットプロ
グラム(以下、単に「ターゲット」とも称する。)用の
出力コードを生成するに当たり、コード生成手段を用い
る。このコード生成手段としてのコンパイラコード発生
装置には、コンパイラが発生するコードにヘッダを付け
た発生コードテーブルと発生コードのプログラム依存の
変更内容とを入力する。
語コード命令に対応する出力コードパタンであって、各
出力コードにヘッダを付したものをいう。また、変更内
容とは、出力コードパタン中に展開しなければならない
即値データをいう。
コンパイラコード発生装置は、発生コードテーブルに示
された発生コードパタンから発生コードを取り出す。そ
して、発生コードのヘッダの種類にしたがって、プログ
ラム依存の変更内容を発生コード内に展開し、これを発
生コードとする。
ード内に展開するプログラム依存の変更内容の種類と、
発生コード内に展開する位置を示すための一種のパラメ
ータである。また、プログラム依存の変更内容の発生コ
ード内の展開とは、この一種のパラメータをプログラム
依存の変更内容自体に置き換えることをいう。
オペレータに対して、これに対応する発生コードパタン
の内容にかかわらず、プログラム依存の変更内容を発生
コード内に展開する形式は一定であることを前提として
いる。この方式により、異なるターゲットに対しても発
生コードテーブルの内容を変更するのみでコンパイラコ
ード発生装置を作成することができる。
が、文献2:「特開平4−014144号公報」に開示
されている。この文献2に開示の技術について、図14
を参照して、第2の従来例として簡単に説明する。図1
4は、第2の従来例の説明に供する機能ブロック図であ
る。このコンパイル方式を実現するためのコンパイラ1
00は、アーキテクチャ非依存の意味解析処理部分20
0、汎用中間言語最適化処理部分210、アーキテクチ
ャ依存処理部分220、中間言最適化処理部分230、
コード生成処理部240、中間言用スケルトントンテー
ブル120およびコード生成用スケルトンテーブル13
0を以て構成されている。
うにしてコンパイルを行う。まず、意味解析処理部分2
00において、入力された原始プログラム110の意味
解析処理を行って、アーキテクチャに非依存の汎用中間
言語140を出力する。次に、汎用中間言語最適化処理
部分210において、必要に応じて、汎用中間言に対す
る最適化のための変換を行って、その結果を最適化中間
言150として出力する。
クチャ依存処理部分220において、従来の意味解析に
関係するアーキテクチャに依存した処理を行う。この処
理に当たっては、中間言用スケルトンテーブル120を
用いることにより、最適化汎用中間言150から計算機
アーキテクチャに依存した中間言160を生成する。次
に、中間言最適化処理部分230において、中間言16
0について最適化を行って、最適化中間言170を出力
する。次に、コード生成処理部分240において、コー
ド生成用スケルトンテーブル130を用いることによ
り、最適化中間言170から機械語命令列などからなる
目的プログラム180を生成する。
式では、意味解析処理から計算機アーキテクチャに依存
する処理を分離することによって、高性能なオブジェク
トの生成を実現している。
第1の従来例のコンパイル方式において、プログラム依
存の変更内容が展開される部分、すなわち、前述した一
種のパラメータの部分、を除き、発生コードテーブル
(変換テーブル)がターゲットの命令で記述されてい
る。このため、全ての発生コードパタンに対して、それ
ぞれターゲットの命令を用いた記述を与える必要があ
る。
ーゲットに個別に対応するコード生成装置を作成するた
めに、ターゲットの種類毎に個別の発生コードテーブル
をそれぞれ作成する必要がある。すなわち、ターゲット
を変更する都度、発生コードパタンを全て変更しなけれ
ばならない。その結果、多数の種類のターゲットにそれ
ぞれ対応する場合、発生コードテーブルの量が膨大な量
となるという問題がある。さらに、発生コードテーブル
の量が膨大となると、発生コードテーブルを作成するた
めに要する作業量が多くなるという問題も生じる。
発生コードパタンだけでなく、プログラム依存の変更内
容を発生コード内に展開する形式にも影響が及ぶ。この
影響は、ターゲットのアーキテクチャの相違によるもの
である。アーキテクチャの相違の具体例としては、整数
回繰り返されるループの上限あるいは下限の判定におい
て、あるターゲットでは等号を含む比較命令を用い、別
のターゲットでは等号不含の比較命令を用いる場合が挙
げられる。この場合、ループの上限値あるいは下限値と
なる即値データが、ターゲットの種類によって発生コー
ド内で異なる場合が生じる。
ログラム依存の変更内容を発生コードに展開する形式
が、ヘッダの種類に従うものに固定化されている。この
ため、第1の従来例の方式は、展開する形式が原始プロ
グラムの形式と同一であるような限定された種類のター
ゲット群に対してしか用いることができない。例えば、
この方式では、特定のメーカーの製造したマイクロプロ
セッサ用のプログラム(ターゲットプログラム)にはコ
ンパイルすることができるが、他のメーカーの製造した
マイクロプロセッサ用のプログラムにはコンパイルする
ことができない場合がある。したがって、第1の従来例
の方式では、ターゲットの種類が制限されるという問題
がある。
式においては、意味解析処理からアーキテクチャ依存部
分を分離している。このため、アーキテクチャを変更す
る度に、中間言スケルトンテーブルを変更する必要があ
る。また、この方式においても、コード生成用スケルト
ンテーブル(変換テーブル)はターゲットの命令で記述
されている。このため、すべての発生コードパタンに対
して、それぞれターゲットの命令を用いた記述を与える
必要がある。
ーゲットに個別に対応するために、ターゲットの種類毎
に個別のコード生成用スケルトンテーブルをそれぞれ作
成する必要がある。すなわち、ターゲットを変更する都
度、コード生成用スケルトンテーブルを全て変更しなけ
ればならない。その結果、多数の種類のターゲットにそ
れぞれ対応する場合、コード生成用スケルトンテーブル
の量が膨大な量となるという問題がある。さらに、コー
ド生成用スケルトンテーブルの量が膨大となると、コー
ド生成用スケルトンテーブルを作成するために要する作
業量が多くなるという問題も生じる。
たものであり、ターゲットの種類の変更に伴う変換テー
ブルの変更量の低減を図ることができるコンパイル処理
技術の提供を目的とする。
め、この出願にかかる発明者は、互いに異なる複数のタ
ーゲットの出力コード(ターゲット命令)に、ターゲッ
トどうしで同一もしくは類似の機能を表す出力コード
が、通常それぞれ含まれていることに着目した。そし
て、これらの互いに同一もしくは類似の機能を表す出力
コードを、中間言語の1つのコードに共に対応づけてお
けば、変換テーブルの少なくとも一部分を共通化できる
ので、ターゲットプログラムの変更に伴う変換テーブル
の変更量の低減を図ることができることに想到した。
イル処理方法(以下、単に「コンパイル処理方法」とも
称する。)によれば、入力プログラムの意味解析を行っ
て、該入力プログラムの入力コードからターゲットプロ
グラムの種類に非依存の上位中間言語用の上位コードを
生成し、さらに該上位コードからターゲットプログラム
用の出力コードを生成する可変ターゲットコンパイル処
理方法において、上位コードと下位中間言語用の下位コ
ードとを対応づけた第1変換テーブルを参照して、上位
コードから下位中間言語用の下位コードを生成する第1
変換処理と、下位コードと出力コードとを対応づけた第
2変換テーブルを参照して、下位コードから出力コード
を生成する第2変換処理とを含み、第2変換テーブル
は、下位コードと出力コードとを対応づけるに当たり、
互いに異なる複数の種類のターゲットプログラムどうし
で、互いに同一もしくは類似の機能を表す出力コード
を、1つの下位コードに共に対応づけてあることを特徴
とする。
ル処理装置(以下、単に「コンパイル処理装置」若しく
は「コンパイラ」とも称する。)によれば、入力プログ
ラムの意味解析を行って、該入力プログラムの入力コー
ドからターゲットプログラムの種類に非依存の上位中間
言語用の上位コードを生成するフロントエンドと、該上
位コードからターゲットプログラム用の出力コードを生
成するコード生成部とを備えた可変ターゲットコンパイ
ル処理装置において、コード生成部は、上位コードと下
位中間言語用の下位コードとを対応づけた第1変換テー
ブルを参照して、上位コードから下位コードを生成する
第1変換部と、下位コードと出力コードとを対応づけた
第2変換テーブルを参照して、下位コードから出力コー
ドを生成する第2変換部とを備え、第2変換テーブル
は、下位中間言語のコードと出力コードとを対応づける
に当たり、互いに異なる複数の種類のターゲットプログ
ラムどうしで、互いに同一もしくは類似の機能を表す出
力コードを、1つの下位コードに共に対応づけてあるこ
とを特徴とする。
ル用プログラムの記憶媒体(以下、単に「プログラム記
憶媒体」とも称する。)によれば、入力プログラムの意
味解析を行って、該入力プログラムの入力コードからタ
ーゲットプログラムの種類に非依存の上位中間言語用の
上位コードを生成し、さらに該上位コードからターゲッ
トプログラム用の出力コードを生成する処理をコンピュ
ータに実行させるための可変ターゲットコンパイル用プ
ログラムの記憶媒体であって、上位コードと下位中間言
語用の下位コードとを対応づけた第1変換テーブルを参
照して、上位コードから下位コードを生成する第1変換
処理と、下位コードと出力コードを対応づけるに当た
り、互いに異なる複数の種類のターゲットプログラムど
うしで、互いに同一もしくは類似の機能を表す出力コー
ドを、1つの下位コードに共に対応づけた第2変換テー
ブルを参照して、下位コードから出力コードを生成する
第2変換処理とを順次にコンピュータに実行させるため
の可変ターゲットコンパイル用プログラムを記憶したこ
とを特徴とする。
第1の記憶媒体(以下、単に「第1のテーブル記憶媒
体」とも称する。)によれば、入力プログラムの意味解
析を行って、該入力プログラムの入力コードからターゲ
ットプログラムの種類に非依存の上位中間言語用の上位
コードを生成し、さらに該上位コードからターゲットプ
ログラム用の出力コードを生成する処理に用いる変換テ
ーブルを記憶した記録媒体であって、変換テーブルは、
上位中間言語から下位中間言語を生成する際に参照する
ための第1変換テーブルと、下位中間言語から出力コー
ドを生成する際に参照するための第2変換テーブルとを
以て構成されており、第1変換テーブルは、上位コード
と下位コードとを対応づけてあり、第2変換テーブル
は、下位コードと出力コードとを対応づけるに当たり、
互いに異なる複数の種類のターゲットプログラムどうし
で、互いに同一もしくは類似の機能を表す出力コード
を、1つの下位コードに共に対応づけてあることを特徴
とする。
第2記憶媒体(以下、単に「第2のテーブル記憶媒体」
とも称する。)によれば、入力プログラムの意味解析を
行って、該入力プログラムの入力コードからターゲット
プログラムの種類に非依存の上位中間言語用の上位コー
ドを生成し、該上記コードから下位中間言語用のコード
を生成し、さらに該下位コードからターゲットプログラ
ム用の出力コードを生成する処理に用いる、下位コード
から出力コードを生成する際に参照するための変換テー
ブル(以下、「第2変換テーブル」とも称する。)を記
憶した記録媒体であって、変換テーブルは、下位コード
と出力コードとを対応づけるに当たり、互いに異なる複
数の種類のターゲットプログラムどうしで、互いに同一
もしくは類似の機能を表す出力コードを、1つの下位コ
ードに共に対応づけてあることを特徴とする。
法、コンパイル処理装置およびプログラム記憶媒体、第
1のテーブル記憶媒体および第2のテーブル記憶媒体に
よれば、いずれも、第2変換テーブルにおいて、互いに
異なる複数の種類のターゲットプログラムどうしで、互
いに同一もしくは類似の機能をそれぞれ表す出力コード
を、1つの下位コードに共に対応づけている。
なる複数のターゲット用の第2変換テーブルどうしで、
下位コードの少なくとも一部分を共通化することができ
る。このため、互いに異なる複数のターゲット用のそれ
ぞれの第1変換テーブルどうしでも、下位コードの少な
くとも一部分を共通化することができる。その結果、こ
の発明においては、複数の種類のターゲット用の第1変
換テーブルどうしの少なくとも一部分を共通化すること
ができると共に、複数種類のターゲット用に第2変換テ
ーブルどうしの少なくとも一部分を共通化することがで
きる。
部分を共通化できるので、この発明においては、ターゲ
ットの種類を変更した場合に、第1および第2変換テー
ブルを全て変更する必要がない。例えば、ある種類のタ
ーゲット用の第1および第2変換テーブルそれぞれの一
部分を、他の種類のターゲット用の第1および第2変換
テーブル(併せて「変換テーブル」とも称する。)それ
ぞれの一部分として使用することができる。このため、
この発明によれば、ターゲットの種類の変更に伴う変換
テーブルの変更量の低減を図ることができる。また、変
換テーブルの変更量の低減を図ることができるので、変
換テーブルを変更するための作業量の低減を図ることが
できる。
いて、好ましくは、第1変換テーブルおよび第2変換テ
ーブルを、それぞれ記憶装置に格納するのが良い。この
記憶装置には、1つのターゲットに対応した第1および
第2変換テーブルを格納しても良いし、複数のターゲッ
トにそれぞれ対応した第1および第2変換テーブルを格
納しても良い。そのためには、この発明のコンパイル処
理装置において、好ましくは、第1変換テーブルを記憶
した第1記憶装置を備えるのが良い。また、好ましく
は、第2変換テーブルを記憶した第2記憶装置を備える
のが良い。
れ例えばコード生成部の内部に設けても良いし、コード
生成部の外部に設けても良い。また、第1および第2記
憶装置は、例えば1つの記憶装置の互いに異なる2つの
記憶領域を以って構成しても良い。また、この発明のコ
ンパイル処理方法およびコンパイル処理装置において、
好ましくは、第1変換テーブルおよび第2変換テーブル
のうちの少なくとも一方を、外部記憶装置に格納するの
が良い。この外部記憶装置には、第1および第2変換テ
ーブルの両方を格納しても良いし、第1変換テーブルの
みを格納しても良いし、また、第2変換テーブルのみを
格納しても良い。
合、発生コードパタンだけでなく、プログラム依存の変
更内容を発生コード内に展開する形式も変更を要する場
合がある。その場合、発生コード内に展開すべき即値デ
ータは、ターゲット命令(オペレータ)やオペランドの
属性といったターゲット依存情報に基づいて変更して決
定する必要がある。そこで、この発明のコンパイル処理
方法、コンパイル処理装置、プログラム記憶媒体、第1
のテーブル記憶媒体および第2のテーブル記憶媒体にお
いて、好ましくは、第2変換テーブルは、下位コードと
して下位オペレータを含み、かつ、出力コードとして出
力オペレータと当該出力オペレータの出力オペランドと
を含むのが良い。
この発明のコンパイル処理方法およびプログラム記憶媒
体において、好ましくは、第2変換処理において、下位
オペレータを、第2変換テーブルにおいて対応づけられ
た出力オペレータおよびその出力オペランドに変換する
のが良い。そのために、この発明のコンパイル処理装置
において、好ましくは、コード生成部は、下位オペレー
タを、第2変換テーブルにおいて対応づけられた出力オ
ペレータおよびその出力オペランドに変換するのが良
い。
た出力オペランドへ変換すれば、ターゲットの種類を変
更した場合に、プログラム依存の変更内容をコード内に
展開する形式も変更することができる。その結果、ター
ゲットの種類によらずに、コンパイル処理を行なうこと
が可能となる。したがって、この発明によれば、ターゲ
ットの種類の限定を緩和することができる。さらに、こ
の発明の実施に当たり、第2変換テーブルは、下位オペ
レータの下位オペランドをさらに含むのが良い。
の実施の形態について説明する。 <第1の実施の形態>第1の実施の形態では、この発明
の可変ターゲットコンパイル処理方法、可変ターゲット
コンパイル処理装置、可変ターゲットコンパイル用プロ
グラムの記憶媒体、および、変換テーブルを記憶した第
1および第2の記憶媒体の例について併せて説明する。
参照して、可変ターゲットコンパイル処理装置(コンパ
イル処理装置)の構成について説明する。
理装置の説明に供する機能ブロック図である。また、図
2は、コード生成部の説明に供する機能ブロック図であ
る。図1に示す構成では、このコンパイル処理装置10
は、入力プログラム12から第1のターゲットプログラ
ム用の出力コード14を生成する装置であって、フロン
トエンド16およびコード生成部18とを備えている。
このフロントエンド16は、入力プログラム12の意味
解析を行って、この入力プログラム12の入力コードか
らターゲットプログラムの種類に非依存の上位中間言語
用の上位コード20を生成する。なお、フロントエンド
16における意味解析の方法は、従来周知の方法を用い
ると良い。
0からターゲットプログラム用の出力コード14を生成
する。そして、図2に示す構成では、このコード生成部
18は、第1変換部22、第1記憶装置24、第2変換
部26および第2記憶装置28を備えている。この第1
変換部22は、第1変換テーブルを参照して、上位コー
ド20から下位中間言語用の下位コード30を生成す
る。この第1変換テーブルは、第1記憶装置24に格納
されている。そして、この第1変換テーブルでは、上位
中間言語用の上位コード20と下位中間言語用の下位コ
ード30とが対応づけられている。
示す。図3に要部を示す第1変換テーブル32では、テ
ーブルの左側に上位コード20を示し、その左側にその
上位コードに対応する下位コード30を示す。第1変換
テーブル32では、上位コード20の例として、「cm
p_and_br_LT」および「relop_EQ_
float」を示す。そして、「cmp_and_br
_LT」に対応する下位コード30として、「CMPL
T」および「BNEQ」を示す。
は1対1に対応する必要はなく、この第1変換テーブル
32のように、1つの上位コード20に複数の下位コー
ド30が対応しても良い。
ドパタンと称する。また、「relop_EQ_flo
at」に対応する下位コード30として、「CMPFE
QU」および「BFF」を示す。
ルを参照して、下位コード30から出力コード14を生
成する。この第2変換テーブルは、第2記憶装置26に
格納されている。そして、この第2変換テーブルでは、
下位中間言語用の下位コード30と第1のターゲットプ
ログラム用の出力コード14とが対応づけられている。
示す。図4に要部を示す第2変換テーブル34では、テ
ーブルの左側に下位コード30を示し、その左側にその
下位コード30に対応する出力コード14を示す。第2
変換テーブル34においては、出力コード14をターゲ
ット命令(オペレータ)36およびオペランド38との
組合せで表す。また、オペランド38は、第1〜第3の
3つのオペランド属性によって与えられる。
0の例として、「CMPLT」、「CMPFEQU」、
「BNEQ」および「BFF」を示す。下位コード30
と出力コード14とは1対1に対応している。
は、出力コード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」と表している。
「reg/imm」は「レジスタあるいは即値」を表
す。また、オペランドの属性は、即値についてはプログ
ラムの変更内容が対応するオペランドであることを意味
する。
出力コード14のターゲット命令「c.eq.s」と対
応している。このターゲット命令「c.eq.s」は、
次の機能を表す。すなわち、「オペランドとして2個の
浮動小数用のレジスタを持つ命令であり、2個の浮動小
数用のレジスタの値が互いに等しい場合に浮動小数用フ
ラグを設定し、そうでない場合に浮動小数用フラグを設
定しない。」という機能を表す。第2変換テーブル34
では、この「c.eq.s」のオペランド38として、
第1オペランド属性を「none」と表記し、第2オペ
ランド属性を「freg」と表記し、さらに、第3オペ
ランド属性を「freg」と表記している。
とを表し、「freg」は、「浮動小数レジスタ」を表
す。
ード14のターゲット命令「bne」と対応している。
このターゲット命令「bne」は、次の機能を表す。す
なわち、「オペランドとして2個のレジスタと1個のラ
ベルを持つ命令であり、2個のレジスタの値が互いに等
しい場合にラベルの示すアドレスに制御を移す。」とい
う機能を表す。第2変換テーブル34では、この「bn
e」のオペランド38として、第1オペランド属性を
「lab」と表記し、第2オペランド属性を「reg」
と表記し、さらに、第3オペランド属性を「reg」と
表記している。なお、「lab」は「ラベル」を表す。
ド14のターゲット命令「bc1f」と対応している。
このターゲット命令「bc1f」は、次の機能を表す。
すなわち、「オペランドとして1個のラベルを持つ命令
であり、浮動小数用フラグが設定されていない場合に、
ラベルの示すアドレスに制御を移す。」という機能を表
す。第2変換テーブル34では、この「bc1f」のオ
ペランド38として、第1オペランド属性を「lab」
と表し、第2オペランド属性を「none」と表記し、
さらに第3オペランド属性を「none」と表記してい
る。
および34は、いずれも、例えば、FD(フロッピー・
ディスク)やハードディスクをはじめとする磁気記憶媒
体、光磁気記憶媒体、CD−ROM(シーディー・ロ
ム)をはじめとする光学的記録媒体、その他の任意好適
な記録媒体として提供することができる。
間言語のコードと出力コードとを対応づけるに当たり、
互いに異なる複数の種類のターゲットプログラムどうし
で、互いに同一もしくは類似の機能を表す出力コード
を、1つの下位コードに共に対応づけてある。この対応
づけを説明するために、図5に、第2のターゲットプロ
グラム用の第2変換テーブル34aを示す。
テーブル34aでも、下位コード30として、第1のタ
ーゲットプログラム用の第2変換テーブル34での下位
コード「CMPLT」、「CMPFEQU」、「BNE
Q」および「BFF」を使用する。そして、これらの下
位コード30を、図4に示した第2変換テーブル34に
おける各出力コード14と同一若しくは類似の機能を表
す、第2ターゲットプログラム用の出力コードと対応づ
けている。
いて、下位コード「CMPLT」は、「slt」と本質
的に同一の「less−than比較および設定」の機
能を表す、出力コードのターゲット命令「lt.w」と
対応している。そして、第2変換テーブル34では、こ
の「lt.w」のオペランド38として、第1オペラン
ド属性を「reg/imm」と表記し、第2オペランド
属性を「reg」と表記し、第3オペランド属性を「r
eg」と表記している。
「c.eq.s」と本質的に同一の機能を表す出力コー
ド「cmpeq.s」と対応している。そして、第2変
換テーブル34aでは、この「cmpeq.s」のオペ
ランド38として、第1オペランド属性を「none」
と表記し、第2オペランド属性を「freg」と表記
し、第3オペランド属性を「freg」と表記してい
る。
e」と本質的に同一の機能を表す出力コード「jne」
と対応している。そして、第2変換テーブル34aで
は、この「jne」のオペランド38として、第1オペ
ランド属性を「reg」と表記し、第2オペランド属性
を「reg」と表記し、第3オペランド属性を「la
b」と表記している。
f」と本質的に同一の機能を表す「jff」と対応して
いる。そして、第2変換テーブル34aでは、この「j
ff」のオペランドと38して、第1オペランド属性を
「lab」と表記し、第2オペランド属性を「non
e」と表記し、第3オペランド属性を「none」と表
記している。
については、第1変換テーブルにおいても、その下位コ
ードを指定している部分を、互いに異なる複数のターゲ
ットについて共通化することができる。このため、共通
化された分だけ、ターゲットの変更に伴う変換テーブル
の変更量の低減を図ることができる。
のコンパイル処理装置の動作、すなわち、可変ターゲッ
トコンパイル処理方法(以下、単に「コンパイル処理」
とも称する。)の例について説明する。
ンパイル処理用のプログラムをコンピュータに読み取ら
せ、このコンピュータがプログラムの指示に従って処理
を実行することにより実現される。また、そのプログラ
ムを記憶した記憶媒体としては、例えば、FD(フロッ
ピー・ディスク)やハードディスクをはじめとする磁気
記憶媒体、光磁気記憶媒体、CD−ROM(シーディー
・ロム)をはじめとする光学的記録媒体、その他の任意
好適な記録媒体を用いることができる。また、記憶媒体
に記憶されているプログラムをコンピュータに読み取ら
せるに当たっては、例えば、CD−ROMをコンピュー
タに装着して読み取らせても良いし、例えば、プログラ
ムを通信回線を介して外部からコンピュータに転送して
も良い。
のコンパイラのコンパイル処理の全般について説明す
る。図6は、第1の実施の形態のコンパイル処理の全般
の説明に供するフローチャートである。
図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)。
ついて説明する。図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)。
一致するまで順次に次の上位コードを読出す。また、一
致した場合には、第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)。
ついて説明する。図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)。
一致するまで順次に次の下位コードを読出す。また、一
致した場合には、第2変換テーブル34においてその一
致した下位コードに対応する出力コード14を、第2記
憶部28から読出す。ここでは、下位コード「CMPL
T」に対応する出力コード14として、ターゲット命令
「slt」およびそのオペランド「reg」、「re
g」、「reg/imm」を読出す(図8のS10)。
このようにして、第2変換部26は、下位コード30か
ら出力コード14を生成する。そして、コンパイラ10
は、この出力コード14を出力する。
て、この発明の第2の実施の形態について説明する。図
9は、第2の実施の形態におけるコード生成部18aの
説明に供する機能ブロック図である。第2の実施の形態
では、第1変換テーブル32および第2変換テーブル3
4を外部の記憶装置に格納してある。すなわち、第1変
換テーブル32は、第1外部記憶装置40に格納されて
いる。また、第2変換テーブル34は、第2外部記憶装
置42に格納されている。
格納するとは、例えば、コード生成部を動作させるため
のプログラムとは個別のプログラムまたはコンピュータ
上の個別のファイルとして変換テーブルのデータを設け
る場合を含む。また、第1変換部22と第1外部記憶装
置40とは、例えば通信回線で接続しても良い。また、
第2変換部26と第2外部記憶装置42とも、例えば通
信回線で接続しても良い。なお、第2の実施の形態にお
いては、第1および第2変換テーブル32および34が
それぞれ外部の記憶装置に格納されている点を除いて
は、上述の第1の実施の形態における構成および動作と
同じであるので、その詳細な説明を省略する。
おいては、上位コードとして「ADD_M_M mem
1,mem2,reg$」を変換して出力コードを生成
する例について説明する。この上位コードの上位コード
命令「ADD_M_M」は、メモリ上にある2個のデー
タをレジスタにロードして加算を行なう機能表す。そし
て、この上位コード命令には、オペランドとして「me
m1」、「mem2」および「reg$」が与えられ
る。この「mem1」は、第1のメモリ上にあるデータ
を表す。また、「mem2」は、第2のメモリ上にある
データを表す。また、「reg$」は、結果を格納する
レジスタを表す。
ット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用の変換テーブルとを全く個別に作成する必要があっ
た。
異なる複数の種類のターゲットプログラムどうしで、互
いに同一もしくは類似の機能をそれぞれ表す出力コード
を、1つの下位コードに共通化して対応づけている。そ
の結果、この発明によれば、共通化されている下位コー
ドについては、第1変換テーブルにおいても、その下位
コードを指定している部分を、互いに異なる複数のター
ゲットについて共通化することができる。以下、この対
応づけの具体例として、第1および第2変換テーブルの
例について説明する。
ルの例について説明する。図10に示す第1変換テーブ
ル44においては、上位コードと下位コードとを対応づ
けている。そして、この上位コードは、上位コード命令
(上位オペレータ)とそのオペランドで表されている。
このオペランドの属性は、第1オペランド、第2オペラ
ンドおよび第3オペランドの3つのオペランドで与えら
れる。また、下位コードは、下位コード命令とそのオペ
ランドで表されている。このオペランドの属性は、第1
オペランド、第2オペランドおよび第3オペランドの3
つのオペランドで与えられる。
は、上位コード命令の例として「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$」を示す。
説明するように、ターゲット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」が示されている。
ット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」が示
されている。
に、これらの第2変換テーブル46および46aにおい
ては、下位コードを共通化している。したがって、図1
0に示した第1変換テーブル44は、ターゲットAおよ
びターゲットBの両ターゲットについて使用することが
できる。このため、例えばターゲットAをターゲットB
に変更した場合に、第1変換テーブルは変更する必要が
ない。
は、下位コードから出力コードを生成する際に、ターゲ
ットプログラム依存の変更内容を発生コード内へ展開す
る他の例についてさらに説明する。ここで、図12の
(A)に、ターゲットAに対する第2変換テーブル48
の例を示し、図12の(B)に、ターゲットBに対する
第2変換テーブル48aの例を示す。これらの第2変換
テーブル48および48のいずれにおいても、共通の下
位コードとして下位コード命令「ANDI」およびその
3つのオペランド「imm」、「reg1」および「r
eg2」が示されている。なお、「imm」は整数のイ
ミディエート値を表す。そして、この実施の形態では、
第2変換テーブル48および48aのいずれに用いて
も、出力コードの出力コード命令として、「andi」
が与えられている。
ル48においては、「andi」のオペランドとして、
下位コードのオペランドと同一の「imm」、「reg
1」および「reg2」が与えられているのに対して、
ターゲットB用の第2変換テーブル48aにおいては、
オペランドとして「reg2」、「posimm」およ
び「reg1」が与えられている。なお、「posim
m」は、正数のイミディエート値を表す。すなわち、タ
ーゲットBにおいては、出力コードの仕様上の制約(規
則)があり、整数イミディエート値に負数を書くことが
できない。
れば、ターゲットB用の出力コードにおいて負数のイミ
ディエートが書込まれる場合が発生するので、コンパイ
ル処理を正しく行なうことが困難となる。この点、この
発明では、オペランドで「posimm」を指定するこ
とにより、コンパイル処理を正しく行なうことができ
る。
を特定の条件で構成した例について説明したが、この発
明は、種々の変更を行うことができる。例えば、上述し
た実施の形態においては、2つのターゲットについて第
2変換テーブルを作成した例について説明したが、この
発明では、ターゲットの種類は2つに限定されない。
よれば、第2変換テーブルにおいて、互いに異なる複数
の種類のターゲットプログラムどうしで、互いに同一も
しくは類似の機能をそれぞれ表す出力コードを、1つの
下位コードに共に対応づけている。したがって、この発
明によれば、互いに異なる複数のターゲット用の第2変
換テーブルどうしで、下位コードの少なくとも一部分を
共通化することができる。このため、互いに異なる複数
のターゲット用のそれぞれの第1変換テーブルどうしで
も、下位コードの少なくとも一部分を共通化することが
できる。その結果、この発明においては、複数の種類の
ターゲット用の第1変換テーブルどうしの少なくとも一
部分を共通化することができると共に、複数種類のター
ゲット用に第2変換テーブルどうしの少なくとも一部分
を共通化することができる。このように、変換テーブル
どうしの少なくとも一部分を共通化することができるの
で、この発明においては、ターゲットの種類を変更した
場合に、第1および第2変換テーブルを全て変更する必
要がない。このため、この発明によれば、ターゲットの
種類の変更に伴う変換テーブルの変更量の低減を図るこ
とができる。また、変換テーブルの変更量の低減を図る
ことができるので、変換テーブルを変更するための作業
量の低減を図ることができる。また、この発明におい
て、第2変換テーブルに指定された出力オペランドに下
位オペランドを変換すれば、ターゲットの種類を変更し
た場合に、プログラム依存の変更内容をコード内に展開
する形式も変更することができる。その結果、ターゲッ
トの種類によらずに、コンパイル処理を行なうことが可
能となる。したがって、ターゲットの種類の限定を緩和
することができる。
機能ブロック図である。
に供する機能ブロック図である。
例である。
の第2変換テーブルの例である。
の第2変換テーブルの例である。
明に供するフローチャートである。
に供するフローチャートである。
に供するフローチャートである。
に供する機能ブロック図である。
の例である。
第2変換テーブルの例である。
第2変換テーブルの例である。
ラ) 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変換処理と、 前記下位コードと前記出力コードとを対応づけた第2変
換テーブルを参照して、前記下位コードから前記出力コ
ードを生成する第2変換処理とを含み、 前記第2変換テーブルは、前記下位コードと前記出力コ
ードとを対応づけるに当たり、互いに異なる複数の種類
のターゲットプログラムどうしで、互いに同一もしくは
類似の機能を表す出力コードを、1つの前記下位コード
に共に対応づけてあることを特徴とする可変ターゲット
コンパイル処理方法。 - 【請求項2】 請求項1に記載の可変ターゲットコンパ
イル処理方法において、 前記第1変換テーブルおよび前記第2変換テーブルを、
それぞれ記憶装置に格納したことを特徴とする可変ター
ゲットコンパイル処理方法。 - 【請求項3】 請求項1に記載の可変ターゲットコンパ
イル処理方法において、 前記第1変換テーブルおよび前記第2変換テーブルのう
ちの少なくとも一方を、外部記憶装置に格納したことを
特徴とする可変ターゲットコンパイル処理方法。 - 【請求項4】 請求項1に記載の可変ターゲットコンパ
イル処理方法において、 前記第2変換テーブルは、前記下位コードとして下位オ
ペレータを含み、かつ、前記出力コードとして前記出力
オペレータと当該出力オペレータの出力オペランドとを
含むことを特徴とする可変ターゲットコンパイル処理方
法。 - 【請求項5】 請求項4に記載の可変ターゲットコンパ
イル処理方法において、 前記第2変換テーブルは、前
記下位コードとして、前記下位オペレータの下位オペラ
ンドをさらに含むことを特徴とする可変ターゲットコン
パイル処理方法。 - 【請求項6】 請求項4に記載の可変ターゲットコンパ
イル処理方法において、 前記第2変換処理において、前記下位オペレータを、前
記第2変換テーブルにおいて対応づけられた前記出力オ
ペレータおよび出力オペランドに変換することを特徴と
する可変ターゲットコンパイル処理方法。 - 【請求項7】 入力プログラムの意味解析を行って、該
入力プログラムの入力コードからターゲットプログラム
の種類に非依存の上位中間言語用の上位コードを生成す
るフロントエンドと、該上位コードからターゲットプロ
グラム用の出力コードを生成するコード生成部とを備え
た可変ターゲットコンパイル処理装置において、 前記コード生成部は、 前記上位コードと下位中間言語用の下位コードとを対応
づけた第1変換テーブルを参照して、前記上位コードか
ら下位中間言語用の下位コードを生成する第1変換部
と、 前記下位コードと前記出力コードとを対応づけた第2変
換テーブルを参照して、前記下位コードから前記出力コ
ードを生成する第2変換部とを備え、 前記第2変換テーブルは、前記下位中間言語のコードと
前記出力コードとを対応づけるに当たり、互いに異なる
複数の種類のターゲットプログラムどうしで、互いに同
一もしくは類似の機能を表す前記出力コードを、1つの
前記下位コードに共に対応づけてあることを特徴とする
可変ターゲットコンパイル処理装置。 - 【請求項8】 請求項7に記載の可変ターゲットコンパ
イル処理装置において、 前記第1変換テーブルを記憶した第1記憶装置を備えた
ことを特徴とする可変ターゲットコンパイル処理装置。 - 【請求項9】 請求項7に記載の可変ターゲットコンパ
イル処理装置において、 前記第2変換テーブルを記憶した第2記憶装置を備えた
ことを特徴とする可変ターゲットコンパイル処理装置。 - 【請求項10】 請求項7に記載の可変ターゲットコン
パイル処理装置において、 前記第1変換テーブルおよび前記第2変換テーブルのう
ちの少なくとも一方を外部記憶装置に格納したことを特
徴とする可変ターゲットコンパイル処理装置。 - 【請求項11】 請求項7に記載の可変ターゲットコン
パイル処理装置において、 前記第2変換テーブルは、前記下位コードとして下位オ
ペレータを含み、かつ、前記出力コードとして出力オペ
レータと当該出力オペレータの出力オペランドとを含む
ことを特徴とする可変ターゲットコンパイル処理装置。 - 【請求項12】 請求項11に記載の可変ターゲットコ
ンパイル処理装置において、 前記第2変換テーブルは、前記下位コードとして、前記
下位オペレータの下位オペランドをさらに含むことを特
徴とする可変ターゲットコンパイル処理装置。 - 【請求項13】 請求項11に記載の可変ターゲットコ
ンパイル処理装置において、 前記コード生成部は、前記下位オペレータを、前記第2
変換テーブルにおいて対応づけられた前記出力オペレー
タおよび出力オペランドに変換する機能を有することを
特徴とする可変ターゲットコンパイル処理装置。 - 【請求項14】 入力プログラムの意味解析を行って、
該入力プログラムの入力コードからターゲットプログラ
ムの種類に非依存の上位中間言語用の上位コードを生成
し、さらに該上位コードからターゲットプログラム用の
出力コードを生成する処理をコンピュータに実行させる
ための可変ターゲットコンパイル用プログラムの記憶媒
体であって、 前記上位コードと下位中間言語用の下位コードとを対応
づけた第1変換テーブルを参照して、前記上位コードか
ら下位コードを生成する第1変換処理と、 前記下位コードと前記出力コードを対応づけるに当た
り、互いに異なる複数の種類の前記ターゲットプログラ
ムどうしで、互いに同一もしくは類似の機能を表す出力
コードを、1つの前記下位コードに共に対応づけた第2
変換テーブルを参照して、前記下位コードから前記出力
コードを生成する第2変換処理とを順次にコンピュータ
に実行させるための可変ターゲットコンパイル用プログ
ラムを記憶したことを特徴とする可変ターゲットコンパ
イル用プログラムの記憶媒体。 - 【請求項15】 請求項14に記載の可変ターゲットコ
ンパイル用プログラムの記憶媒体において、 前記第2変換テーブルは、前記下位コードとして下位オ
ペレータを含み、前記出力コードとして出力オペレータ
と当該出力オペレータの出力オペランドとを含むことを
特徴とする可変ターゲットコンパイル用プログラムの記
憶媒体。 - 【請求項16】 請求項15に記載の可変ターゲットコ
ンパイル用プログラムの記憶媒体において、 前記第2変換テーブルは、前記下位コードとして、前記
下位オペレータの下位オペランドをさらに含むことを特
徴とする可変ターゲットコンパイル用プログラムの記憶
媒体。 - 【請求項17】 請求項15に記載の可変ターゲットコ
ンパイル用プログラムの記憶媒体において、 前記第2変換処理において、前記下位オペレータを、そ
れぞれ前記第2変換テーブルにおいて対応づけられた前
記出力オペレータおよび前記出力オペランドに変換する
ことを特徴とする可変ターゲットコンパイル用プログラ
ムの記憶媒体。 - 【請求項18】 入力プログラムの意味解析を行って、
該入力プログラムの入力コードからターゲットプログラ
ムの種類に非依存の上位中間言語用の上位コードを生成
し、さらに該上位コードからターゲットプログラム用の
出力コードを生成する処理に用いる変換テーブルを記憶
した記録媒体であって、 前記変換テーブルは、前記上位コードから下位中間言語
用の下位コードを生成する際に参照するための第1変換
テーブルと、前記下位コードから前記出力コードを生成
する際に参照するための第2変換テーブルとを以て構成
されており、 前記第1変換テーブルは、前記上位コードと前記下位コ
ードとを対応づけてあり、 前記第2変換テーブルは、前記下位コードと前記出力コ
ードとを対応づけるに当たり、互いに異なる複数の種類
のターゲットプログラムどうしで、互いに同一もしくは
類似の機能を表す出力コードを、1つの下位コードに共
に対応づけてあることを特徴とする変換テーブルの記憶
媒体。 - 【請求項19】 請求項18に記載の変換テーブルの記
憶媒体において、 前記第2変換テーブルは、前記下位コードとして下位オ
ペレータを含み、かつ、前記出力コードとして前記出力
オペレータと当該出力オペレータの出力オペランドとを
含むことを特徴とする変換テーブルの記憶媒体。 - 【請求項20】 請求項19に記載の変換テーブルの記
憶媒体において、前記第2変換テーブルは、前記下位コ
ードとして前記下位オペレータの下位オペランドをさら
に含むことを特徴とする変換テーブルの記憶媒体。 - 【請求項21】 入力プログラムの意味解析を行って、
該入力プログラムの入力コードからターゲットプログラ
ムに非依存の上位中間言語用の上位コードを生成し、該
上位コードから下位中間言語用のコードを生成し、さら
に該下位コードからターゲットプログラム用の出力コー
ドを生成する処理に用いる、前記下位コードから前記出
力コードを生成する際に参照するための変換テーブルを
記憶した記録媒体であって、 前記第変換テーブルは、前記下位コードと前記出力コー
ドとを対応づけるに当たり、互いに異なる複数の種類の
ターゲットプログラムどうしで、互いに同一もしくは類
似の機能を表す出力コードを、1つの下位コードに共に
対応づけてあることを特徴とする変換テーブルの記憶媒
体。 - 【請求項22】 請求項21に記載の変換テーブルの記
憶媒体において、 前記第2変換テーブルは、前記下位コードとして下位オ
ペレータを含み、かつ、前記出力コードとして前記出力
オペレータと当該出力オペレータの出力オペランドとを
含むことを特徴とする変換テーブルの記憶媒体。 - 【請求項23】 請求項21に記載の変換テーブルの記
憶媒体において、 前記第2変換テーブルは、前記下位コードとして前記下
位オペレータの下位オペランドをさらに含むことを特徴
とする変換テーブルの記憶媒体。
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)
| 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)
| 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)
| 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 | 中空成形品の製造方法 |
-
1998
- 1998-04-01 JP JP08908798A patent/JP3246438B2/ja not_active Expired - Fee Related
-
1999
- 1999-04-01 US US09/285,039 patent/US6305013B1/en not_active Expired - Lifetime
- 1999-04-01 EP EP99106704A patent/EP0947923A3/en not_active Withdrawn
Cited By (2)
| 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 |