JPH0635714A - プログラムの最適化方式 - Google Patents

プログラムの最適化方式

Info

Publication number
JPH0635714A
JPH0635714A JP19353292A JP19353292A JPH0635714A JP H0635714 A JPH0635714 A JP H0635714A JP 19353292 A JP19353292 A JP 19353292A JP 19353292 A JP19353292 A JP 19353292A JP H0635714 A JPH0635714 A JP H0635714A
Authority
JP
Japan
Prior art keywords
value
subprogram
procedure
program
argument
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.)
Withdrawn
Application number
JP19353292A
Other languages
English (en)
Inventor
Takao Suzuki
隆夫 鈴木
Tetsuji Ishikura
徹次 石倉
Masamitsu Nakazawa
賢光 中沢
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 Solution Innovators Ltd
Original Assignee
NEC Solution Innovators Ltd
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 Solution Innovators Ltd filed Critical NEC Solution Innovators Ltd
Priority to JP19353292A priority Critical patent/JPH0635714A/ja
Publication of JPH0635714A publication Critical patent/JPH0635714A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】副プログラムの呼出しに対して、その副プログ
ラムが、入力する値がある値であれば常にある定まった
値を出力し、しかも呼出すときに手続きが入力す値を翻
訳時に分かるものに対して効率よい目的プログラムを生
成する。 【構成】定義する副プログラムが入力する値が同じであ
れば、常に同じ値を出力する機能を持つか否かの判定を
行う手段と、呼出す副プログラムが入力す値が同じであ
れば、常に同じ値を出力する機能を持ち、かつ、呼出す
ときに手続きが入力する値が翻訳時に分かるか否かの判
定を行う手段と、条件が合えば、翻訳時に副プログラム
を実行し、出力される値を得て、それを用いて効率良い
目的プログラムを生成する手段とを有する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、高級言語で記述された
原始プログラムを入力し、その目的プログラムを生成す
るコンパイラにおけるプログラムの最適化方式に関す
る。
【0002】
【従来の技術】従来、目的プログラムを生成するコンパ
イラは、プログラム単位からの副プログラムの呼出しに
対して、そのまま副プログラムを呼出す命令列を生成す
るか、呼出すプログラム単位と呼出される副プログラム
との条件によっては、呼出すプログラム単位に呼出され
る副プログラムを原始プログラム上でインライン展開
し、副プログラムをインライン展開したプログラム単位
に翻訳している。
【0003】
【発明が解決しようとする課題】上述したコンパイラに
より生成されたプログラムの実行時間は、そのまま副プ
ログラムを呼出す命令列を生成する場合は、副プログラ
ムを呼出す時間および副プログラムを実行する時間が必
要であり、副プログラムをインライン展開したプログラ
ム単位に翻訳する場合は、副プログラムを呼出す時間は
不要であるが、副プログラムを実行する時間が必要であ
り、実行時間が長いという問題点がある。
【0004】
【課題を解決するための手段】本発明のプログラムの最
適化方式は、原始プログラムを入力し目的プログラムに
翻訳するコンパイラのプログラム最適化方式において、
翻訳している手続き副プログラムが、この手続き副プロ
グラムの入力となる仮引数の値がある値であれば、手続
き副プログラムを実行することにより決定される手続き
副プログラムの出力となる仮引数の値がある定まった値
であり、かつ、グローバルデータを持っていない副プロ
グラム(以下A型手続き副プログラムという)か否かを
判定するノーマル手続き定義判定手段と、翻訳している
プログラム単位から呼出している手続き副プログラム
が、前記ノーマル手続き定義判定手段でA型手続き副プ
ログラムと判定されているとき、その手続き副プログラ
ムを呼出すときの入力となる実引数の値が翻訳時に分か
っているか否かを判定するノーマル手続き参照判定手段
と、このノーマル手続き参照判定手段で判定されて、そ
の手続き副プログラムを呼出すときの入力となる実引数
の値が翻訳時に分かっているA型手続き副プログラムの
呼出しに対して生成する命令列を、こ手続き副プログラ
ムを翻訳時に分かっている入力となる実引数の値で実行
した結果として出力される値で実引数を確定する命令列
となるように変更すノーマル手続き実行手段とを有して
構成される。また、本発明のプログラムの最適化方式
は、原始プログラムを入力し目的プログラムに翻訳する
コンパイラのプログラム最適化方式において、翻訳して
いる関数副プログラムが、その関数副プログラムの入力
となる仮引数の値がある値であれば、関数副プログラム
を実行することにより決定される関数副プログラムの出
力となる関数の値および実引数の値がある定まった値で
あり、かつ、グローバルデータを持っていない副プログ
ラ(以下B型関数副プログラムという)か否かを判定す
るノーマル関数定義判定手段と、翻訳しているプログラ
ム単位から呼出している関数副プログラムが、前記ノー
マル関数定義判定手段でB型関数副プログラムと判定さ
れているとき、その関数副プログラムを呼出すときの入
力となる実引数の値が翻訳時に分かっているか否かを判
定するノーマル関数参照判定手段と、このノーマル関数
参照判定手段で判定された関数副プログラムを呼出すと
きの入力となる実引数の値が翻訳時に分かっているB型
関数副プログラムの呼出しに対して生成する命令列を、
この関数副プログラムを翻訳時に分かっている入力とな
る実引数の値で実行した結果に出力される値で関数の値
および引数の値を確定する命令列となるように変更する
ノーマル関数実行手段とを有して構成される。さらに、
また、本発明のプログラムの最適化方式は、原始プログ
ラムを入力し目的プログラムに翻訳するコンパイラのプ
ログラムの最適化方式において、翻訳している手続き副
プログラムが、その手続き副プログラムの入力となる仮
引数の値およびグローバルデータの値がそれぞれある値
であれば、手続き副プログラムを実行することにより決
定される手続き副プログラムの出力となる仮引数の値お
よびグローバルデータの値がそれぞれある定まった値で
ある(以下C型手続き副プログラムという)か否かを判
定するノーマル手続き定義判定手段と、翻訳しているプ
ログラム単位から呼出している手続き副プログラムが、
前記ノーマル手続き定義判定手段でC型手続き副プログ
ラムであると判定されており、かつ、手続き副プログラ
ムを呼出すときの入力となる実引数の値およびグローバ
ルデータの値が翻訳時に分かっているとき、手続き副プ
ログラムの出力となるグローバルデータが翻訳している
プログラム単位からも参照可能であるか否かを判定する
ノーマル手続き参照判定手段と、このノーマル手続き参
照判定手段で判定された、手続き副プログラムを呼出す
ときの入力となる実引数の値およびグローバルデータの
値が翻訳時に分かっているC型手続き副プログラムの呼
出しに対して生成される命令列を、手続き副プログラム
の出力となるグローバルデータが翻訳しているプログラ
ム単位からも参照可能であると判定されているならば、
その手続き副プログラムを翻訳時に分かっている入力と
なる実引数の値で実行した結果として出力される値で実
引数の値およびグローバルデータの値を確定する命令列
となるように変更するノーマル手続き実行手段とを有し
て構成される。
【0005】
【実施例】次に、本発明について図面を参照して説明す
る。
【0006】図1は本発明の一実施例の構成図である。
図1の実施例のコンパイラ10は構文解析手段11,意
味解析手段12,およびコード生成手段17を含んで構
成される。また意味解析手段12はノーマル手続定義判
定手段13,ノーマル手続き参照判定手段14,および
中間コード生成手段15を有していて、更に中間コード
生成手段15はノーマル手続き実行手段16を有してい
る。
【0007】構文解析手段11は、原始プログラム11
1を入力し、その構文解析を行ない、解析結果を意味解
析手段12に渡す。意味解析手段12は解析された構文
をもとに、その意味を解析し、中間コード222を生成
する。
【0008】ノーマル手続き定義判定手段13は、翻訳
している手続き副プログラムがA型手続き副プログラム
か否かを判定し、A型手続き副プログラムなら、その名
前のテーブルにその旨の情報をセットするとともに、そ
の名前の入口の仮引数テーブルにそれぞれの仮引数が入
力するのか、または出力するのかの情報をセットする。
また翻訳している関数副プログラムがB型関数副プログ
ラムか否かを判定し、B型関数副プログラムなら、その
名前のテーブルにその旨の情報をセットするとともに、
その名前の入口の仮引数テーブルにそれぞれの仮引数が
入力するのか、または出力するのかの情報をセットす
る。さらにまた同様に、翻訳している手続き副プログラ
ムがC型手続き副プログラムか否かを判定し、C型手続
き副プログラムなら、その名前のテーブルにその旨の情
報をセットするとともに、その名前の入口の仮引数テー
ブルにそれぞれの仮引数が入力するのか、または出力す
るのかの情報をセットする。
【0009】ノーマル手続き参照判定手段14は、翻訳
しているプログラム単位から呼出している手続き副プロ
グラムがA型手続き副プログラムか否かを、目的プログ
ラムを入力して判定するとともに、目的プログラムから
実引数の値を入力されるのか、または出力されるのかの
情報を得、更にその手続き副プログラムを呼出すときの
入力となる実引数の値が翻訳時に分かっているか否かを
判定する。また翻訳しているプログラム単位から呼出し
ている関数副プログラムがB型関数副プログラムか否か
について、さらにまた翻訳しているプログラム単位から
呼出している手続き副プログラムがC型手続きプログラ
ムか否かについても、上述のA型手続き副プログラムの
場合と同様にそれぞれ目的プログラムを入力して判定
し、以下についても同様の処理を行なう。
【0010】中間コード生成手段15は、解析された意
味をもとに中間コード222を生成する。
【0011】ノーマル手続き実行手段16は、ノーマル
手続き参照判定手段14で判定されて、手続き副プログ
ラムおよび関数副プログラムを呼出すときの入力となる
実引数の値が翻訳時に分かっているA型手続き副プログ
ラム、B型関数副プログラム、およびC型手続き副プロ
グラムの呼出しに対して、まず、それぞれの副プログラ
ムの目的プログラムを入力して、それぞれの副プログラ
ムを翻訳時に分かっている入力となる実引数で実行し、
その結果を得る。次に、実行して得られ出力される値を
それぞれの実引数に代入する中間コードを生成する。
【0012】コード生成手段17は中間コード222を
入力をし、目的プログラム333を生成する。翻訳中の
副プログラムがA型手続き副プログラム、B型関数副プ
ログラム、またはC型手続き副プログラムである場合に
は、それぞれの情報と、仮引数の値を入力するのか、ま
たは出力するのかの情報とを目的プログラム中に出力す
る。
【0013】図2は対象となる処理を含むFORTRA
N原始プログラムの例を示す図である。図2の例に対す
る図1の実施例による処理について説明をすると、手続
き副プログラムSUB1は、ノーマル手続き定義判定手
段13でA型手続き副プログラムと判定され、SUB1
の名前のテーブルにその旨の情報がセットされる。ま
た、仮引数テーブルには、最初の仮引数Iは入力で、2
番目および3番目の仮引数JおよびKは出力とセットさ
れる。コード生成手段17は、SUB1の名前のテーブ
ルと仮引数テーブルより、その旨の情報を目的プログラ
ムにセットする。
【0014】手続き副プログラムSUB2は、それまで
に消費されたCPU時間を取出す手続きを呼出し、得ら
れた時間を1000倍して戻す手続きなので、ノーマル
手続き定義判定手段13でA型手続き副プログラムでな
いと判定される。
【0015】主プログラムABCDの(1)の文に対し
て、ノーマル手続き参照判定手段14で、(1)の文で
呼出している手続きSUB1はA型手続き副プログラム
と判定され、また、その入力となっている最初の実引数
Kの値が5であると翻訳時に認識する。次に、ノーマル
手続き実行手段16により、最初の実引数5を用いて手
続き副プログラムSUB1を実行し、2番目の実引数L
の値が10で、3番目の実引数Mの値が20になること
を認識し、(1)の文の2番目の実引数Lに10を代入
し、3番目の実引数Mに20を代入する中間コードを生
成する。
【0016】図3は図2のFORTRAN原始プログラ
ムを翻訳した結果の目的プログラムとして生成された命
令列のFORTRAN原始プログラムのイメージであ
る。図2の(1)の文が、図3の(2)および(3)の
文に変更されている。
【0017】
【発明の効果】以上詳細に述べたように本発明は原始プ
ログラム中のA型手続副プログラム、B型関数副プログ
ラムおよびC型手続き副プログラムの呼出しに対して、
副プログラムの入力となる実引数の値が翻訳時に分かる
場合には、実行時に手続きを呼出す時間および手続きを
実行する時間を削除することができ、効率の良い目的プ
ログラムの生成ができるという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例の構成図である。
【図2】本発明の処理の対象となる副プログラムを含む
FORTRAN原始プログラムの例を示す図である。
【図3】図2の例を図1の実施例により処理し、目的プ
ログラムとして生成された命令列のFORTRAN原始
プログラムのイメージを示す図である。
【符号の説明】 10 コンパイラ 11 構文解析手段 12 意味解析手段 13 ノーマル手続き定義判定手段 14 ノーマル手続き参照判定手段 15 中間コード生成手段 16 ノーマル手続き実行手段 17 コード生成手段 111 原始プログラム 222 中間コード 333 目的プログラム

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 原始プログラムを入力し目的プログラム
    に翻訳するコンパイラのプログラムの最適化方式におい
    て、翻訳している手続き副プログラムが、この手続き副
    プログラムの入力となる仮引数の値がある値であれば、
    手続き副プログラムの出力となる仮引数の値がある定ま
    った値であり、かつ、グローバルデータを持っていない
    か否かを判定するノーマル手続き定義判定手段と、翻訳
    しているプログラム単位から呼出している手続き副プロ
    グラムが、前記ノーマル手続き定義判定手段で、手続き
    副プログラムの入力となる仮引数の値がある値であれ
    ば、手続き副プログラムを実行することにより決定され
    る手続き副プログラムの出力となる仮引数の値がある定
    まった値であり、かつ、グローバルデータを持っていな
    いと判定されているとき、この手続き副プログラムを呼
    出すときの入力となる実引数の値が翻訳時に分かってい
    るか否かを判定するノーマル手続き参照判定手段と、こ
    のノーマル手続き参照判定手段で判定された前記ノーマ
    ル手続き定義判定手段で、手続き副プログラムの入力と
    なる仮引数の値がある値であれば、手続き副プログラム
    を実行することにより決定される手続き副プログラムの
    出力となる実引数の値がある定まった値であり、かつ、
    グローバルデータを持っていないと判定されており、更
    に、その手続き副プログラムを呼出すときの入力となる
    実引数の値が翻訳時に分かっていると判定された手続き
    副プログラムの呼出しに対して生成する命令列を、この
    手続き副プログラムを翻訳時に分かっている入力となる
    実引数の値で実行した結果として出力される値で実引数
    を確定する命令列となるように変更するノーマル手続き
    実行手段とを含むことを特徴とするプログラムの最適化
    方式。
  2. 【請求項2】 原始プログラムを入力し目的プログラム
    に翻訳するコンパイラのプログラムの最適化方式におい
    て、翻訳している関数副プログラムが、この関数副プロ
    グラムの入力となる仮引数の値がある値であれば、関数
    副プログラムを実行することにより決定される関数副プ
    ログラムの出力となる関数の値および実引数の値がある
    定まった値であり、かつ、グローバルデータを持ってい
    ないか否かを判定するノーマル関数定義判定手段と、翻
    訳しているプログラム単位から呼出している関数副プロ
    グラムが前記ノーマル関数定義判定手段で、関数副プロ
    グラムの入力となる仮引数の値がある値であれば、関数
    副プログラムを実行することにより決定される関数副プ
    ログラムの出力となる関数の値および仮引数の値がある
    定まった値であり、かつ、グローバルデータを持ってい
    ないと判定されているとき、この関数副プログラムを呼
    出すときの入力となる実引数の値が翻訳時に分かってい
    るか否かを判定するノーマル関数参照判定手段と、この
    ノーマル関数参照判定手段で判定された前記ノーマル関
    数定義判定手段で、関数副プログラムの入力となる仮引
    数の値がある値であれば、関数副プログラムを実行する
    ことにより決定される関数副プログラムの出力となる関
    数の値および仮引数の値がある定まった値であり、か
    つ、グローバルデータを持っていないと判定されてお
    り、更に、その関数副プログラムを呼出すときの入力と
    なる実引数の値が翻訳時に分かっていると判定された関
    数副プログラムの呼出しに対して生成する命令列を、こ
    の関数副プログラムを翻訳時に分かっている入力となる
    実引数の値で実行した結果として出力される値で関数の
    値および引数の値を確定する命令列となるように変更す
    るノーマル関数実行手段とを含むことを特徴とするプロ
    グラムの最適化方式。
  3. 【請求項3】 原始プログラムを入力し目的プログラム
    に翻訳するコンパイラのプログラムの最適化方式におい
    て、翻訳している手続き副プログラムが、この手続き副
    プログラムの入力となる仮引数の値およびグローバルデ
    ータの値がそれぞれある値であれば、手続き副プログラ
    ムを実行することにより決定される手続き副プログラム
    の出力となる仮引数の値およびグローバルデータの値が
    それぞれある定まった値であるか否かを判定するノーマ
    ル手続き定義判定手段と、翻訳しているプログラム単位
    から呼出している手続き副プログラムが、前記ノーマル
    手続き定義判定手段で手続き副プログラムの入力となる
    仮引数の値およびグローバルデータの値がそれぞれある
    値であれば、手続き副プログラムを実行することにより
    決定される手続き副プログラムの出力となる仮引数の値
    およびグローバルデータの値がそれぞれある定まった値
    であると判定されており、かつ、手続き副プログラムを
    呼出すときの入力となる実引数の値およびグローバルデ
    ータの値が翻訳時に分かっているとき、手続き副プログ
    ラムの出力となるグローバルデータが翻訳しているプロ
    グラム単位からも参照可能であるか否かを判定するノー
    マル手続き参照判定手段と、このノーマル手続き参照判
    定手段で判定された前記ノーマル手続き定義判定手段で
    手続き副プログラムの入力となる仮引数の値およびグロ
    ーバルデータの値がそれぞれある値であれば、手続き副
    プログラムを実行することにより決定される手続き副プ
    ログラムの出力となる仮引数の値およびグローバルデー
    タの値がそれぞれある定まった値であると判定されてお
    り、かつ、手続き副プログラムを呼出すときの入力とな
    る実引数の値およびグローバルデータの値が翻訳時に分
    かっており、かつ、手続き副プログラムの出力となるグ
    ローバルデータが翻訳しているプログラム単位からも参
    照可能であると判定された手続き副プログラムの呼出し
    に対して生成する命令列を、その手続き副プログラムを
    翻訳時に分かっている入力となる実引数の値で実行した
    結果として出力される値で実引数の値およびグローバル
    データの値を確定する命令列となるように変更するノー
    マル手続き実行手段とを含むことを特徴とするプログラ
    ムの最適化方式。
