JPH06236282A - データ型サイズ可変なコンパイラ、およびインタプリタ - Google Patents
データ型サイズ可変なコンパイラ、およびインタプリタInfo
- Publication number
- JPH06236282A JPH06236282A JP2239093A JP2239093A JPH06236282A JP H06236282 A JPH06236282 A JP H06236282A JP 2239093 A JP2239093 A JP 2239093A JP 2239093 A JP2239093 A JP 2239093A JP H06236282 A JPH06236282 A JP H06236282A
- Authority
- JP
- Japan
- Prior art keywords
- program
- data type
- interpreter
- compiler
- size
- 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
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 コンパイラとインタプリタにおいて、予め決
められたデータ型に任意のサイズと語境界を利用者が指
定し、原始プログラムのデータ型のサイズと語境界を変
更する処理方法を提供する。 【構成】 コンパイラ101は、原始プログラム102
を計算機機械語プログラム103に変換する従来のコン
パイラに、予め決められたデータ型のサイズと語境界に
ついてコンパイラ外部から指定したデータ型サイズ指定
情報104を入力し、原始プログラム中に存在するデー
タ型のサイズと語境界を指定されたデータ型サイズ指定
情報に基づき変換する入力データ型サイズ情報処理部1
05を追加したコンパイラである。 【効果】 外部入力でデータ型のサイズを任意に指定で
きるので、新しいサイズと語境界を持つデータ型を持つ
仮想計算機上原始プログラムを実行する際、コンパイ
ラ、及び、インタプリタを新規作成する必要がなくなる
ことである。
められたデータ型に任意のサイズと語境界を利用者が指
定し、原始プログラムのデータ型のサイズと語境界を変
更する処理方法を提供する。 【構成】 コンパイラ101は、原始プログラム102
を計算機機械語プログラム103に変換する従来のコン
パイラに、予め決められたデータ型のサイズと語境界に
ついてコンパイラ外部から指定したデータ型サイズ指定
情報104を入力し、原始プログラム中に存在するデー
タ型のサイズと語境界を指定されたデータ型サイズ指定
情報に基づき変換する入力データ型サイズ情報処理部1
05を追加したコンパイラである。 【効果】 外部入力でデータ型のサイズを任意に指定で
きるので、新しいサイズと語境界を持つデータ型を持つ
仮想計算機上原始プログラムを実行する際、コンパイ
ラ、及び、インタプリタを新規作成する必要がなくなる
ことである。
Description
【0001】
【産業上の利用分野】原始プログラムを計算機上で実行
する方法であって、原始プログラムで扱うデータ型のサ
イズ情報処理に関する。
する方法であって、原始プログラムで扱うデータ型のサ
イズ情報処理に関する。
【0002】
【従来の技術】高級言語で記述されたプログラムを計算
機上で実行する方法を大別すると、一般に、コンパイラ
方式、インタプリタ方式と呼ぶ、以下の2つに分けられ
る。コンパイラ方式は高級言語で記述されたプログラム
を、計算機の機械語プログラムに変換した上で、変換後
の機械語プログラムを実行する。インタプリタ方式は高
級言語で記述されたプログラムを、計算機の機械語プロ
グラムに変換することなしに、解釈実行する。
機上で実行する方法を大別すると、一般に、コンパイラ
方式、インタプリタ方式と呼ぶ、以下の2つに分けられ
る。コンパイラ方式は高級言語で記述されたプログラム
を、計算機の機械語プログラムに変換した上で、変換後
の機械語プログラムを実行する。インタプリタ方式は高
級言語で記述されたプログラムを、計算機の機械語プロ
グラムに変換することなしに、解釈実行する。
【0003】上記において、(コンパイラ方式)は内部
処理の方式により、一般に、以下の2通りに分類され
る。 (方式1)原始言語と計算機に依存して、原始プログラ
ムを計算機の機械語プログラムに直接変換するコンパイ
ラ方式。 (方式2)原始プログラムを計算機に非依存の中間語プ
ログラムに変換する中間語生成部と、中間語プログラム
を機械語プログラムに計算機に依存して変換する機械語
生成部とから成るコンパイラ方式。 上記(方式1)のコンパイラは計算機と一対一対応にな
るので、計算機に依存するデータ型のサイズ、および、
語境界は、即値として処理されている。
処理の方式により、一般に、以下の2通りに分類され
る。 (方式1)原始言語と計算機に依存して、原始プログラ
ムを計算機の機械語プログラムに直接変換するコンパイ
ラ方式。 (方式2)原始プログラムを計算機に非依存の中間語プ
ログラムに変換する中間語生成部と、中間語プログラム
を機械語プログラムに計算機に依存して変換する機械語
生成部とから成るコンパイラ方式。 上記(方式1)のコンパイラは計算機と一対一対応にな
るので、計算機に依存するデータ型のサイズ、および、
語境界は、即値として処理されている。
【0004】上記において、(方式2)は、実現方式か
ら以下の3通りに分類される。 (方式2−1)原始プログラムを計算機に非依存の中間
語プログラムに変換する中間語生成部と、中間語プログ
ラムを特定の一種類の計算機の機械語プログラムに変換
する機械語生成部とから成るコンパイラ方式。 (方式2−2)原始プログラムを計算機に非依存の中間
語プログラムに変換する中間語生成部と、中間語プログ
ラムを保持している複数の種類の計算機に各々依存した
情報を用いて各機械語プログラムに変換することが可能
な機械語生成部とから成るコンパイラ方式。(特開平3
−144829) (方式2−3)原始プログラムを原始言語に非依存、か
つ計算機に非依存な抽象オブジェクトプログラムに変換
する抽象オブジェクトプログラム生成部と、抽象オブジ
ェクトを機械語プログラムに計算機に依存して変換する
機械語生成部とから成るコンパイラ方式。(特願平3−
91980) 上記(方式2−1)のコンパイラは、計算機と一対一対
応になるので、計算機に依存するデータ型のサイズ、お
よび、語境界は、機械語生成部において計算機固有の値
として処理されている。上記(方式2−2)のコンパイ
ラは、データ型のサイズや語境界を含む計算機に依存し
た固有情報を複数の種類の計算機についてコンパイラ内
部で保持し、その範囲で多機種の計算機と対応してい
る。上記(方式2−3)のコンパイラは、抽象オブジェ
クトプログラム生成部と機械語生成部の組合せにより多
言語多機種対応コンパイラになる。データ型のサイズと
語境界については、計算機に依存した機械語生成部にお
いて計算機固有の値として処理されている。
ら以下の3通りに分類される。 (方式2−1)原始プログラムを計算機に非依存の中間
語プログラムに変換する中間語生成部と、中間語プログ
ラムを特定の一種類の計算機の機械語プログラムに変換
する機械語生成部とから成るコンパイラ方式。 (方式2−2)原始プログラムを計算機に非依存の中間
語プログラムに変換する中間語生成部と、中間語プログ
ラムを保持している複数の種類の計算機に各々依存した
情報を用いて各機械語プログラムに変換することが可能
な機械語生成部とから成るコンパイラ方式。(特開平3
−144829) (方式2−3)原始プログラムを原始言語に非依存、か
つ計算機に非依存な抽象オブジェクトプログラムに変換
する抽象オブジェクトプログラム生成部と、抽象オブジ
ェクトを機械語プログラムに計算機に依存して変換する
機械語生成部とから成るコンパイラ方式。(特願平3−
91980) 上記(方式2−1)のコンパイラは、計算機と一対一対
応になるので、計算機に依存するデータ型のサイズ、お
よび、語境界は、機械語生成部において計算機固有の値
として処理されている。上記(方式2−2)のコンパイ
ラは、データ型のサイズや語境界を含む計算機に依存し
た固有情報を複数の種類の計算機についてコンパイラ内
部で保持し、その範囲で多機種の計算機と対応してい
る。上記(方式2−3)のコンパイラは、抽象オブジェ
クトプログラム生成部と機械語生成部の組合せにより多
言語多機種対応コンパイラになる。データ型のサイズと
語境界については、計算機に依存した機械語生成部にお
いて計算機固有の値として処理されている。
【0005】
【発明が解決しようとする課題】従来のコンパイラで
は、計算機に依存した処理部において、各データ型のサ
イズと語境界は計算機固有の値として処理されていたの
で、コンパイラで生成するオブジェクトは対象機種固有
のものであり、利用者が指定したい新しいサイズと語境
界を持つデータ型でオブジェクトプログラムを実行する
ことができなかった。従来のインタプリタにおいても同
様のことがいえる。実際、上記コンパイラの(方式1)
において、新しいサイズと語境界を持つデータ型を持つ
仮想計算機上で原始プログラムを実行したい場合には、
新しい仮想計算機に依存した新しいコンパイラを新規作
成する必要がある。上記コンパイラの(方式2−1)、
(方式2−3)において、新しいサイズと語境界を持つ
データ型を持つ仮想計算機上で原始プログラムを実行し
たい場合は、新しい仮想計算機に依存した新しい機械語
生成部を作成し、新しい機械語生成部を組み合わせたコ
ンパイラを新規作成する必要がある。上記コンパイラの
(方式2−2)において、新しいサイズと語境界を持つ
データ型を持つ仮想計算機上で原始プログラムを実行し
たい場合は、新しいサイズと語境界を持つデータ型を仮
想計算機に依存した情報としてコンパイラ内部に保持さ
せるため、既存のコンパイラを改造する必要がある。
は、計算機に依存した処理部において、各データ型のサ
イズと語境界は計算機固有の値として処理されていたの
で、コンパイラで生成するオブジェクトは対象機種固有
のものであり、利用者が指定したい新しいサイズと語境
界を持つデータ型でオブジェクトプログラムを実行する
ことができなかった。従来のインタプリタにおいても同
様のことがいえる。実際、上記コンパイラの(方式1)
において、新しいサイズと語境界を持つデータ型を持つ
仮想計算機上で原始プログラムを実行したい場合には、
新しい仮想計算機に依存した新しいコンパイラを新規作
成する必要がある。上記コンパイラの(方式2−1)、
(方式2−3)において、新しいサイズと語境界を持つ
データ型を持つ仮想計算機上で原始プログラムを実行し
たい場合は、新しい仮想計算機に依存した新しい機械語
生成部を作成し、新しい機械語生成部を組み合わせたコ
ンパイラを新規作成する必要がある。上記コンパイラの
(方式2−2)において、新しいサイズと語境界を持つ
データ型を持つ仮想計算機上で原始プログラムを実行し
たい場合は、新しいサイズと語境界を持つデータ型を仮
想計算機に依存した情報としてコンパイラ内部に保持さ
せるため、既存のコンパイラを改造する必要がある。
【0006】本発明の目的は、コンパイラの生成する中
間オブジェクトとそれに基づくインタプリタにおいて、
各データ型に任意のサイズと語境界を利用者が指定する
方法を提供することにより、利用者が設計する新しいサ
イズと語境界を持つデータ型を持つ仮想計算機用コンパ
イラ、及び、インタプリタを新規作成する必要なしに原
始プログラムを実行することにある。
間オブジェクトとそれに基づくインタプリタにおいて、
各データ型に任意のサイズと語境界を利用者が指定する
方法を提供することにより、利用者が設計する新しいサ
イズと語境界を持つデータ型を持つ仮想計算機用コンパ
イラ、及び、インタプリタを新規作成する必要なしに原
始プログラムを実行することにある。
【0007】
【課題を解決するための手段】本発明のコンパイラ、お
よび、インタプリタで指定するデータ型サイズ情報と
は、予め決められたデータ型名、サイズ、語境界を一組
とした情報の集まりとする。予め決められたデータ型と
しては、原則として言語に依存した基本型を考える。但
し、抽象レジスタマシン言語を用いるコンパイラ、およ
び、インタプリタに関しては、全てのプログラム言語の
基本型を対象とする。
よび、インタプリタで指定するデータ型サイズ情報と
は、予め決められたデータ型名、サイズ、語境界を一組
とした情報の集まりとする。予め決められたデータ型と
しては、原則として言語に依存した基本型を考える。但
し、抽象レジスタマシン言語を用いるコンパイラ、およ
び、インタプリタに関しては、全てのプログラム言語の
基本型を対象とする。
【0008】上記目的達成のため、コンパイラ、およ
び、インタプリタ内に付加した入力データ型サイズ情報
処理部では、入力した上記データ型サイズ情報を受け取
り、原始プログラムに存在する全てのデータ型のサイズ
と語境界を入力されたデータ型サイズ情報に基づき変換
する。
び、インタプリタ内に付加した入力データ型サイズ情報
処理部では、入力した上記データ型サイズ情報を受け取
り、原始プログラムに存在する全てのデータ型のサイズ
と語境界を入力されたデータ型サイズ情報に基づき変換
する。
【0009】
【作用】上記データ型サイズ入力部では、外部から指定
されたデータ型のサイズをコンパイラ、および、インタ
プリンタ内に取り入れ、さらにデータ型サイズ変換部
で、各データ型サイズを指定されたサイズに変換するこ
とができるので、利用者が設計する新しいサイズと語境
界を持つデータ型を持つ仮想計算機用コンパイラ、及
び、インタプリタを新規作成することなしに原始プログ
ラムを実行することができる。
されたデータ型のサイズをコンパイラ、および、インタ
プリンタ内に取り入れ、さらにデータ型サイズ変換部
で、各データ型サイズを指定されたサイズに変換するこ
とができるので、利用者が設計する新しいサイズと語境
界を持つデータ型を持つ仮想計算機用コンパイラ、及
び、インタプリタを新規作成することなしに原始プログ
ラムを実行することができる。
【0010】
【実施例】以下、本発明における実施例を図を用いて説
明する。図1は、本発明におけるデータ型サイズ可変な
コンパイラの構成の一実施例を示している。原始プログ
ラム102を本発明のコンパイラ101が読み込み、計
算機機械語プログラム103に変換する過程において、
コンパイラ101外部から入力されるデータ型サイズ指
定情報104を入力データ型サイズ情報処理部105を
通しコンパイラ101に取り込み、原始プログラム内の
データ型のサイズと語境界を決定する。データ型サイズ
指定情報の例は図9に示す。以下の図においては、図1
と同じ参照番号は同じものをさす。
明する。図1は、本発明におけるデータ型サイズ可変な
コンパイラの構成の一実施例を示している。原始プログ
ラム102を本発明のコンパイラ101が読み込み、計
算機機械語プログラム103に変換する過程において、
コンパイラ101外部から入力されるデータ型サイズ指
定情報104を入力データ型サイズ情報処理部105を
通しコンパイラ101に取り込み、原始プログラム内の
データ型のサイズと語境界を決定する。データ型サイズ
指定情報の例は図9に示す。以下の図においては、図1
と同じ参照番号は同じものをさす。
【0011】図2は、本発明における中間語プログラム
を介するデータ型サイズ可変なコンパイラの構成の一実
施例を示している。原始プログラム102を本発明のコ
ンパイラ201が読み込み、中間語生成部202を通し
計算機に非依存な中間語プログラム203に変換する。
生成された中間語プログラムを機械語生成部204を通
し計算機機械語プログラム103に変換する過程におい
て、コンパイラ201外部から入力されるデータ型サイ
ズ指定情報104を入力データ型サイズ情報処理部10
5を通しコンパイラ201に取り込み、原始プログラム
内のデータ型のサイズと語境界を決定する。以下の図に
おいては、図2と同じ参照番号は同じものをさす。
を介するデータ型サイズ可変なコンパイラの構成の一実
施例を示している。原始プログラム102を本発明のコ
ンパイラ201が読み込み、中間語生成部202を通し
計算機に非依存な中間語プログラム203に変換する。
生成された中間語プログラムを機械語生成部204を通
し計算機機械語プログラム103に変換する過程におい
て、コンパイラ201外部から入力されるデータ型サイ
ズ指定情報104を入力データ型サイズ情報処理部10
5を通しコンパイラ201に取り込み、原始プログラム
内のデータ型のサイズと語境界を決定する。以下の図に
おいては、図2と同じ参照番号は同じものをさす。
【0012】図3は、本発明における抽象オブジェクト
プログラムを介するデータ型サイズ可変なコンパイラの
構成の一実施例を示している。原始プログラム102を
本発明のコンパイラ301が読み込み、抽象オブジェク
トプログラム生成部302を通しプログラム言語と計算
機に非依存な抽象オブジェクトプログラム303に変換
する。生成された抽象オブジェクトプログラムを機械語
生成部304を通し計算機機械語プログラム103に変
換する過程において、コンパイラ301外部から入力さ
れるデータ型サイズ指定情報104を入力データ型サイ
ズ情報処理部105を通しコンパイラ301に取り込
み、原始プログラム内のデータ型のサイズと語境界を決
定する。抽象オブジェクトプログラム例を図8に示す。
以下の図においては、図3と同じ参照番号は同じものを
さす。
プログラムを介するデータ型サイズ可変なコンパイラの
構成の一実施例を示している。原始プログラム102を
本発明のコンパイラ301が読み込み、抽象オブジェク
トプログラム生成部302を通しプログラム言語と計算
機に非依存な抽象オブジェクトプログラム303に変換
する。生成された抽象オブジェクトプログラムを機械語
生成部304を通し計算機機械語プログラム103に変
換する過程において、コンパイラ301外部から入力さ
れるデータ型サイズ指定情報104を入力データ型サイ
ズ情報処理部105を通しコンパイラ301に取り込
み、原始プログラム内のデータ型のサイズと語境界を決
定する。抽象オブジェクトプログラム例を図8に示す。
以下の図においては、図3と同じ参照番号は同じものを
さす。
【0013】図4は、本発明におけるデータ型サイズ可
変なインタプリタの構成の一実施例を示している。原始
プログラム102を本発明のインタプリタ401が読み
込み、解釈実行する過程において、インタプリタ401
外部から入力されるデータ型サイズ指定情報104を入
力データ型サイズ情報処理部105を通しインタプリタ
401に取り込み、原始プログラム内のデータ型のサイ
ズと語境界を決定する。
変なインタプリタの構成の一実施例を示している。原始
プログラム102を本発明のインタプリタ401が読み
込み、解釈実行する過程において、インタプリタ401
外部から入力されるデータ型サイズ指定情報104を入
力データ型サイズ情報処理部105を通しインタプリタ
401に取り込み、原始プログラム内のデータ型のサイ
ズと語境界を決定する。
【0014】図5は、本発明における中間語プログラム
を介するデータ型サイズ可変なインタプリタの構成の一
実施例を示している。原始プログラム102を本発明の
インタプリタ501が読み込み、中間語生成部202を
通し計算機に非依存な中間語プログラム203に変換す
る。生成された中間語プログラムを解釈実行する過程に
おいて、インタプリタ501外部から入力されるデータ
型サイズ指定情報104を入力データ型サイズ情報処理
部105を通しインタプリタ401に取り込み、原始プ
ログラム内のデータ型のサイズと語境界を決定する。
を介するデータ型サイズ可変なインタプリタの構成の一
実施例を示している。原始プログラム102を本発明の
インタプリタ501が読み込み、中間語生成部202を
通し計算機に非依存な中間語プログラム203に変換す
る。生成された中間語プログラムを解釈実行する過程に
おいて、インタプリタ501外部から入力されるデータ
型サイズ指定情報104を入力データ型サイズ情報処理
部105を通しインタプリタ401に取り込み、原始プ
ログラム内のデータ型のサイズと語境界を決定する。
【0015】図6は、本発明における抽象オブジェクト
プログラムを介するデータ型サイズ可変なインタプリタ
の構成の一実施例を示している。原始プログラム102
を本発明のインタプリタ601が読み込み、抽象オブジ
ェクトプログラム生成部302を通しプログラム言語と
計算機に非依存な抽象オブジェクトプログラム303に
変換する。生成された抽象オブジェクトプログラムを解
釈実行する過程において、インタプリタ401外部から
入力されるデータ型サイズ指定情報104を入力データ
型サイズ情報処理部105を通しインタプリタ601に
取り込み、原始プログラム内のデータ型のサイズと語境
界を決定する。
プログラムを介するデータ型サイズ可変なインタプリタ
の構成の一実施例を示している。原始プログラム102
を本発明のインタプリタ601が読み込み、抽象オブジ
ェクトプログラム生成部302を通しプログラム言語と
計算機に非依存な抽象オブジェクトプログラム303に
変換する。生成された抽象オブジェクトプログラムを解
釈実行する過程において、インタプリタ401外部から
入力されるデータ型サイズ指定情報104を入力データ
型サイズ情報処理部105を通しインタプリタ601に
取り込み、原始プログラム内のデータ型のサイズと語境
界を決定する。
【0016】図7は、本発明におけるデータ型サイズ可
変なインタプリンタに連結したアプリケーションプログ
ラムの構成の一実施例を示している。データ701を処
理するアプリケーションプログラム702がデータ型サ
イズ指定情報出力部からデータ型サイズ指定情報を連結
しているデータ型サイズ可変なインタプリタ401の入
力データ型サイズ情報処理部に渡すことによって、アプ
リケーションプログラム内に存在するデータ型とアプリ
ケーションプログラムが処理するデータ型のサイズと語
境界をアプリケーションプログラムから出力されたデー
タ型サイズ指定情報をもとに決定する。
変なインタプリンタに連結したアプリケーションプログ
ラムの構成の一実施例を示している。データ701を処
理するアプリケーションプログラム702がデータ型サ
イズ指定情報出力部からデータ型サイズ指定情報を連結
しているデータ型サイズ可変なインタプリタ401の入
力データ型サイズ情報処理部に渡すことによって、アプ
リケーションプログラム内に存在するデータ型とアプリ
ケーションプログラムが処理するデータ型のサイズと語
境界をアプリケーションプログラムから出力されたデー
タ型サイズ指定情報をもとに決定する。
【0017】図8は、抽象オブジェクトプログラムの一
例を示している。ソースプログラムに定義されるデータ
型の型名、サイズ、語境界は、抽象オブジェクトプログ
ラム内でステップ801の様にラベルと、データ型名と
定数による式で表せる。アドレスはステップ802で表
現される。ステップ803ではアドレスを表現している
ラベルをアドレスとして参照している。予め決められた
データ型のサイズと語境界が指定されたとき、実アドレ
スはアドレスを表現する式802を一度だけ評価する。
例を示している。ソースプログラムに定義されるデータ
型の型名、サイズ、語境界は、抽象オブジェクトプログ
ラム内でステップ801の様にラベルと、データ型名と
定数による式で表せる。アドレスはステップ802で表
現される。ステップ803ではアドレスを表現している
ラベルをアドレスとして参照している。予め決められた
データ型のサイズと語境界が指定されたとき、実アドレ
スはアドレスを表現する式802を一度だけ評価する。
【0018】図9は、データ型サイズ指定情報テーブル
の一例を示している。予め決められたデータ型名と、そ
れに対応したデータサイズと語境界を格納する領域を持
ったテーブルとする。図10は、実アドレスへの変換方
式の一実施例を表現するフロー図である。先ず、予め決
められたデータ型のサイズ指定情報が入力されたか否か
を判定する(ステップ1010)。予め決められたデー
タ型のサイズ指定情報が入力されていないとき、コンパ
イラ、もしくは、インタプリタ内で予め保持している計
算機依存のデータ型サイズ指定情報をコンパイラ、もし
くは、インタプリタ内から入力する(ステップ102
0)。入力された予め決められたデータ型サイズ情報を
図9のようなテーブルとしてコンパイラ、もしくは、イ
ンタプリタ内部に保持する(ステップ1030)。抽象
オブジェクトプログラム(図8)内で予め決められたデ
ータ型名で表現されている箇所(810の&int、8
11の&char、812の&int)をデータ型サイ
ズ情報テーブル(図9)を基に即値(810の&int
は2、811の&charは1、812の&intは
4)に置き換える(ステップ1040)。抽象オブジェ
クトプログラム内の全てのデータ型サイズ情報をステッ
プ1040で置き換えた即値を基に計算した結果を、デ
ータ型サイズ情報テーブル(図11)に格納し保持する
(ステップ1050)。抽象オブジェクトプログラム内
でアドレスを表現している式802をデータ型サイズ情
報テーブルを基に計算し、実アドレスをアドレス情報管
理テーブル(図12)に格納し保持する(ステップ10
60)。抽象オブジェクトプログラム内のアドレスを表
現しているラベルをアドレス情報管理テーブルを基に実
アドレスに置き換える。
の一例を示している。予め決められたデータ型名と、そ
れに対応したデータサイズと語境界を格納する領域を持
ったテーブルとする。図10は、実アドレスへの変換方
式の一実施例を表現するフロー図である。先ず、予め決
められたデータ型のサイズ指定情報が入力されたか否か
を判定する(ステップ1010)。予め決められたデー
タ型のサイズ指定情報が入力されていないとき、コンパ
イラ、もしくは、インタプリタ内で予め保持している計
算機依存のデータ型サイズ指定情報をコンパイラ、もし
くは、インタプリタ内から入力する(ステップ102
0)。入力された予め決められたデータ型サイズ情報を
図9のようなテーブルとしてコンパイラ、もしくは、イ
ンタプリタ内部に保持する(ステップ1030)。抽象
オブジェクトプログラム(図8)内で予め決められたデ
ータ型名で表現されている箇所(810の&int、8
11の&char、812の&int)をデータ型サイ
ズ情報テーブル(図9)を基に即値(810の&int
は2、811の&charは1、812の&intは
4)に置き換える(ステップ1040)。抽象オブジェ
クトプログラム内の全てのデータ型サイズ情報をステッ
プ1040で置き換えた即値を基に計算した結果を、デ
ータ型サイズ情報テーブル(図11)に格納し保持する
(ステップ1050)。抽象オブジェクトプログラム内
でアドレスを表現している式802をデータ型サイズ情
報テーブルを基に計算し、実アドレスをアドレス情報管
理テーブル(図12)に格納し保持する(ステップ10
60)。抽象オブジェクトプログラム内のアドレスを表
現しているラベルをアドレス情報管理テーブルを基に実
アドレスに置き換える。
【0019】図11は、ユーザ定義データ型サイズ情報
テーブルの一例を示している。ユーザが定義したデータ
型名と、されに対応したデータサイズとオフセット値を
格納する領域を持ったテーブルとする。図12は、アド
レス情報管理テーブルの一例を示している。
テーブルの一例を示している。ユーザが定義したデータ
型名と、されに対応したデータサイズとオフセット値を
格納する領域を持ったテーブルとする。図12は、アド
レス情報管理テーブルの一例を示している。
【0020】以下で、抽象オブジェクトプログラムの表
現方式について実施例を用いて説明する。図13は、抽
象レジスタマシンコードの表記形式の一例を示してい
る。抽象レジスタマシンコードの表記形式は、シンボル
フィールド(1301)、命令フィールド(130
2)、オペランド長指定を表記するA1フィールド(1
303)、オペランド型を表記するA2フィールド(1
304)とオペランドフィールド(1305)から構成
する。以下の表1から表5で各々のフィールドについて
示す。
現方式について実施例を用いて説明する。図13は、抽
象レジスタマシンコードの表記形式の一例を示してい
る。抽象レジスタマシンコードの表記形式は、シンボル
フィールド(1301)、命令フィールド(130
2)、オペランド長指定を表記するA1フィールド(1
303)、オペランド型を表記するA2フィールド(1
304)とオペランドフィールド(1305)から構成
する。以下の表1から表5で各々のフィールドについて
示す。
【0021】表1は、抽象レジスタマシンコードの表記
形式のシンボルフィールドの表記形式の一例を示してい
る。
形式のシンボルフィールドの表記形式の一例を示してい
る。
【0022】
【表1】
【0023】シンボルフィールドの表記形式が表現する
ものとして、シンボル名(9111)、レコードのメン
バ名(9121)、タイプ名(9131)、ディスプレ
イスメント(9141)、定数(9151)、ラベル名
(9161)等がある。
ものとして、シンボル名(9111)、レコードのメン
バ名(9121)、タイプ名(9131)、ディスプレ
イスメント(9141)、定数(9151)、ラベル名
(9161)等がある。
【0024】表2は、抽象レジスタマシンコードの表記
形式の命令フィールドの表記形式の一例を示している。
形式の命令フィールドの表記形式の一例を示している。
【0025】
【表2】
【0026】命令フィールドの表記形式が表現するもの
としては、表2に示した様な表記形式の命令から構成さ
れる。
としては、表2に示した様な表記形式の命令から構成さ
れる。
【0027】表3は、抽象レジスタマシンコードの表記
形式のA1フィールドの表記形式の一例を示している。
形式のA1フィールドの表記形式の一例を示している。
【0028】
【表3】
【0029】A1フィールドの表記形式は、オペランド
長を表現する型からなる。実際には、各高級言語が各々
持つデータ型から構成されている。
長を表現する型からなる。実際には、各高級言語が各々
持つデータ型から構成されている。
【0030】表4は、抽象レジスタマシンコードの表記
形式のA2フィールドの表記形式の一例を示している。
形式のA2フィールドの表記形式の一例を示している。
【0031】
【表4】
【0032】A2フィールドの表記形式は、オペランド
の型指定を表現している。
の型指定を表現している。
【0033】表5は、抽象レジスタマシンコードの表記
形式のオペランドフィールドの表記形式の一例を示して
いる。
形式のオペランドフィールドの表記形式の一例を示して
いる。
【0034】
【表5】
【0035】オペランドフィールド表記形式は、抽象レ
ジスタマシンのレジスタ名、シンボルフィールド(表
2)の表記形式のシンボル名等から構成される。この表
記形式に表れる記号について解説する。先頭に%がつい
たものは、抽象レジスタマシンのレジスタ名を表してい
る。その他のConst,Symp,disp,Off
s,Lblp,Type等は、表2のシンボルフィール
ドの表記形式と1対1対応している。
ジスタマシンのレジスタ名、シンボルフィールド(表
2)の表記形式のシンボル名等から構成される。この表
記形式に表れる記号について解説する。先頭に%がつい
たものは、抽象レジスタマシンのレジスタ名を表してい
る。その他のConst,Symp,disp,Off
s,Lblp,Type等は、表2のシンボルフィール
ドの表記形式と1対1対応している。
【0036】図14は、本発明のコンパイラ、および、
インタプリタの入力となるC言語のソースプログラムの
一例を示している。
インタプリタの入力となるC言語のソースプログラムの
一例を示している。
【0037】図15は、図14のソースプログラムに対
応した抽象オブジェクトプログラムの生成例(その1)
を示している。
応した抽象オブジェクトプログラムの生成例(その1)
を示している。
【0038】生成した抽象オブジェクトプログラムのい
くつかのコードについて表記形式との対応をみる。ステ
ップ1501のコードのシンボルフィールドには表1の
(9111)よりシンボル名(@1)が対応し、命令フ
ィールドにはDstring命令が対応し、A1、及
び、A2フィールドはこのコードにはなく、オペランド
フィールドには表5の(9531)の表記形式が対応し
ている。ステップ1511のコードのシンボルフィール
ドには表1の(9111)よりシンボル名(@5tem
p)が対応し、命令フィールドにはDlvar命令が対
応し、A1フィールドにはlongが対応し、A2フィ
ールドにはsが対応し、オペランドフィールドには表5
の(9541)の表記形式が対応している。ステップ1
521のコードのシンボルフィールドには表1の(91
61)よりラベル名(#lhead)が対応し、命令フ
ィールドにはLoops命令が対応し、A1、及び、A
2フィールドとオペランドフィールドはこのコードには
ない。ステップ1531のコードのシンボルフィールド
はこのコードになく、命令フィールドにはBrge命令
が対応し、A1フィールドにはlongが対応し、A2
フィールドにはsが対応し、オペランドフィールドには
表5の(9511)の表記形式が対応している。このコ
ードのオペランドフィールドに出現している(#lne
xt1)は、図16のステップ1536のコードのシン
ボルフィールドのラベル名(#lnext1)に対応し
ている。
くつかのコードについて表記形式との対応をみる。ステ
ップ1501のコードのシンボルフィールドには表1の
(9111)よりシンボル名(@1)が対応し、命令フ
ィールドにはDstring命令が対応し、A1、及
び、A2フィールドはこのコードにはなく、オペランド
フィールドには表5の(9531)の表記形式が対応し
ている。ステップ1511のコードのシンボルフィール
ドには表1の(9111)よりシンボル名(@5tem
p)が対応し、命令フィールドにはDlvar命令が対
応し、A1フィールドにはlongが対応し、A2フィ
ールドにはsが対応し、オペランドフィールドには表5
の(9541)の表記形式が対応している。ステップ1
521のコードのシンボルフィールドには表1の(91
61)よりラベル名(#lhead)が対応し、命令フ
ィールドにはLoops命令が対応し、A1、及び、A
2フィールドとオペランドフィールドはこのコードには
ない。ステップ1531のコードのシンボルフィールド
はこのコードになく、命令フィールドにはBrge命令
が対応し、A1フィールドにはlongが対応し、A2
フィールドにはsが対応し、オペランドフィールドには
表5の(9511)の表記形式が対応している。このコ
ードのオペランドフィールドに出現している(#lne
xt1)は、図16のステップ1536のコードのシン
ボルフィールドのラベル名(#lnext1)に対応し
ている。
【0039】図16は、図14のソースプログラムに対
応した抽象オブジェクトプログラムの生成例(その2)
を示している。
応した抽象オブジェクトプログラムの生成例(その2)
を示している。
【0040】生成した抽象オブジェクトプログラムのい
くつかのコードについて表記形式との対応をみる。ステ
ップ1561のコードのシンボルフィールドはこのコー
ドになく、命令フィールドにはLoope命令が対応
し、A1、及び、A2フィールドはこのコードにはな
く、オペランドフィールドには表5の(9521)の表
記形式が対応している。
くつかのコードについて表記形式との対応をみる。ステ
ップ1561のコードのシンボルフィールドはこのコー
ドになく、命令フィールドにはLoope命令が対応
し、A1、及び、A2フィールドはこのコードにはな
く、オペランドフィールドには表5の(9521)の表
記形式が対応している。
【0041】図17は、図16の抽象オブジェクトプロ
グラムの一部に対応した8086マシンコードプログラ
ムの生成例を示している。
グラムの一部に対応した8086マシンコードプログラ
ムの生成例を示している。
【0042】抽象オブジェクトプログラムの一部(図1
6のステップ1541からステップ1551)を具体的
なマシンコードプログラム(8086マシンコードプロ
グラム)に変換した結果を示している。
6のステップ1541からステップ1551)を具体的
なマシンコードプログラム(8086マシンコードプロ
グラム)に変換した結果を示している。
【0043】図18は、図16の抽象オブジェクトプロ
グラムの一部に対応した68020マシンコードプログ
ラムの生成例を示している。
グラムの一部に対応した68020マシンコードプログ
ラムの生成例を示している。
【0044】抽象オブジェクトプログラムの一部(図1
6のステップ1541からステップ1551)を具体的
なマシンコードプログラム(68020マシンコードプ
ログラム)に変換した結果を示している。
6のステップ1541からステップ1551)を具体的
なマシンコードプログラム(68020マシンコードプ
ログラム)に変換した結果を示している。
【0045】
【発明の効果】本発明の効果は、データ型サイズ入力部
で外部から指定されたデータ型のサイズと語境界をコン
パイラ、および、インタプリンタ内に取り入れ、さらに
データ型サイズ変換部で、各データ型サイズを指定され
たサイズと語境界に変換することにより外部入力でデー
タ型のサイズを任意に指定できるので、新しいサイズと
語境界を持つデータ型を持つ仮想計算機上原始プログラ
ムを実行する際、コンパイラ、及び、インタプリタを新
規作成する必要がなくなることである。
で外部から指定されたデータ型のサイズと語境界をコン
パイラ、および、インタプリンタ内に取り入れ、さらに
データ型サイズ変換部で、各データ型サイズを指定され
たサイズと語境界に変換することにより外部入力でデー
タ型のサイズを任意に指定できるので、新しいサイズと
語境界を持つデータ型を持つ仮想計算機上原始プログラ
ムを実行する際、コンパイラ、及び、インタプリタを新
規作成する必要がなくなることである。
【0046】
【図1】本発明におけるデータ型サイズ可変なコンパイ
ラの構成の一実施例を示す図である。
ラの構成の一実施例を示す図である。
【図2】本発明における中間語プログラムを介するデー
タ型サイズ可変なコンパイラの構成の一実施例を示す図
である。
タ型サイズ可変なコンパイラの構成の一実施例を示す図
である。
【図3】本発明における抽象オブジェクトプログラムを
介するデータ型サイズ可変なコンパイラの構成の一実施
例を示す図である。
介するデータ型サイズ可変なコンパイラの構成の一実施
例を示す図である。
【図4】本発明におけるデータ型サイズ可変なインタプ
リタの構成の一実施例を示す図である。
リタの構成の一実施例を示す図である。
【図5】本発明における中間語プログラムを介するデー
タ型サイズ可変なインタプリタの構成の一実施例を示す
図である。
タ型サイズ可変なインタプリタの構成の一実施例を示す
図である。
【図6】本発明における抽象オブジェクトプログラムを
介するデータ型サイズ可変なインタプリタの構成の一実
施例を示す図である。
介するデータ型サイズ可変なインタプリタの構成の一実
施例を示す図である。
【図7】本発明におけるデータ型サイズ可変なインタプ
リンタに連結したアプリケーションプログラムの構成の
一実施例を示す図である。
リンタに連結したアプリケーションプログラムの構成の
一実施例を示す図である。
【図8】抽象オブジェクトプログラムの一例を示す図で
ある。
ある。
【図9】データ型サイズ指定情報の一例を示す図であ
る。
る。
【図10】実アドレスへの変換方式の一実施例を表現す
るフロー図である。
るフロー図である。
【図11】ユーザ定義データ型サイズ情報テーブルの一
例を示す図である。
例を示す図である。
【図12】アドレス情報管理テーブルの一例を示す図で
ある。
ある。
【図13】抽象レジスタマシンコードの表記形式を示す
図である。
図である。
【図14】本発明のコンパイラ、および、インタプリタ
の入力となるC言語のソースプログラムの一例を示す図
である。
の入力となるC言語のソースプログラムの一例を示す図
である。
【図15】図14のソースプログラムに対応した抽象オ
ブジェクトプログラムの生成例を示す図(その1)であ
る。
ブジェクトプログラムの生成例を示す図(その1)であ
る。
【図16】図14のソースプログラムに対応した抽象オ
ブジェクトプログラムの生成例を示す図(その2)であ
る。
ブジェクトプログラムの生成例を示す図(その2)であ
る。
【図17】図16の抽象オブジェクトプログラムの一部
に対応した8086マシンコードプログラムの生成例を
示す図である。
に対応した8086マシンコードプログラムの生成例を
示す図である。
【図18】図16の抽象オブジェクトプログラムの一部
に対応した68020マシンコードプログラムの生成例
を示す図である。
に対応した68020マシンコードプログラムの生成例
を示す図である。
101 コンパイラ 102 原始プログラム 103 計算機の機械語プログラム 104 データ型サイズ指定情報 105 入力データ型サイズ情報処理部 201 コンパイラ 202 中間語生成部 203 計算機非依存中間語プログラム 204 中間語プログラムからの機械語生成部 301 コンパイラ 302 抽象オブジェクトプログラム生成部 303 抽象オブジェクトプログラム 304 抽象オブジェクトプログラムからの機械語生成
部 401 インタプリタ 501 インタプリタ 502 中間語プログラムからのインタプリタ部 601 インタプリタ 602 言語依存デバック情報 603 言語依存デバック情報処理部 604 抽象オブジェクトプログラムからのインタプリ
タ部 701 アプリケーション処理用データ 702 アプリケーションプログラム 703 データ型サイズ指定情報出力部 704 アプリケーション実行結果データ 801 ユーザ定義データ型サイズ情報の抽象オブジェ
クトプログラム内表現
部 401 インタプリタ 501 インタプリタ 502 中間語プログラムからのインタプリタ部 601 インタプリタ 602 言語依存デバック情報 603 言語依存デバック情報処理部 604 抽象オブジェクトプログラムからのインタプリ
タ部 701 アプリケーション処理用データ 702 アプリケーションプログラム 703 データ型サイズ指定情報出力部 704 アプリケーション実行結果データ 801 ユーザ定義データ型サイズ情報の抽象オブジェ
クトプログラム内表現
───────────────────────────────────────────────────── フロントページの続き (72)発明者 渡辺 坦 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内
Claims (7)
- 【請求項1】原始プログラムをターゲット計算機の機械
語プログラムに変換するコンパイラにおいて、原始プロ
グラムをターゲット計算機非依存の中間語プログラムに
変換する中間語生成部と、中間語プログラムをターゲッ
ト計算機の機械語プログラムに変換する機械語生成部と
から成るコンパイラであって、入力データ型サイズ情報
処理部を機械語生成部に有することを特徴とするコンパ
イラ。 - 【請求項2】請求項1のコンパイラにおいて、原始プロ
グラムを言語非依存の抽象オブジェクトプログラムに変
換する抽象オブジェクトプログラム生成部と、抽象オブ
ジェクトをターゲット計算機の機械語プログラムに変換
する機械語生成部とから成るコンパイラであって、 該抽象オブジェクトプログラムは、抽象レジスタマシン
の命令語列からなり、 該抽象レジスタマシンは、複数個のレジスタと、レジス
タとメモリとの間の転送命令と、レジスタ上の演算命令
と、命令実行の順序を制御する分岐命令とを持ってお
り、入力データ型サイズ情報処理部を機械語生成部に有
することを特徴とするコンパイラ。 - 【請求項3】原始プログラムをターゲット計算機上で直
接解釈実行するインタプリタにおいて、原始プログラム
をターゲット計算機非依存の中間語プログラムに変換
し、ターゲット計算機上で中間語プログラムを解釈実行
するインタプリタであって、入力データ型サイズ情報処
理部を有することを特徴とするインタプリタ。 - 【請求項4】請求項3のインタプリンタにおいて、原始
プログラムを言語非依存の抽象オブジェクトプログラム
に変換し、計算機上で抽象オブジェクトプログラムを解
釈実行するインタプリタであって、入力データ型サイズ
情報処理部を有することを特徴とするインタプリタ。 - 【請求項5】請求項3のインタプリタと連結したアプリ
ケーションプログラムにおいて、アプリケーションプロ
グラム内に存在するデータ型とアプリケーションプログ
ラムが処理するデータ型のサイズと語境界を任意に変更
するため、予め決められたデータ型のサイズと語境界に
ついての情報をインタプリタに出力するための処理部を
要するアプリケーションプログラム。 - 【請求項6】請求項2のコンパイラであって、生成され
た抽象オブジェクトプログラムにおいて抽象レジスタマ
シンのアドレスはデータ型名と定数の積の和で表わす式
で表現し、アドレスを参照する際はアドレスを表現する
式に対応したラベル名を用いることにより、抽象レジス
タマシンのアドレスを表わす式の評価は一度だけですむ
ことを特徴とするコンパイラ。 - 【請求項7】請求項4のインタプリタであって、生成さ
れた抽象オブジェクトプログラムにおいて抽象レジスタ
マシンのアドレスはデータ型名と定数の積の和で表わす
式で表現し、アドレスを参照する際はアドレスを表現す
る式に対応したラベル名を用いることにより、抽象レジ
スタマシンのアドレスを表わす式の評価は一度だけです
むことを特徴とするインタプリタ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2239093A JPH06236282A (ja) | 1993-02-10 | 1993-02-10 | データ型サイズ可変なコンパイラ、およびインタプリタ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2239093A JPH06236282A (ja) | 1993-02-10 | 1993-02-10 | データ型サイズ可変なコンパイラ、およびインタプリタ |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06236282A true JPH06236282A (ja) | 1994-08-23 |
Family
ID=12081333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2239093A Pending JPH06236282A (ja) | 1993-02-10 | 1993-02-10 | データ型サイズ可変なコンパイラ、およびインタプリタ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH06236282A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003502774A (ja) * | 1999-06-22 | 2003-01-21 | マイクロソフト コーポレイション | 中間言語内の不定サイズ変数 |
-
1993
- 1993-02-10 JP JP2239093A patent/JPH06236282A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003502774A (ja) * | 1999-06-22 | 2003-01-21 | マイクロソフト コーポレイション | 中間言語内の不定サイズ変数 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5854929A (en) | Method of generating code for programmable processors, code generator and application thereof | |
US5918035A (en) | Method for processor modeling in code generation and instruction set simulation | |
TW484099B (en) | Method and apparatus for efficient invocation of Java methods from native code | |
TW518511B (en) | Method of executing an interpreter program | |
JP2000035893A (ja) | デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及びその制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記憶媒体 | |
JP2006155632A (ja) | コンパイルシステム、記録媒体およびコンパイル方法 | |
US5991538A (en) | System for generating and using programs in an object-oriented environment with a message dispatch architecture | |
JP4026940B2 (ja) | プログラム変換装置 | |
CN113835688B (zh) | 一种科学计算语言解释器的对象封装方法 | |
JPH06236282A (ja) | データ型サイズ可変なコンパイラ、およびインタプリタ | |
JP2023038463A (ja) | ソースコード変換装置、及びプログラム | |
JP2002268896A (ja) | 制御プログラム作成方法とその装置 | |
JPH05346332A (ja) | 試験プログラム実行方法 | |
JPH08286896A (ja) | ソフトウェア開発方法及びソフトウェア開発システム | |
JP2719277B2 (ja) | プログラム自動解析装置 | |
JP2001022808A (ja) | 論理回路削減装置ならびに論理シミュレーション方法および装置 | |
JP2019012324A (ja) | コンパイラ | |
JP2554246B2 (ja) | 目的モジユ−ル生成方式 | |
JP2003085223A (ja) | ハードウェア・ソフトウェア統合設計システム | |
JPH02110636A (ja) | タグ・アーキテクチャマシンのデバッグ装置とそのコンパイラ | |
Wilcox | The MAINSAIL Project: Developing Tools for Software Portability | |
Libes et al. | An Object-Oriented Tcl/Tk Binding for Interpreted Control of the NIST EXPRESS Toolkit in the NIST STEP Application Protocol Development Environment | |
JPH03186933A (ja) | 言語処理システムのシンボル処理方式 | |
JPH06168140A (ja) | プログラム変換装置 | |
JPH0754464B2 (ja) | マイクロプログラム翻訳処理方法 |