[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP3018783B2 - コンパイル方式 - Google Patents

コンパイル方式

Info

Publication number
JP3018783B2
JP3018783B2 JP4273648A JP27364892A JP3018783B2 JP 3018783 B2 JP3018783 B2 JP 3018783B2 JP 4273648 A JP4273648 A JP 4273648A JP 27364892 A JP27364892 A JP 27364892A JP 3018783 B2 JP3018783 B2 JP 3018783B2
Authority
JP
Japan
Prior art keywords
data
definition
declaration
information
file
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.)
Expired - Lifetime
Application number
JP4273648A
Other languages
English (en)
Other versions
JPH06103079A (ja
Inventor
洋彦 小野
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 JP4273648A priority Critical patent/JP3018783B2/ja
Publication of JPH06103079A publication Critical patent/JPH06103079A/ja
Application granted granted Critical
Publication of JP3018783B2 publication Critical patent/JP3018783B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、言語処理プログラムの
処理方式に関する。
【0002】
【従来の技術】マイクロコンピュータ用のプログラムの
開発は、開発者がソースプログラムを作成し、言語処理
プログラム(コンパイラ等)にソースプログラムを入力
し、マイクロコンピュータ用の機械語命令列に翻訳し、
マイクロコンピュータ上のメモリに置き、実行させる。
【0003】高級言語で記述されたソースプログラム
は、コンパイラにより翻訳され、目的機械語列に変換さ
れる。
【0004】図2を用いて、従来のコンパイル処理方式
を説明する。開発者はソースプログラム201をコンパ
イラ202に入力し、構文解析部203で機械語命令列
の中間コード情報204を作成し、コード生成部205
において、中間コード情報を機械語命令列に変換して、
出力ファイル205を作成する。
【0005】一般にコンパイラが処理できるソースプロ
グラムの行数に制限が存在する。コンパイラが動作する
計算機のコンパイラが使用できるメモリの容量や作業領
域として使用するディスク装置の容量により、制限が存
在する。
【0006】たとえばMS−DOSシステム上で動作す
るコンパイラは、使用できるメモリ容量が少ない。コン
パイラがコンパイル時に作成するソースファイル全体の
シンボル情報、中間コード情報等のコンパイル用の管理
情報をメモリ上に作成するため、コンパイルするソース
プログラムの行数に制限がある。
【0007】また、あるコンパイラシステムでは、メモ
リが足りなくなると、中間コード情報をテンポラリファ
イルに作成して、コンパイルするものがあるが、ソース
ファイルの行数が大きくなると作成するテンポラリファ
イルが大きくなる。大きなテンポラリファイルへのアク
セスには処理時間がかかり、コンパイルの処理時間がソ
ース行数に比例して長くなる。
【0008】
【発明が解決しようとする課題】使用可能なメモリが少
ない計算機システム上でのコンパイル時には制限行数を
超えるソースプログラムをコンパイルすることができな
いという問題点が存在した。
【0009】また、コンパイルを行なっている途中で、
メモリが足りなくなった場合にコンパイルが中断し、そ
れまでにコンパイルしていたすべてのコンパイル情報は
無駄になるという問題点が存在した。
【0010】また、中間コード情報をテンポラリファイ
ルに作成するシステムでは、大きなソースファイルで
は、コンパイル時間が長くなるという欠点が存在した。
【0011】本発明の目的は、コンパイラの入力ソース
ファイルの処理行数を制限なく処理できるようにしたコ
ンパイル方式を提供することにある。
【0012】
【課題を解決するための手段】前記目的を達成するた
め、本発明に係るコンパイル方式は、分解部と、データ
宣言/データ定義情報保持部と、構文解析部とを有し、
データ宣言部とデータ定義と関数手続きの集まりから
構成される入力ソースプログラムを解析し、中間情報に
変換し、その解析した中間情報を機械語命令に変換する
コンパイラの処理方式であって、分解部は、ソースプロ
グラムの中のデータ宣言部とデータ定義部と関数手続き
の集まりからデータ宣言部とデータ定義部と関数手続き
単位にソースプログラムをソースレベルで分割するもの
であり、データ宣言/データ定義情報保持部は、ソース
ファイル内で宣言及び定義されているデータ宣言部とデ
ータ定義部のデータ情報を保持するものであり、構文解
析部は、前記データ宣言/データ定義情報保持部から
ータ宣言部及びデータ定義部のデータ情報を参照して、
関数単位で分割して構文解析を行なうものである。
【0013】また入力ソースファイルをデータ宣言部,
データ定義部、関数定義に分割して出力したソース情報
をメモリ中または、中間ファイルに分割してコンパイル
処理を行うものである。
【0014】
【作用】コンパイラにソースファイルの分割部とデータ
宣言部/定義部のコンパイル情報の保持部を持ち、コン
パイル時に入力ソースファイルをデータ宣言部/定義部
と関数定義に分割して、データの宣言部/定義部の場
合、そのコンパイル情報を保持し、関数定義の場合、デ
ータの宣言部/定義部のコンパイル情報を参照して、関
数定義毎にコンパイルする。
【0015】
【実施例】以下、本発明の実施例を図により説明する。
【0016】(実施例1)図1は、本発明の実施例1を
示す構成図である。
【0017】図1において、本発明に係るコンパイラ1
02は入力ソースファイル101を入力し、分割部10
3でデータ宣言部とデータ定義と関数手続きの集まりか
ら構成されるソースファイルを解析し、データ宣言部と
データ定義と関数手続きに分割する。
【0018】分割されたソースファイル情報を構文解析
部104で解析し中間コード情報106に変換しメモリ
中に保持する。
【0019】構文解析したデータ宣言、定義情報は、デ
ータ宣言、定義情報保持部105に保持し、関数部分の
構文解析時に参照して関数部分の中間コード情報への変
換時に使用する。
【0020】図3の処理フローチャートにより、本方式
のコンパイル処理の説明を行なう。終了判定手段301
では、入力ソースファイルの終りを判定する。入力ソー
スファイルからの読み込み情報がある間は以下の処理を
行なう。
【0021】ソースファイル分割手段302は、入力し
たソースファイルをデータの宣言/定義部分、関数の定
義部分にソースレベルで分割する。
【0022】図5に、C言語によるソースプログラム例
を示す。501がデータ宣言部、502がデータ定義
部、503及び504が関数定義部分である。
【0023】上記のように分割した単位で、以下の処理
を行なう。データ宣言/定義部判定手段303におい
て、データの宣言/定義部分の判定を行ない、データの
宣言/定義部分である場合、データの宣言/定義処理を
行なう。図5のソースファイル中のデータ宣言部501
及びデータ定義部502の場合この処理を行なう。
【0024】データの宣言/定義部分の構文解析をデー
タ宣言/定義部解析手段304で行ない、中間コード情
報に変換する。変換した中間コード情報をデータ宣言/
定義部中間コード情報格納手段305で図1のデータ宣
言、定義情報保持部105へ格納する。さらに変換した
データの定義部分の中間コード情報を定義データ変換手
段306で機械語レベルのデータ定義データへ変換す
る。その変換した機械語レベルのデータ定義情報をファ
イル出力手段307で出力ファイル108へ出力する。
次に終了判定手段30にもどり処理を続ける。
【0025】データの宣言/定義部判定手段303によ
る判定において、分割したソースファイルが関数定義で
ある場合、関数定義処理の処理を行なう。図5のソース
ファイル中の関数定義部503及び504の場合この処
理を行なう。
【0026】分割した関数定義部503,504の場
合、関数定義部分の構文解析処理を関数定義解析手段3
08で行ない、中間コード情報へ変換する。
【0027】関数定義部分の構文解析を行なう場合、デ
ータ宣言、定義情報保持部105からデータの宣言情報
及び、定義情報を参照して、構文解析を行なう。
【0028】元来同一ソースファイル内で、宣言、定義
されているデータ情報をデータ宣言、定義情報保持部1
05から情報を参照することにより、関数単位で分割し
てコンパイルすることが可能となる。
【0029】変換した関数定義部分の中間コード情報を
機械語命令列変換手段309で機械語命令列データへ変
換する。変換した関数定義部分の機械語命令列情報をフ
ァイル出力手段310で出力ファイル108へ出力す
る。
【0030】次に終了判定手段301にもどり処理を続
ける。
【0031】以上のように図3のフローチャートに従
い、上記の処理を入力ソースファイルが終了するまで、
コンパイル処理を行なう。
【0032】(実施例2)実施例2のコンパイル処理方
式の構成は、実施例1と同じ図1に示すものである。図
1の分割部、構文解析部、コード生成部については、実
施例1と同様の処理を行なう。本実施例は、ソースファ
イルの分割方法が実施例1と異なる。
【0033】実施例2では、図4のフローチャートに基
づき、本方式のコンパイル処理の説明を行なう。終了判
定手段401では、入力ソースファイルの終りを判定す
る。ソースファイルがまだある間はソースファイルの分
割の処理を行なう。
【0034】ソースファイル分割手段402は、入力し
たソースファイルをデータの宣言/定義部分、関数の定
義部分にソースレベルで分割する。
【0035】図5に、C言語によるソースプログラム例
を示す。501がデータ宣言部、502がデータ定義
部、503及び504が関数定義部である。
【0036】上記のように分割した単位で、以下の処理
を行なう。中間ファイル出力手段403において、デー
タの宣言/定義部分、関数定義部分ごとにメモリ中また
は、中間ファイルにソース情報を出力する。図5の例で
は、データ宣言部501と定義部502が1つのメモリ
中または、中間ファイルへ各関数定義部503,504
の関数毎にそれぞれメモリ中または、中間ファイルへ分
割してソース情報を出力する。
【0037】入力ソースファイルの分割が終了したら次
の処理を行なう。中間ファイル終了判定手段404にお
いて、入力ソースファイルをデータ宣言/定義、関数定
義に分割して出力したメモリ中または、中間ファイルの
ソース情報を入力して、ソース情報が存在するまで以下
の処理を行なう。
【0038】データ宣言/定義部判定手段405におい
て、データの宣言/定義部分の判定を行ない、データの
宣言/定義部分である場合、データの宣言/定義処理を
行なう。図5のソースファイル中のデータ宣言部501
及びデータ定義部502の中間ファイルの場合この処理
を行なう。
【0039】データ宣言/定義部分の構文解析をデータ
宣言/定義部解析手段406で行ない、中間コード情報
に変換する。変換した中間コード情報をデータ宣言/定
義部中間コード情報格納手段407で図1のデータ宣
言、定義情報保持部105へ格納する。さらに変換した
データの定義部分の中間コード情報を定義データ変換手
段408で機械語レベルのデータ定義データへ変換す
る。
【0040】変換した機械語レベルのデータ定義情報を
ファイル出力手段409で出力ファイル108へ出力す
る。
【0041】次に中間ファイル入力手段404にもどり
処理を続ける。データ宣言/定義部判定手段405によ
るデータの宣言/定義部分の判定において、分割したソ
ースファイルが関数定義である場合、関数定義処理の処
理を行なう。図5のソースファイル中の関数定義部50
3及び504の中間ファイルの場合この処理を行なう。
【0042】分割した関数定義503,504の場合、
関数定義部分の構文解析処理を関数定義部解析手段41
0で行ない、中間コード情報へ変換する。
【0043】関数定義部分の構文解析を行なう場合、デ
ータ宣言、定義情報保持部105からデータの宣言情報
及び、定義情報を参照して、構文解析を行なう。
【0044】元来同一ソースファイル内で、宣言、定義
されているデータ情報をデータ宣言、定義情報保持部1
05から情報を参照することにより、関数単位で分割し
てコンパイルすることが可能となる。
【0045】変換した関数定義部分の中間コード情報を
機械語命令列変換手段411で機械語命令列データへ変
換する。変換した関数定義部分の機械語命令列情報をフ
ァイル出力手段412で出力ファイル108へ出力す
る。次に中間ファイル入力手段404にもどり処理を続
ける。
【0046】以上のように図4のフローチャートに従
い、上記の処理を入力ソースファイルをデータ宣言/定
義、関数定義に分割して出力したソース情報をメモリ中
または、中間ファイルに分割してコンパイル処理を行な
い、コンパイルする中間ファイルが存在するまでコンパ
イル処理を行なう。
【0047】
【発明の効果】以上説明したように本発明は、使用可能
なメモリが少ない計算機システム上でのコンパイル時に
は制限行数を超えるソースプログラムをコンパイルする
ことが可能である。また、コンパイルを行なっている途
中で、メモリが足りなくなった場合にコンパイルが中断
することがなくなり、開発時間の短縮が図れる。
【0048】さらに、中間コード情報をテンポラリファ
イルに作成するコンパイラシステムに比べて、ソースフ
ァイルを分割してメモリ中または小さいテンポラリファ
イルによるコンパイル処理を行なうので、コンパイル時
間が短縮できる。
【図面の簡単な説明】
【図1】本発明のコンパイラ処理方式を示すシステム構
成図である。
【図2】従来のコンパイラ処理方式を示すシステム構成
図である。
【図3】本発明の実施例1に係るコンパイラ処理方式の
処理を示すフローチャートである。
【図4】本発明の実施例2に係るコンパイラ処理方式の
処理を示すフローチャートである。
【図5】入力ソースファイルの例を示す図である。
【符号の説明】 101 入力ソースファイル 102 コンパイラ 103 ファイル分割部 104 構文解析部 105 データ宣言、定義情報保持部 106 中間コード 107 コード生成部 108 出力ファイル 201 入力ソースファイル 202 従来方式コンパイラ 203 構文解析部 204 中間コード 205 コード生成部 206 出力ファイル 301 終了判定手段 302 ファイル分割手段 303 データ宣言/定義部判定手段 304 データ宣言/定義部解析手段 305 データ宣言/定義部中間コード情報格納手段 306 定義データ変換手段 307 ファイル出力手段 308 関数定義部解析手段 309 機械語命令列変換手段 310 ファイル出力手段 401 ソースファイル終了判定手段 402 ファイル分割手段 403 中間ファイル出力手段 404 中間ファイル終了判定手段 405 データ宣言/定義部判定手段 406 データ宣言/定義部解析手段 407 データ宣言/定義部中間コード情報格納手段 408 定義データ変換手段 409 ファイル出力手段 410 関数定義部解析手段 411 機械語命令列変換手段 412 ファイル出力手段 501 データ宣言部 502 データ定義部 503 関数定義部 504 関数定義部

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 分解部と、データ宣言/データ定義情報
    保持部と、構文解析部とを有し、データ宣言部とデータ
    定義と関数手続きの集まりから構成される入力ソース
    プログラムを解析し、中間情報に変換し、その解析した
    中間情報を機械語命令に変換するコンパイラの処理方式
    であって、 分解部は、ソースプログラムの中のデータ宣言部とデー
    タ定義部と関数手続きの集まりからデータ宣言部とデー
    タ定義部と関数手続き単位にソースプログラムをソース
    レベルで分割するものであり、データ宣言/データ定義 情報保持部は、ソースファイル
    内で宣言及び定義されているデータ宣言部とデータ定義
    部のデータ情報を保持するものであり、 構文解析部は、前記データ宣言/データ定義情報保持部
    からデータ宣言部及びデータ定義部のデータ情報を参照
    して、関数単位で分割して構文解析を行なうものである
    ことを特徴とするコンパイル方式。
  2. 【請求項2】 請求項1に記載のコンパイル方式であっ
    て、入力ソースファイルをデータ宣言部,データ定義
    部、関数定義に分割して出力したソース情報をメモリ中
    または、中間ファイルに分割してコンパイル処理を行う
    ことを特徴とするコンパイル方式。
JP4273648A 1992-09-17 1992-09-17 コンパイル方式 Expired - Lifetime JP3018783B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4273648A JP3018783B2 (ja) 1992-09-17 1992-09-17 コンパイル方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4273648A JP3018783B2 (ja) 1992-09-17 1992-09-17 コンパイル方式

Publications (2)

Publication Number Publication Date
JPH06103079A JPH06103079A (ja) 1994-04-15
JP3018783B2 true JP3018783B2 (ja) 2000-03-13

Family

ID=17530619

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4273648A Expired - Lifetime JP3018783B2 (ja) 1992-09-17 1992-09-17 コンパイル方式

Country Status (1)

Country Link
JP (1) JP3018783B2 (ja)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
発明協会公開技報 公技91−10514号

Also Published As

Publication number Publication date
JPH06103079A (ja) 1994-04-15

Similar Documents

Publication Publication Date Title
US5586328A (en) Module dependency based incremental compiler and method
US5606697A (en) Compiler system for language processing program
US6289505B1 (en) Method, apparatus and computer programmed product for binary re-optimization using a high level language compiler
US6078744A (en) Method and apparatus for improving compiler performance during subsequent compilations of a source program
EP0735468B1 (en) Method and apparatus for an optimizing compiler
US6412109B1 (en) Method for optimizing java bytecodes in the presence of try-catch blocks
US6311324B1 (en) Software profiler which has the ability to display performance data on a computer screen
US6233733B1 (en) Method for generating a Java bytecode data flow graph
JP3311462B2 (ja) コンパイル処理装置
US6292939B1 (en) Method of reducing unnecessary barrier instructions
US5920723A (en) Compiler with inter-modular procedure optimization
US20030088860A1 (en) Compiler annotation for binary translation tools
US7823139B2 (en) Method and system for translating programming languages
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
US6983458B1 (en) System for optimizing data type definition in program language processing, method and computer readable recording medium therefor
US5812854A (en) Mechanism for integrating user-defined instructions with compiler-generated instructions and for optimizing the integrated instruction stream
JP4833206B2 (ja) 最適化されたプログラムのためのアンワインド情報の生成
JP3018783B2 (ja) コンパイル方式
JP3266097B2 (ja) 非リエントラントプログラムの自動リエントラント化方法及びシステム
US20040064301A1 (en) Software development system, simulator, and recording medium
JP3608993B2 (ja) コンパイラ装置及びコンパイラプログラムを記録した記録媒体
JP3424596B2 (ja) シンボル参照情報のキャッシュ方法ならびに装置
JP3323147B2 (ja) コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体
JP2005301415A (ja) コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム
JP3566602B2 (ja) コンパイル方法、および、コンパイル用プログラムを記録した記録媒体