JP19353292A 1992-07-21 1992-07-21 プログラムの最適化方式 Withdrawn JPH0635714A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP19353292A JPH0635714A (ja) 1992-07-21 1992-07-21 プログラムの最適化方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP19353292A JPH0635714A (ja) 1992-07-21 1992-07-21 プログラムの最適化方式

Publications (1)

Publication Number Publication Date
JPH0635714A true JPH0635714A (ja) 1994-02-10

Family

ID=16309645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19353292A Withdrawn JPH0635714A (ja) 1992-07-21 1992-07-21 プログラムの最適化方式

Country Status (1)

Country Link
JP (1) JPH0635714A (ja)

Similar Documents

Publication Publication Date Title
US6253371B1 (en) Method for supporting parallelization of source program
JPH08202545A (ja) ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法
JPH07105012A (ja) 言語処理プログラムのコンパイル処理方式
JP2017204201A (ja) 情報処理装置、コンパイル方法、およびコンパイルプログラム
JP3196675B2 (ja) 言語処理方式
JPH0635714A (ja) プログラムの最適化方式
JPH08194611A (ja) プログラム修正による影響範囲を解析する装置
JP3167386B2 (ja) プログラム自動並列化方法
KR950015127A (ko) 칠(chill) 분리 컴파일 방법
JPH0561687A (ja) コンパイラの処理方式
JPH04343140A (ja) コンパイラの最適化処理方法
JPH05204699A (ja) デバッグ時識別子探索方式
JPH0795275B2 (ja) コンパイル処理装置
JPH02253443A (ja) プログラム生成方法
JPH03273340A (ja) ループ内レジスタ割付け方式
JPH07192034A (ja) インタプリタ型シミュレーション方法
JPS63314646A (ja) プログラム言語トランスレ−タ
JPH02245934A (ja) データ処理装置
JPH0795273B2 (ja) コンパイラにおける和計算の部分展開処理方式
JPH05120025A (ja) ソースプログラムのインライン展開方法
JPH10111794A (ja) アプリケーションプログラム作成システム
JPH0713771A (ja) 言語処理プログラム
JPH05204700A (ja) 言語処理装置
JPH07105014A (ja) 言語処理システムのシンボル処理方式
JPH0736708A (ja) インライン展開方式

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19991005