JPH02130637A - ソースコード翻訳方式 - Google Patents

ソースコード翻訳方式

Info

Publication number
JPH02130637A
JPH02130637A JP28523188A JP28523188A JPH02130637A JP H02130637 A JPH02130637 A JP H02130637A JP 28523188 A JP28523188 A JP 28523188A JP 28523188 A JP28523188 A JP 28523188A JP H02130637 A JPH02130637 A JP H02130637A
Authority
JP
Japan
Prior art keywords
code
processing
intermediate code
stack
procedure
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
Application number
JP28523188A
Other languages
English (en)
Inventor
Makoto Noda
誠 野田
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 JP28523188A priority Critical patent/JPH02130637A/ja
Publication of JPH02130637A publication Critical patent/JPH02130637A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (産業上の利用分野ン 本発明はソースコード翻訳方式に関し、特に電子計算機
システムなどで利用される高級言語で記述されたソース
コードを翻訳する際に目的コードの最適化を行うソース
コード翻訳方式に関する。
〔従来の技術〕
従来、この種のソースコード翻訳方式は、高級言語で記
述されたソースコードが格納されているソースコードフ
ァイルからソースコードを入力して構文解析を行い、手
続きの初めにはスタックフレームの更新処理が必要であ
ることを示す情報と、手続きの中の処理に関する情報と
、手続きの最後にはスタックフレームの復旧処理が必要
であることを示す情報とを含む中間コードを生成し中間
コードファイルに出力する構文解析手段と、中間コード
ファイルから中間コードを入力して中間コードに含まれ
ている情報に従って、手続きの最初にはスタックフレー
ムの更新処理に対応する目的コードを生成し、続いて手
続きの中の処理に対応する目的コードを生成し、その後
にスタックフレームの復旧処理に対応する目的コードを
生成し、生成された目的コードを目的コードファイルに
出力する目的コード生成手段とからなっていた。
(発明が解決しようとする課題〕 上述した従来のソースコード翻訳方式では、生成された
目的コードの1つの手続きの最初と最後とには必ずスタ
ックフレームの更新と復旧とのための処理が付随してい
るので、手続きの呼出しが多いプログラムを実行する場
合にスタックフレームの更新処理および復旧処理がオー
バヘッドになるという欠点がある。
本発明の目的は、上述の点に鑑み、中間コード全体を解
析して自動記憶域クラスの属性を持つように宣言されて
いる処理データ(自動的変数)および−時的な作業用と
して使われる処理データを極力レジスタに割り付けるよ
うにして、スタックフレームの確保の必要性を少なくし
手続きの呼出しにおけるオーバヘッドをなくすようにし
たソースコード翻訳方式を提供することにある。
〔課題を解決するための手段〕
本発明のソースコード翻訳方式は、高級言語で記述され
たソースコードが格納されているソースコードファイル
からソースコードを入力して構文解析を行いプログラム
の構造に関する情報、処理データに関する情報および手
続きの中の処理に関する情報を含む中間コードを生成し
て中間コードファイルに出力する構文解析手段と、前記
中間コードファイルから中間コードを入力して中間コー
ドに含まれている情報を解析し処理データが自動記憶域
クラスの属性を持つように宣言されていてかつ処理上割
り付けられている記憶域の位置を知る必要がない場合お
よび一時的な作業用として使われかつ処理上割り付けら
れている記憶域の位置を知る必要がない場合にはその処
理データをレジスタに割り付け、レジスタが不足した場
合にはスタック上に割り付けるようにして、その結果手
続きの中でスタック上に割り付けられるべきデータが存
在する場合はそのデータを割り付けるための記憶域をス
タック上に確保するためのスタックフレームの更新処理
がその手続きの最初に必要でありかつその手続きの最後
にはスタック上に確保されたデータの記憶域を解放する
ためのスタックフレームの復旧処理が必要であることを
示す情報を中間コードに含め、手続きの中でスタック上
に割り付けられるべきデータが存在しない場合にはスタ
ックフレームの更新処理とスタックフレームの復旧処理
とが必要であることを示す情報を含めないようにして中
間コードを最適化して最適化中間コードファイルに出力
する中間コード最適化手段と、前記最適化中間コードフ
ァイルから中間コードを入力して中間コードが手続きの
中でスタックフレームの更新処理とスタックフレームの
復旧処理とが必要であることを示す情報を含んでいる場
合にはスタックフレームの更新処理に対応する目的コー
ド、手続きの中の処理に対応する目的コードおよびスタ
ックフレームの復旧処理に対応する目的コードを生成し
、中間コードが手続きの中でスタックフレームの更新処
理とスタックフレームの復旧処理とが必要であることを
示す情報を含んでいない場合には手続きの中の処理に対
応する目的コードのみを生成して目的コードファイルに
出力する目的コード生成手段とを有する。
〔作用〕
本発明のソースコード翻訳方式では、構文解析手段が高
級言語で記述されたソースコードが格納されているソー
スコードファイルからソースコードを入力して構文解析
を行いプログラムの構造に関する情報、処理データに関
する情報および手続゛きの中の処理に関する情報を含む
中間コードを生成して中間コードファイルに出力し、中
間コード最適化手段が中間コードファイルから中間コー
ドを入力して中間コードに含まれている情報を解析し処
理データが自動記憶域クラスの属性を持つように宣言さ
れていてかつ処理上割り付けられている記憶域の位置を
知る必要がない場合および一時的な作業用として使われ
かつ処理上割り付けられている記憶域の位置を知る必要
がない場合にはその処理データをレジスタに割り付け、
レジスタが不足した場合にはスタック上に割り付けるよ
うにして、その結果手続きの中でスタック上に割り付け
られるべきデータが存在する場合はそのデータを割り付
けるための記憶域をスタック上に確保するためのスタッ
クフレームの更新処理がその手続きの最初に必要であり
かつその手続きの最後にはスタック上に確保されたデー
タの記憶域を解放するためのスタックフレームの復旧処
理が必要であることを示す情報を中間コードに含め、手
続きの中でスタック上に割り付けられるべきデータが存
在しない場合にはスタックフレームの更新処理とスタッ
クフレームの復旧処理とが必要であることを示す情報を
含めないようにして中間コードを最適化して最適化中間
コードファイルに出力し、目的コード生成手段が最適化
中間コードファイルがら中間コードを入力して中間コー
ドが手続きの中でスタックフレームの更新処理とスタッ
クフレームの復旧処理とが必要であることを示す情報を
含んでいる場合にはスタックフレームの更新処理に対応
する目的コード、手続きの中の処理に対応する目的コー
ドおよびスタックフレームの復旧処理に対応する目的コ
ードを生成し、中間コードが手続きの中でスタックフレ
ームの更新処理とスタックフレームの復旧処理とが必要
であることを示す情報を含んでいない場合には手続きの
中の処理に対応する目的コードのみを生成して目的コー
ドファイルに出力する。
〔実施例〕
次に、本発明について図面を参照して詳細に説明する。
第1図は、本発明の一実施例に係るソースコード翻訳方
式の構成を示すブロック図である・本実施例のソースコ
ード翻訳方式は、構文解析手段1と、中間コード最適化
手段2と、目的コード生成手段3と、ソースコードファ
イル4と、中間コードファイル5と、最適化中間コード
ファイル6と、目的コードファイル7とから構成されて
いる。
なお、構文解析手段1.中間コード最適化手段2および
目的コード生成手段3は、コンパイラ1゜に含まれてい
る。
また、図中、矢印を付した太線および実線は、それぞれ
情報および制御の流れと方向とを示している。
次に、このように構成された本実施例のソースコード翻
訳方式の動作について説明する。
コンパイラ10が起動されると、構文解析手段1は、高
級言語で記述されたソースコードが格納されているソー
スコードファイル4からソースコードを入力して構文解
析を行い、プログラムの構造に関する情報、処理データ
に関する+y報および手続きの中の処理に関する情報を
含む中間コードを生成して中間コードファイル5に出力
する。
具体的には、第2図に示すような高級言語を仮定し、第
3図に示すような中間コードを生成するものとする。第
2図においては、1行目はXと名前付けられた手続きの
開始を示し、2行目は八という名前の整数データをXと
名前付けられた手続き内でのみ使用できる自動記憶域ク
ラスの属性を持つものとして宣言していることを示す、
3行目は、定数0を整数データAに代入することを示す
4行目は、手続きXの終了を示す、第3図においては、
1行目はXという名標の宣言を示し、それが手続きの名
前であることを示す、2行目は、手続きの初まりを示す
、3行目は、Aという名標の宣言を示し、それが整数型
データの名前であることを示す、4行目は代入の処理を
示し、5行目は代入される領域の名前を示す、6行目は
、代入するデータが定数0であることを示す、7行目は
、手続きの終了を示す。
構文解析手段1は、中間コードファイル5に゛中間コー
ドを出力し終わったならば、制御を中間コード最適化手
段2に移す。
中間コード最適化手段2は、中間コードファイル5から
中間コードを入力し、中間コードに含まれている情報を
解析し、処理データが自動記憶域クラスの属性を持つよ
うに宣言されていてかつ処理上割り付けられている記憶
域の位置を知る必要がない場合および一時的な作業用と
して使われかつ処理上割り付けられている記憶域の位置
を知る必要がない場合には、その処理データをレジスタ
に割り付ける。レジスタが不足した場合には、スタック
上に割り付けるようにする。その結果、1つの手続きの
中でスタック上に割り付けられるべきデータが存在する
場合には、中間コード最適化手段2は、そのデータを割
り付けるための記憶域をスタック上に確保するためのス
タックフレームの更新処理がその手続きの最初に必要で
あり、かつその手続きの最後にスタック上に確保された
データの記憶域を解放するためのスタックフレームの復
旧処理が必要であることを示す情報を含めた中間コード
を最適化中間コードファイル6に出力する。一方、1つ
の手続きの中でスタック上に割り付けられるべきデータ
が存在しない場合には、中間コード最適化手段2は、ス
タックフレームの更新処理とスタックフレームの復旧処
理とが必要であることを示す情報を中間コードには含め
ないようにして中間コードを最適化し、その最適化され
た中間コードを最適化中間コードファイル6に出力する
具体的には、第3図に示す中間コードを入力して、第4
図に示す最適化中間コードを出力するものとする。すな
わち、第3図の中間コードを解析することにより、変数
型データAば、自動記憶域クラスとして宣言されている
が、手続きXの中では整数型データAが割り付けられて
いる記憶域の位置を知る必要がないので、整数型データ
Aをレジスタに割り付ける。したがって、手続きXに対
しては、スタックフレームの更新処理とスタックフレー
ムの復旧処理とが必要でなくなる。第4図は、1行目、
2行目、3行目、5行目および6行目は、第3図中に示
したそれぞれ対応する行と同じ意味を持つ、4行目は、
代入される領域がθ番目のレジスタであることを示す。
中間コード最適化手段2は、最適化された中間コードを
最適化中間コードファイル6に出力し終わったならば、
制御を目的コード生成手段3に移す。
目的コード生成手段3は、最適化中間コードファイル6
から中間コードを入力し、中間コードが手続きの中でス
タックフレームの更新処理とスタックフレームの復旧処
理とが必要であることを示す情報を含んでいる場合には
スタックフレームの更新処理に対応する目的コードを1
つの手続きに対応する目的コードの最初に出力し、続い
て手続きの中の処理に対応する目的コードを生成し、そ
の後にスタックフレームの復旧処理に対応する目的コー
ドを生成する。一方、中間コードが1つの手続きの中で
スタックフレームの更新処理とスタックフレームの復旧
処理とが必要であることを示す情報を含んでいない場合
には、手続き中の処理に対応する目的コードのみを生成
する。目的コード生成手段3は、生成した目的コードを
目的コードファイル7に出力する。
最適化された中間コードが第4図に示すようであった場
合には、スタックフレームの更新処理とスタックフレー
ムの復旧処理とが必要であることを示す情報が含まれて
いないので、目的コード生成手段3は、単にO番目のレ
ジスタの内容を0にする目的コードを生成するだけであ
る。
目的コード生成手段3が生成した目的コードを目的コー
ドファイル7に出力し終わったならば、コンパイラ10
はソースコード翻訳処理を終了する。
〔発明の効果〕
以上説明したように本発明は、中間コード全体を解析し
て自動記憶域クラスの属性を持つように宣言されている
処理データおよび一時的な作業用として使われる処理デ
ータを極力レジスタに割り付けるようにすることにより
、スタックフレームの確保の必要性を少なくし、手続き
の呼出しにおけるオーバヘッドをなくして、プログラム
の実行速度を向上させることを可能とする効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例に係るソースコード翻訳方式
の構成を示すブロック図、 第2図はソースコードの一例を示す図、第3図は第2図
に示したソースコードから生成される中間コードの一例
を示す図、 第4図は本実施例のソースコード翻訳方式により最適化
された中間コードの一例を示す図である。 図において、 l・・・構文解析手段、 2・・・中間コード最適化手段、 3・・・目的コード生成手段、 4・・・ソースコードファイル、 5・・・中間コードファイル、 6・・・最適化中間コードファイル、 7・・・目的コードファイル、 10・・・コンパイラである。

Claims (1)

  1. 【特許請求の範囲】 高級言語で記述されたソースコードが格納されているソ
    ースコードファイルからソースコードを入力して構文解
    析を行いプログラムの構造に関する情報、処理データに
    関する情報および手続きの中の処理に関する情報を含む
    中間コードを生成して中間コードファイルに出力する構
    文解析手段と前記中間コードファイルから中間コードを
    入力して中間コードに含まれている情報を解析し処理デ
    ータが自動記憶域クラスの属性を持つように宣言されて
    いてかつ処理上割り付けられている記憶域の位置を知る
    必要がない場合および一時的な作業用として使われかつ
    処理上割り付けられている記憶域の位置を知る必要がな
    い場合にはその処理データをレジスタに割り付け、レジ
    スタが不足した場合にはスタック上に割り付けるように
    して、その結果手続きの中でスタック上に割り付けられ
    るべきデータが存在する場合はそのデータを割り付ける
    ための記憶域をスタック上に確保するためのスタックフ
    レームの更新処理がその手続きの最初に必要でありかつ
    その手続きの最後にはスタック上に確保されたデータの
    記憶域を解放するためのスタックフレームの復旧処理が
    必要であることを示す情報を中間コードに含め、手続き
    の中でスタック上に割り付けられるべきデータが存在し
    ない場合にはスタックフレームの更新処理とスタックフ
    レームの復旧処理とが必要であることを示す情報を含め
    ないようにして中間コードを最適化して最適化中間コー
    ドファイルに出力する中間コード最適化手段と、 前記最適化中間コードファイルから中間コードを入力し
    て中間コードが手続きの中でスタックフレームの更新処
    理とスタックフレームの復旧処理とが必要であることを
    示す情報を含んでいる場合にはスタックフレームの更新
    処理に対応する目的コード、手続きの中の処理に対応す
    る目的コードおよびスタックフレームの復旧処理に対応
    する目的コードを生成し、中間コードが手続きの中でス
    タックフレームの更新処理とスタックフレームの復旧処
    理とが必要であることを示す情報を含んでいない場合に
    は手続きの中の処理に対応する目的コードのみを生成し
    て目的コードファイルに出力する目的コード生成手段と を有することを特徴とするソースコード翻訳方式。
JP28523188A 1988-11-11 1988-11-11 ソースコード翻訳方式 Pending JPH02130637A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP28523188A JPH02130637A (ja) 1988-11-11 1988-11-11 ソースコード翻訳方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP28523188A JPH02130637A (ja) 1988-11-11 1988-11-11 ソースコード翻訳方式

Publications (1)

Publication Number Publication Date
JPH02130637A true JPH02130637A (ja) 1990-05-18

Family

ID=17688809

Family Applications (1)

Application Number Title Priority Date Filing Date
JP28523188A Pending JPH02130637A (ja) 1988-11-11 1988-11-11 ソースコード翻訳方式

Country Status (1)

Country Link
JP (1) JPH02130637A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014121378A (ja) * 2012-12-20 2014-07-03 Sophia Co Ltd 遊技機

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014121378A (ja) * 2012-12-20 2014-07-03 Sophia Co Ltd 遊技機

Similar Documents

Publication Publication Date Title
JP2666847B2 (ja) 異種言語間連絡方式
JPH02272627A (ja) デイジタル・コンピユータ・システムとその手続呼び出し方法
JPH01277934A (ja) パラメータリスト参照方法の切換え方式
JP3318051B2 (ja) 翻訳処理方法
JPH02130637A (ja) ソースコード翻訳方式
Hannan et al. Higher-order arity raising
US5765148A (en) Database processing apparatus and database processing method for variable length objects, and computer-readable memory medium for storing database processing program
EP0803806A2 (en) Data conversion mechanism for computer system
JPH01195562A (ja) 入出力装置割当て制御方式
JP2004133827A (ja) core解析装置
JPH03164835A (ja) インタプリタ型言語処理系における大域変数処理のコンパイル方法
JPH10293691A (ja) レジスタ割り付け方法
JPH07129408A (ja) 言語処理プログラムの実行方式
JPS62105240A (ja) 共通式の最適化処理に対するレジスタ割当て方式
JPH01205331A (ja) 大規模プログラムリンク方式
JPS62205434A (ja) 再帰呼出し可能プログラムのコンパイル処理方式
JPH0432980A (ja) データ駆動形計算機用オブジエクトコード生成装置
JPH0390931A (ja) Rom化プログラムの生成方法
JPH06301549A (ja) プログラム翻訳装置
JPH0566949A (ja) 関数定義コンパイルドコード呼出し方式
JPH0477840A (ja) 障害解析情報収集方式
JPH0373026A (ja) コンパイル方式
JPH01188956A (ja) プログラム例外処理方式
JPH0239242A (ja) 電子計算機システムの一時作業領域割付方式
JPH03255534A (ja) 高級プログラム言語のポインタ修飾データ参照方式