JPH02201541A - コンパイル方式 - Google Patents
コンパイル方式Info
- Publication number
- JPH02201541A JPH02201541A JP2051489A JP2051489A JPH02201541A JP H02201541 A JPH02201541 A JP H02201541A JP 2051489 A JP2051489 A JP 2051489A JP 2051489 A JP2051489 A JP 2051489A JP H02201541 A JPH02201541 A JP H02201541A
- Authority
- JP
- Japan
- Prior art keywords
- data
- text
- program
- initial value
- section
- 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
- 238000000034 method Methods 0.000 claims description 12
- 239000000126 substance Substances 0.000 abstract 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
(産業上の利用分野)
本発明は、ソースプログラムから目的プログラムを生成
するコンパイル方式に関して、特に目的プログラムのデ
ータ部の容量を少なくすることができるコンパイル方式
に関する (従来の技術) ソースプログラムは、一般に、命令部とデータ記述定義
から構成され、コンパイラでコンパイルされ、データ部
、コード部およびこれらを管理する制御情報を含み計算
機で実行可能な目的プログラムが生成されてファイル内
に格納されている。
するコンパイル方式に関して、特に目的プログラムのデ
ータ部の容量を少なくすることができるコンパイル方式
に関する (従来の技術) ソースプログラムは、一般に、命令部とデータ記述定義
から構成され、コンパイラでコンパイルされ、データ部
、コード部およびこれらを管理する制御情報を含み計算
機で実行可能な目的プログラムが生成されてファイル内
に格納されている。
ソースプログラムにおけるそれぞれのデータ記述定義に
は一般に実際のデータ(データ実体)を予め含んでいる
場合と、実際のデータは含まず領域だけ確保する場合と
があるが、コンパイラはいずれの場合もデータ記述定義
で指定された領域を目的プログラムのデータ部内に生成
している。
は一般に実際のデータ(データ実体)を予め含んでいる
場合と、実際のデータは含まず領域だけ確保する場合と
があるが、コンパイラはいずれの場合もデータ記述定義
で指定された領域を目的プログラムのデータ部内に生成
している。
(発明が解決しようとする課題)
上述したように、データ記述定義が実際のデータを予め
含まず領域だ(ブ確保する場合でも、従来のコンパイラ
は目的プログラムのデータ部内にそのデータ記述定義の
領域を生成しているので、目的プログラムが大きくなり
ファイルの容量などの保管コストが大きくなるという欠
点がある。このように従来のコンパイル方式には解決す
べき課題があった。
含まず領域だ(ブ確保する場合でも、従来のコンパイラ
は目的プログラムのデータ部内にそのデータ記述定義の
領域を生成しているので、目的プログラムが大きくなり
ファイルの容量などの保管コストが大きくなるという欠
点がある。このように従来のコンパイル方式には解決す
べき課題があった。
本発明は、このような事情に鑑みてなされたものであり
、その目的は、実際のデータを予め含んでいないデータ
記述定義に対しては目的プログラムのデータ部にデータ
を生成しないことにより、目的プログラムの容量を少な
くして保管コストを減らすことができるコンパイル方式
を提供することにある。
、その目的は、実際のデータを予め含んでいないデータ
記述定義に対しては目的プログラムのデータ部にデータ
を生成しないことにより、目的プログラムの容量を少な
くして保管コストを減らすことができるコンパイル方式
を提供することにある。
(課題を解決するための手段)
本発明のコンパイル方式は、上記目的を達成するために
、ソースプログラムからコード部、データ部および前記
コード部と前記データ部とを管理する制御情報を含む目
的プログラムを生成するコンパイラにおいて、 前記ソースプログラム内のデータ定義記述がデータ実体
を予め含んでいるか否かを判定する判定手段と、 該判定手段により前記データ定義記述がデータ実体を含
んでいないと判定されると前記プログラム制御情報に前
記データ定義記述の領域を示す情報を設定するデータ部
生成手段とを有する。
、ソースプログラムからコード部、データ部および前記
コード部と前記データ部とを管理する制御情報を含む目
的プログラムを生成するコンパイラにおいて、 前記ソースプログラム内のデータ定義記述がデータ実体
を予め含んでいるか否かを判定する判定手段と、 該判定手段により前記データ定義記述がデータ実体を含
んでいないと判定されると前記プログラム制御情報に前
記データ定義記述の領域を示す情報を設定するデータ部
生成手段とを有する。
(作用)
本発明のコンパイル方式においては、判定手段が、ソー
スプログラム内のデータ定義記述がデータ実体を予め含
んでいないと判定すると、データ部生成手段は、プログ
ラム制御情報にデータ定義記述の領域を示す情報を設定
する。
スプログラム内のデータ定義記述がデータ実体を予め含
んでいないと判定すると、データ部生成手段は、プログ
ラム制御情報にデータ定義記述の領域を示す情報を設定
する。
(実施例)
次に、本発明の実施例について図面を参照して詳細に説
明する。
明する。
第1図は本発明の実施例の構成図であり、1はコンパイ
ラ、2,3.4はコンパイラ1に接続されたファイル装
置であり、ファイル装置2はソースプログラム21を、
ファイル装置3は中間テキストファイル31を、ファイ
ル装!4はプログラム制御情報部42とデータ部43と
コード部44とをそれぞれ含む、コンパイラ1は、判定
手段12を含んだフロントエンド部11およびデータ部
生成手段14を有するバックエンド部13から構成され
ている。また、データ部生成手段14はバッファαを含
んでいる。
ラ、2,3.4はコンパイラ1に接続されたファイル装
置であり、ファイル装置2はソースプログラム21を、
ファイル装置3は中間テキストファイル31を、ファイ
ル装!4はプログラム制御情報部42とデータ部43と
コード部44とをそれぞれ含む、コンパイラ1は、判定
手段12を含んだフロントエンド部11およびデータ部
生成手段14を有するバックエンド部13から構成され
ている。また、データ部生成手段14はバッファαを含
んでいる。
第2図は、データ記述定義の中間テキストの形式を示し
たものである。第2図(a)の初期テキスト51はデー
タ記述定義に実際のデータが予めある場合の中間テキス
トの形式を示したものであり、実際のデータであるデー
タ実体Cとデータ実体Cの長さ(例えばバイト長)であ
る長さBと、データ実体Cを格納する際のアドレスを示
すデータアドレスAとから構成されている。第2図(b
)は初期値なしテキスト52の形式を示したものであり
、同図(a)における初期値テキスト51のデータ実体
Cを取り除いたものと同一である。なお、初期値なしテ
キスト52においては、データ実体Cは例えばプログラ
ム実行時にプログラムにより生成されるか、又は外部か
ら入力される。
たものである。第2図(a)の初期テキスト51はデー
タ記述定義に実際のデータが予めある場合の中間テキス
トの形式を示したものであり、実際のデータであるデー
タ実体Cとデータ実体Cの長さ(例えばバイト長)であ
る長さBと、データ実体Cを格納する際のアドレスを示
すデータアドレスAとから構成されている。第2図(b
)は初期値なしテキスト52の形式を示したものであり
、同図(a)における初期値テキスト51のデータ実体
Cを取り除いたものと同一である。なお、初期値なしテ
キスト52においては、データ実体Cは例えばプログラ
ム実行時にプログラムにより生成されるか、又は外部か
ら入力される。
第3図はデータ部生成手段13の処理例を示す流れ図で
ある。
ある。
次に、各図を参照して本発明の実施例の動作を説明する
。外部よりコンパイラ1が起動されると、各手段が動作
を始め、先ず、フロントエンド部11はファイル装置2
内のソースプログラム21を入力してソースプログラム
21を検索してデータ記述定義を見つけ、データ定義記
述を見つける毎に判定手段12を起動する。起動された
判定手段12は、このデータ定義記述がデータ実体を持
つか否かを判定する。
。外部よりコンパイラ1が起動されると、各手段が動作
を始め、先ず、フロントエンド部11はファイル装置2
内のソースプログラム21を入力してソースプログラム
21を検索してデータ記述定義を見つけ、データ定義記
述を見つける毎に判定手段12を起動する。起動された
判定手段12は、このデータ定義記述がデータ実体を持
つか否かを判定する。
データ実体を持つ場合は、第2図(a)に示す初期値テ
キスト51を生成し、データ実体を持たない場合は同図
(b)に示す初期値なしテキスト52を生成してファイ
ル装置3内の中間テキストファイル31に出力する。こ
のような処理をソースプログラム21内の全てのデータ
記述定義に対して行う、なお、データ記述定義以外たと
えば命令部については従来と同様の処理を行い、処理結
果を中間テキストファイル31に出力する。
キスト51を生成し、データ実体を持たない場合は同図
(b)に示す初期値なしテキスト52を生成してファイ
ル装置3内の中間テキストファイル31に出力する。こ
のような処理をソースプログラム21内の全てのデータ
記述定義に対して行う、なお、データ記述定義以外たと
えば命令部については従来と同様の処理を行い、処理結
果を中間テキストファイル31に出力する。
次に、バックエンド部13はファイル装置3内の中間テ
キストファイル31を入力し、初期値テキスト51およ
び初期値なしテキスト52を所定のエリアに格納する。
キストファイル31を入力し、初期値テキスト51およ
び初期値なしテキスト52を所定のエリアに格納する。
そして、データ部生成手段14を起動する。起動された
データ部生成手段14は、第3図に示すように、ステッ
プS1で、バックエンド部13が格納したエリアから一
つの中間デキスト(初期値テキスト51および初期値な
しテキスト52)を取り出し、ステップS2で取り出し
た中間テキストが初期値テキスト51か否かを判定する
。
データ部生成手段14は、第3図に示すように、ステッ
プS1で、バックエンド部13が格納したエリアから一
つの中間デキスト(初期値テキスト51および初期値な
しテキスト52)を取り出し、ステップS2で取り出し
た中間テキストが初期値テキスト51か否かを判定する
。
初期値なしテキスト52のときは(ステップS2でNo
)、ステップS7でバッファαに初期値なしテキスト5
2が格納されているか否かを判定する。バッファαに初
期値なしテキスト52が格納されていないときは(ステ
ップS7でNo)、ステップS9で取り出した初期値な
しテキスト52をバッファαに格納してステップ310
に進む0反対に、バッファαに初期値なしテキスト52
が格納されているときは(ステップS7でYES)、ス
テップS8でバッファαに格納されている初期値なしテ
キスト52を更新する。即ち、バッファαに格納されて
いる初期値なしテキスト52および今取り出した初期値
なしテキスト52のデータアドレスAと長さBにより次
の処理を行う。
)、ステップS7でバッファαに初期値なしテキスト5
2が格納されているか否かを判定する。バッファαに初
期値なしテキスト52が格納されていないときは(ステ
ップS7でNo)、ステップS9で取り出した初期値な
しテキスト52をバッファαに格納してステップ310
に進む0反対に、バッファαに初期値なしテキスト52
が格納されているときは(ステップS7でYES)、ス
テップS8でバッファαに格納されている初期値なしテ
キスト52を更新する。即ち、バッファαに格納されて
いる初期値なしテキスト52および今取り出した初期値
なしテキスト52のデータアドレスAと長さBにより次
の処理を行う。
■データアドレスが連続している場合
バッファαに格納されている初期値なしテキスト52の
データアドレスAに長さBを加えた値と今回取り出した
初期値なしテキスト52のデータアドレスAの値とが連
続しているときは、バッファαに格納されている長さB
に今回取り出しな初期値なしテキスト52の長さBを加
える。
データアドレスAに長さBを加えた値と今回取り出した
初期値なしテキスト52のデータアドレスAの値とが連
続しているときは、バッファαに格納されている長さB
に今回取り出しな初期値なしテキスト52の長さBを加
える。
■データアドレスが連続していない場合■のようにデー
タアドレスAに長さBを加えた値が今回取り出した初期
値なしテキスト52のアドレスAの値とが連続していな
いときは、バッファαに格納されている長さBに今回取
り出した初期値なしテキスト52のアドレスAと長さB
とを加える。
タアドレスAに長さBを加えた値が今回取り出した初期
値なしテキスト52のアドレスAの値とが連続していな
いときは、バッファαに格納されている長さBに今回取
り出した初期値なしテキスト52のアドレスAと長さB
とを加える。
ステップS2で初期値アドレス51と判定したときは、
ステップS3でファイル装置4内の目的プログラム41
のデータ部のデータを生成する。
ステップS3でファイル装置4内の目的プログラム41
のデータ部のデータを生成する。
そして、ステップS4でバッファαに初期値なしテキス
ト52か格納されているか否かを判定し、格納されてい
ないときは、ステップS10に進む。
ト52か格納されているか否かを判定し、格納されてい
ないときは、ステップS10に進む。
反対にバッファαに初期値なしテキスト52が格納され
ているときは、バッファα内の初期値なしテキスト52
に基づいてプログラム制御情報部42に領域(例えばア
ドレスおよび長さ)情報を設定し、バッファαをクリア
し、ステップ910へ進む、ステップS10でバックエ
ンド部13により格納された全てのテキストに対して処
理が終了したか否かを判定し、まだ処理していないテキ
ストがあるときは上述した処理を繰り返す、処理するデ
キスト52がなくなったら(ステップS10でYES)
ステップSllでバッファαに初期値なしテキスト52
が格納されているか否かを判定し、バッファαに格納さ
れていないときは処理を終了する。一方、バッファαに
初期値なしテキスト52が格納されているときはステッ
プS5と同様の処理を行なってプログラム制御情報部4
2に情報を設定し、処理を終える。なお、命令部は従来
と同様に処理されコード部44に格納される。
ているときは、バッファα内の初期値なしテキスト52
に基づいてプログラム制御情報部42に領域(例えばア
ドレスおよび長さ)情報を設定し、バッファαをクリア
し、ステップ910へ進む、ステップS10でバックエ
ンド部13により格納された全てのテキストに対して処
理が終了したか否かを判定し、まだ処理していないテキ
ストがあるときは上述した処理を繰り返す、処理するデ
キスト52がなくなったら(ステップS10でYES)
ステップSllでバッファαに初期値なしテキスト52
が格納されているか否かを判定し、バッファαに格納さ
れていないときは処理を終了する。一方、バッファαに
初期値なしテキスト52が格納されているときはステッ
プS5と同様の処理を行なってプログラム制御情報部4
2に情報を設定し、処理を終える。なお、命令部は従来
と同様に処理されコード部44に格納される。
(発明の効果)
以上に説明したように、本発明のコンパイル方式は、デ
ータ記述定義にデータ実体を予め持つか否かを判定して
データ実体を持たないときは、その領域情報(アドレス
および長さ)を設定することにより目的プログラムの容
量を小さくすることができ、ファイルの容量などの保管
コストを大幅に削減することができる。
ータ記述定義にデータ実体を予め持つか否かを判定して
データ実体を持たないときは、その領域情報(アドレス
および長さ)を設定することにより目的プログラムの容
量を小さくすることができ、ファイルの容量などの保管
コストを大幅に削減することができる。
第1図は本発明の実施例の構成図、
第2図は中間テキストの構成例を示す図、第3図はデー
タ部生成手段13の処理例を示す流れ図である。 1・・・コンパイラ、2.3.4・・・ファイル装置、
11・・・フロントエンド部、12・・・判定手段、1
3・・・バックエンド部、14・・・データ部生成手段
、21・・・ソースプログラム、31・・・中間テキス
トファイル、42・・・プログラム制御情報部、43・
・・データ部、44・・・コード部。
タ部生成手段13の処理例を示す流れ図である。 1・・・コンパイラ、2.3.4・・・ファイル装置、
11・・・フロントエンド部、12・・・判定手段、1
3・・・バックエンド部、14・・・データ部生成手段
、21・・・ソースプログラム、31・・・中間テキス
トファイル、42・・・プログラム制御情報部、43・
・・データ部、44・・・コード部。
Claims (1)
- 【特許請求の範囲】 ソースプログラムからコード部、データ部および前記コ
ード部と前記データ部とを管理する制御情報を含む目的
プログラムを生成するコンパイラにおいて、 前記ソースプログラム内のデータ定義記述がデータ実体
を予め含んでいるか否かを判定する判定手段と、 該判定手段により前記データ定義記述がデータ実体を含
んでいないと判定されると前記プログラム制御情報に前
記データ定義記述の領域を示す情報を設定するデータ部
生成手段と を設けたことを特徴とするコンパイル方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2051489A JPH02201541A (ja) | 1989-01-30 | 1989-01-30 | コンパイル方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2051489A JPH02201541A (ja) | 1989-01-30 | 1989-01-30 | コンパイル方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH02201541A true JPH02201541A (ja) | 1990-08-09 |
Family
ID=12029267
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2051489A Pending JPH02201541A (ja) | 1989-01-30 | 1989-01-30 | コンパイル方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH02201541A (ja) |
-
1989
- 1989-01-30 JP JP2051489A patent/JPH02201541A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2000035893A (ja) | デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及びその制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記憶媒体 | |
| JPH02201541A (ja) | コンパイル方式 | |
| JP2556148B2 (ja) | ベクトルレジスタ割付け方式 | |
| JP3464019B2 (ja) | レジスタの割付方式 | |
| JPH08272411A (ja) | ラダー命令処理装置 | |
| JPH07129408A (ja) | 言語処理プログラムの実行方式 | |
| JP2721377B2 (ja) | Basicプログラム圧縮方法 | |
| JPH06266562A (ja) | オブジェクト指向言語処理システムにおける目的コードサイズ最適化方式 | |
| JPH0778087A (ja) | コンパイラ装置 | |
| JPH05334152A (ja) | 可変長メッセージファイルの高速アクセス方法 | |
| JPH11175344A (ja) | 知識ベースシステム | |
| JPH02178847A (ja) | プログラムの再実行用データテーブル生成方式 | |
| JPH06324882A (ja) | コンパイラ装置 | |
| JPH02130637A (ja) | ソースコード翻訳方式 | |
| JPH07160512A (ja) | コンパイル方式 | |
| JPH0285931A (ja) | 関数呼出しの最適化強化方式 | |
| JPS63127340A (ja) | 多次元配列のメモリ割付け方式 | |
| JPS62182843A (ja) | 高速コンパイル/リンク方式 | |
| JPH0792757B2 (ja) | 最適データ割付け方式 | |
| JPH08123692A (ja) | レジスタ割り付け方法および装置 | |
| JPH0362238A (ja) | ファイル容量決定支援方式 | |
| JPS60200341A (ja) | 文字デ−タの仮想先頭アドレツシング方式 | |
| JPH03186933A (ja) | 言語処理システムのシンボル処理方式 | |
| JPH02280240A (ja) | プログラムのファイル処理方式 | |
| JPH04314130A (ja) | 直接編成ファイルへの入出力方法 |