JPH11338707A - 実行プログラム最適化装置 - Google Patents

実行プログラム最適化装置

Info

Publication number
JPH11338707A
JPH11338707A JP14556798A JP14556798A JPH11338707A JP H11338707 A JPH11338707 A JP H11338707A JP 14556798 A JP14556798 A JP 14556798A JP 14556798 A JP14556798 A JP 14556798A JP H11338707 A JPH11338707 A JP H11338707A
Authority
JP
Japan
Prior art keywords
variable
initial value
address
read
variables
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
JP14556798A
Other languages
English (en)
Inventor
Hotoku Kono
朋徳 河野
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 Software Kobe Ltd
Original Assignee
NEC Software Kobe 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 Software Kobe Ltd filed Critical NEC Software Kobe Ltd
Priority to JP14556798A priority Critical patent/JPH11338707A/ja
Publication of JPH11338707A publication Critical patent/JPH11338707A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 プログラムが占める記憶域の少量化。 【解決手段】 変数定義参照状況解析部71は、ソース
プログラム3の命令中で参照のみが行われている変数を
選び出し、変数初期値設定状況解析部72は、その変数
のうち初期値が設定されているものを選び出す。引用命
令解析部73,型解析部74,初期値解析部75は、そ
れぞれその変数について、引用命令のアドレス,型,初
期値を出力し読み出し専用変数情報5とする。読み出し
専用変数分類部81は型と初期値が同じ変数を分類し、
読み出し専用変数アドレス決定部82は、分類された変
数に対して一分類につき実行プログラム6中のアドレス
を決定する。読み出し専用変数引用アドレス設定部83
は、アドレスが決定された変数を引用する命令の引用ア
ドレスに決定されたアドレスを設定する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、言語処理系におけ
る実行プログラム最適化装置に関する。
【0002】
【従来の技術】ソースプログラムをコンパイルした目的
プログラムをリンカで結合して実行プログラムを生成す
る場合、実行プログラムが占める記憶域の総量をいかに
して少量化するかは、プログラム生成上の重要な課題で
ある。
【0003】従来のこの種の技術として、特開平2−2
49035号公報記載の「モジュール間最適化装置」が
知られている。この最適化装置は、「ソースプログラム
を入力して目的プログラムを生成する言語処理プログラ
ム手段と、一つ以上の目的プログラムを入力してこれら
の目的プログラム間の参照関係を解決し一つのロードモ
ジュールを生成するリンケージエディタとを備えたモジ
ュール間最適化装置において、前記言語処理プログラム
手段に、目的プログラムを生成するときこの目的プログ
ラム内での定数データの割り付け情報を生成し、その定
数データの割り付け情報を出力する定数データ割り付け
情報生成手段を備え、前記リンケージエディタに、この
定数データ割り付け情報を利用して目的プログラム間の
定数データ割り付け状態を解析し、複数の目的プログラ
ム中に同一の値をもった定数データが割り付けられてい
る場合に同一の値をもった定数データのいくつかを残し
て他を削除しそれに関する命令を修正する目的プログラ
ム間定数データ割り付け最適化手段とを備えたことを特
徴とするモジュール間最適化装置。」である。
【0004】
【発明が解決しようとする課題】しかしながら、上述し
た従来技術では、定数についてだけ、プログラムを構成
する全てのコンパイル単位間で同一のメモリ領域を共有
するにすぎないため、共有するメモリ領域が限られてし
まい、したがって記憶域の削減量も少ないという問題点
がある。
【0005】本発明の目的は、プログラム実行時に読み
出しのみが行われる変数であれば値が変更されないこと
に着目し、初期値が同一の読み出し専用変数を同一メモ
リアドレスに設定することにより、記憶域を一層少量化
できる実行プログラム最適化装置を提供することにあ
る。
【0006】
【課題を解決するための手段】本発明の実行プログラム
最適化装置は、ソースプログラム中に記述された読み出
し専用変数のうち同じ初期値を有する変数を同一のメモ
リアドレスに割り付けることを特徴とする。
【0007】また、本発明の好ましい実施の形態として
の実行プログラム最適化装置は、ソースプログラム中の
全ての変数について命令中での定義/参照状況を調べて
参照のみが行われている変数を選び出す変数定義参照状
況解析部と、前記選び出された変数のうち初期値が設定
されている変数を選び出す変数初期値設定状況解析部
と、該変数初期値設定状況解析部が選び出した変数につ
いて、その引用命令のアドレス,型および初期値をそれ
ぞれ引用情報,型情報および初期値情報として出力する
引用命令解析部,型解析部および初期値解析部とをコン
パイラに設け、また、前記型情報および初期値情報を調
べて型および初期値が同じ変数に分類する読み出し専用
変数分類部と、該分類された変数に対して一分類につき
実行プログラム中のアドレスを決定する読み出し専用変
数アドレス決定部と、該アドレスが決定された変数に対
する前記引用情報を参照して当該変数を引用する命令の
引用アドレスに前記決定したアドレスを設定する読み出
し専用変数引用アドレス設定部とをリンカに設けたこと
を特徴とする。
【0008】本発明の好ましい実施の形態としての実行
プログラム最適化装置は、ソースプログラム中の全ての
変数について命令中での定義/参照状況を調べて参照の
みが行われている変数を選び出す変数定義参照状況解析
部と、前記選び出された変数のうち初期値が設定されて
いる変数を選び出す変数初期値設定状況解析部と、該変
数初期値設定状況解析部が選び出した変数について、そ
の引用命令のアドレス,長さおよび初期値をそれぞれ引
用情報,長さ情報および初期値情報として出力する引用
命令解析部,長さ解析部および初期値解析部とをコンパ
イラに設け、また、前記型情報および初期値情報を調べ
て長さおよび初期値が同じ変数に分類する読み出し専用
変数分類部と、該分類された変数に対して一分類につき
実行プログラム中のアドレスを決定する読み出し専用変
数アドレス決定部と、該アドレスが決定された変数に対
する前記引用情報を参照して当該変数を引用する命令の
引用アドレスに前記決定したアドレスを設定する読み出
し専用変数引用アドレス設定部とをリンカに設けたこと
を特徴とする。
【0009】
【発明の実施の形態】次に、本発明の実施の形態につい
て説明する。
【0010】本発明の実行プログラム最適化装置は、ソ
ースプログラム中に記述された読み出し専用変数のうち
同じ初期値を有する変数を同一のメモリアドレスに割り
付けることを特徴とする。
【0011】以下、本発明の実施例について図面を参照
して説明する。
【0012】図1を参照すると、本発明の一実施例は、
コンパイラ1、リンカ2、ソースプログラム3、目的プ
ログラム4、読み出し専用変数情報5および実行プログ
ラム6から構成される。
【0013】コンパイラ1は、ソースプログラム3を入
力しコンパイルして目的プログラム4を出力し、また読
み出し専用変数処理部7を有する。
【0014】読み出し専用変数処理部7は、変数定義参
照状況解析部71、変数初期値設定状況解析部72、引
用命令解析部73、型解析部74および初期値解析部7
5から成る。読み出し専用変数処理部7は、コンパイラ
1の動作中に起動され、変数定義参照状況解析部71、
変数初期値設定状況解析部72、引用命令解析部73、
型解析部74および初期値解析部75を順次起動して、
ソースプログラム3中で読み出しだけ行われている変数
を選び出し、当該変数の命令部での参照箇所、型および
初期値を調べ、それらを読み出し専用変数情報5のそれ
ぞれ引用情報51、型情報52および初期値情報53と
して出力する。
【0015】リンカ2は目的プログラム4を入力しリン
クして、実行プログラム6を出力し、また読み出し専用
変数割り付け部8を有する。
【0016】読み出し専用変数割り付け部8は、読み出
し専用変数分類部81、読み出し専用変数アドレス決定
部82および読み出し専用変数引用アドレス設定部83
から成る。読み出し専用変数割り付け部8は、リンカ2
の動作中に起動され、読み出し専用変数分類部81、読
み出し専用変数アドレス決定部82および読み出し専用
変数引用アドレス設定部83を順次起動して、読み出し
専用変数情報5を入力し、型および初期値が一致するも
のを選び出し、実行プログラム6中のデータ部に割り付
け変数のアドレスを決定する。その後、再度、選び出し
た読み出し専用変数情報5を参照し、決定したアドレス
をもって命令部の参照アドレスとする。
【0017】図2を参照すると、読み出し専用変数情報
5は、引用情報51、型情報52、初期値情報53を含
んでおり、読み出し専用変数処理部7によりソースプロ
グラム3中の変数のうち読み出しのみ行われる変数一個
につき一つ生成され、引用情報51は当該変数の命令部
における引用箇所、型情報52は当該変数の型、初期値
情報53は当該変数の初期値をそれぞれ表す。
【0018】引用情報51は、読み出し専用変数割り付
け部8により当該変数が実行プログラム6中に割り付け
られる時、当該変数を引用している命令の引用アドレス
を決定するために用いられる。型情報52と初期値情報
53は読み出し専用変数割り付け部8により引用され、
同一の型および初期値をもつ複数の変数を実行プログラ
ム6中の同一領域に割り付けるために用いられる。読み
出し専用変数情報5は、読み出し専用変数一個につき一
個の情報を保持することにより、同一の型、初期値をも
つ変数を実行プログラム6中のただひとつの領域として
割り付け可能にするものである。
【0019】次に、本実施例の動作について説明する。
【0020】ソースプログラム3は、コンパイラ1によ
りコンパイルされ、目的プログラム4に変換され、次に
目的プログラム4がリンカ2によりリンクされ、実行プ
ログラム6に変換される。
【0021】コンパイラ1は、ソースプログラム3を入
力してコンパイル中に、読み出し専用変数処理部7を起
動する。読み出し専用変数処理部7が起動されるとま
ず、変数定義参照状況解析部71が動作し、ソースプロ
グラム中の全ての変数について命令中での定義/参照状
況を調べ、参照のみ行われている変数を選び出す。次に
変数初期値設定状況解析部72が動作し、変数定義参照
状況解析部71で選び出された変数のうち、初期値が設
定されている変数が選び出される。次に、引用命令解析
部73、型解析部74および初期値解析部75が順に動
作し、変数初期値設定状況解析部72により選び出され
た変数の、引用命令のアドレス、型、初期値の値がそれ
ぞれ読み出し専用変数情報5の、引用情報51、型情報
52、初期値情報53として出力される。
【0022】リンカ2は、目的プログラム4を入力して
リンク中に、読み出し専用変数割り付け部8を起動す
る。読み出し専用変数割り付け部8が起動されると、ま
ず、読み出し専用変数分類部81が動作し、読み出し専
用変数情報5を入力し、各読み出し専用変数情報5の型
情報52と初期値情報53を調べ、型および初期値が同
じものに分類する。次に、読み出し専用変数アドレス決
定部82が動作し、読み出し専用変数分類部81で分類
された変数を一分類につき一個実行プログラム6中に割
り付け変数のアドレスを決定する。次に、読み出し専用
変数引用アドレス設定部83が動作し、読み出し専用変
数分類部81で分類された同一分類中の全ての読み出し
専用変数情報5の引用情報51を参照し、命令部中の当
該変数の引用命令の引用アドレスに、読み出し専用変数
アドレス決定部82で決定したアドレスを設定する。
【0023】次に、図3の具体例を用いて、さらに詳し
く本実施例の動作を説明する。
【0024】図3(A)に示すように、ソースプログラ
ム3が、PROGRAM1、PROGRAM2およびP
ROGRAM3の3つから成り(図3のP1,P2およ
びP3)、PROGRAM1中に型が“INTEGE
R”で初期値“4000”をもつ読み出しのみ行われる
変数“A”が、PROGRAM2中に型が“INTEG
ER”で初期値“4000”をもつ読み出しのみ行われ
る変数“X”が、PROGRAM3中に型が“INTE
GER”で初期値“4000”をもつ読み出しのみ行わ
れる変数“U”がそれぞれ存在したとする。
【0025】コンパイラ1は、PROGRAM1、PR
OGRAM2およびPROGRAM3をそれぞれ目的プ
ログラム4に変換する(図3(B)のO1,O2および
O3)。同時にコンパイラ1の動作中に起動された読み
出し専用変数処理部7は、各プログラム毎に、読み出し
専用変数情報5(図3(B)のI1,I2およびI3)
を出力する。
【0026】読み出し専用変数割り付け部8は、読み出
し専用変数情報5を入力し、I1,I2およびI3が同
一の型、初期値をもつので、これらを実行プログラム6
中の初期値“4000”をもつ変数の領域として、一個
だけ割り付け(図3(C)のR4)アドレスをL001
と決定し、もともと、A,XおよびUの引用であった実
行プログラム6中の引用命令(図3のR1,R2および
R3)の変数の引用アドレス部分(図3のR11,R2
1およびR31)を今割り付けた変数領域のアドレスL
001に設定する。
【0027】以上に説明した実施例では、同じ型として
整数の場合であるが、本発明はこれに限定されることは
なく、実数型、または文字型であってもよい。
【0028】次に、本発明の実施例について図4および
図5を参照して説明する。
【0029】図4および図5を参照すると、図4の長さ
解析部76が図1の型解析部74と異なり、図6の長さ
情報52が図2の型情報52と異なる。読み出し専用変
数処理部7の動作中に起動する長さ解析部76は、変数
が占めるバイト数を長さ情報52として出力する。読み
出し専用変数割り付け部8の読み出し専用変数分類部8
1が読み出し専用変数情報5を分類する時、長さ情報5
2と初期値情報53とを調べ、長さおよび初期値が同じ
ものに分類する。
【0030】次に、具体例を示す。図6に示すように、
ソースプログラム3が、PROGRAM1、PROGR
AM2およびPROGRAM3の3つから成り(図3の
P1,P2およびP3)、PROGRAM1中に長さが
“4バイト”で初期値“4000”をもつ読み出しのみ
が行われる変数“A”が、PROGRAM2中に長さが
“4バイト”で初期値“4000”をもつ読み出しのみ
行われる変数“X”が、PROGRAM3中に長さが
“4バイト”で初期値“4000”をもつ読み出しのみ
行われる変数“U”がそれぞれ存在したとする。
【0031】コンパイラ1は、PROGRAM1、PR
OGRAM2およびPROGRAM3をそれぞれ目的プ
ログラム4に変換する(図3のO1,O2およびO
3)。同時にコンパイラ1の動作中に起動された読み出
し専用変数処理部7は、各プログラム毎に、読み出し専
用変数情報5(図3のI1,I2およびI3)を出力す
る。
【0032】読み出し専用変数割り付け部8は、読み出
し専用変数情報5を入力し、I1,I2およびI3が同
一の長さ、初期値をもつので、これらを実行プログラム
6中の初期値“4000”をもつ変数の領域として一個
だけ割り付け(図3のR4)アドレスをL001と決定
し、もともと、A,XおよびUの引用であった実行プロ
グラム6中の引用命令(図3のR1,R2およびR3)
の変数の引用アドレス部分(図3のR11,R21およ
びR31)を今割り付けた変数領域のアドレスL001
に設定する。
【0033】本実施例では、変数の長さの情報を保持す
るため、型が違っても長さが同じで初期値の値が同じで
ある変数の割り付け領域を削減できるという新たな効果
がある。
【0034】
【発明の効果】本発明は、同じ初期値を有する読み出し
専用変数を同一のメモリアドレスに設定することとした
ため、定数にのみ同一のメモリアドレスを割り付ける従
来技術に対して、より一層の記憶域の少量化ができると
いう効果を有する。
【図面の簡単な説明】
【図1】本発明の一実施例を示すブロック図
【図2】図1に示した実施例における読み出し専用変数
情報のフォーマットを示す図
【図3】図1に示した実施例の動作を説明するための図
【図4】本発明の他の実施例を示すブロック図
【図5】図4に示した実施例における読み出し専用変数
情報のフォーマットを示す図
【図6】図4に示した実施例の動作を説明するための図
【符号の説明】 1,10 コンパイラ 2 リンカ 3 ソースプログラム 4,40 目的プログラム 5,50 読み出し専用変数情報 6,60 実行プログラム 7,70 読み出し専用変数処理部 8 読み出し専用変数割り付け部 51 引用情報 52 型情報 53 初期値情報 54 長さ情報 71 変数定義参照状況解析部 72 変数初期値設定状況解析部 73 引用命令解析部 74 型解析部 75 初期値解析部 76 長さ解析部 81 読み出し専用変数分類部 82 読み出し専用変数アドレス決定部 83 読み出し専用変数引用アドレス設定部

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】ソースプログラム中に記述された読み出し
    専用変数のうち同じ初期値を有する変数を同一のメモリ
    アドレスに割り付けることを特徴とする実行プログラム
    最適化装置。
  2. 【請求項2】ソースプログラム中に記述された読み出し
    専用変数のうち、同じ型および同じ初期値を有する変数
    を同一のメモリアドレスに割り付けることを特徴とする
    請求項1記載の実行プログラム最適化装置。
  3. 【請求項3】ソースプログラム中の全ての変数について
    命令中での定義/参照状況を調べて参照のみが行われて
    いる変数を選び出す変数定義参照状況解析部と、前記選
    び出された変数のうち初期値が設定されている変数を選
    び出す変数初期値設定状況解析部と、該変数初期値設定
    状況解析部が選び出した変数について、その引用命令の
    アドレス,型および初期値をそれぞれ引用情報,型情報
    および初期値情報として出力する引用命令解析部,型解
    析部および初期値解析部とをコンパイラに設け、 また、前記型情報および初期値情報を調べて型および初
    期値が同じ変数に分類する読み出し専用変数分類部と、
    該分類された変数に対して一分類につき実行プログラム
    中のアドレスを決定する読み出し専用変数アドレス決定
    部と、該アドレスが決定された変数に対する前記引用情
    報を参照して当該変数を引用する命令の引用アドレスに
    前記決定したアドレスを設定する読み出し専用変数引用
    アドレス設定部とをリンカに設けたことを特徴とする請
    求項2記載の実行プログラム最適化装置。
  4. 【請求項4】前記型は、整数型,実数型,文字型のいず
    れかであることを特徴とする請求項2または請求項3記
    載の実行プログラム最適化装置。
  5. 【請求項5】ソースプログラム中に設定された読み出し
    専用変数のうち、同じ長さおよび同じ初期値を有する変
    数を同一のメモリアドレスに割り付けることを特徴とす
    る請求項1記載の実行プログラム最適化装置。
  6. 【請求項6】ソースプログラム中の全ての変数について
    命令中での定義/参照状況を調べて参照のみが行われて
    いる変数を選び出す変数定義参照状況解析部と、前記選
    び出された変数のうち初期値が設定されている変数を選
    び出す変数初期値設定状況解析部と、該変数初期値設定
    状況解析部が選び出した変数について、その引用命令の
    アドレス,長さおよび初期値をそれぞれ引用情報,長さ
    情報および初期値情報として出力する引用命令解析部,
    長さ解析部および初期値解析部とをコンパイラに設け、 また、前記型情報および初期値情報を調べて長さおよび
    初期値が同じ変数に分類する読み出し専用変数分類部
    と、該分類された変数に対して一分類につき実行プログ
    ラム中のアドレスを決定する読み出し専用変数アドレス
    決定部と、該アドレスが決定された変数に対する前記引
    用情報を参照して当該変数を引用する命令の引用アドレ
    スに前記決定したアドレスを設定する読み出し専用変数
    引用アドレス設定部とをリンカに設けたことを特徴とす
    る請求項5記載の実行プログラム最適化装置。
JP14556798A 1998-05-27 1998-05-27 実行プログラム最適化装置 Pending JPH11338707A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP14556798A JPH11338707A (ja) 1998-05-27 1998-05-27 実行プログラム最適化装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP14556798A JPH11338707A (ja) 1998-05-27 1998-05-27 実行プログラム最適化装置

Publications (1)

Publication Number Publication Date
JPH11338707A true JPH11338707A (ja) 1999-12-10

Family

ID=15388114

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14556798A Pending JPH11338707A (ja) 1998-05-27 1998-05-27 実行プログラム最適化装置

Country Status (1)

Country Link
JP (1) JPH11338707A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013114540A1 (ja) * 2012-01-30 2013-08-08 富士通株式会社 制御装置、解析装置、解析方法、および解析プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013114540A1 (ja) * 2012-01-30 2013-08-08 富士通株式会社 制御装置、解析装置、解析方法、および解析プログラム

Similar Documents

Publication Publication Date Title
US9965258B2 (en) Programming a multi-processor system
US8918769B2 (en) Application of optimization techniques to intermediate representations for code generation
JP3220055B2 (ja) 機械語命令列またはアセンブリ言語命令列を最適化する最適化装置、及び、高級言語で記載されたソースプログラムを機械語またはアセンブリ言語の命令列に変換するコンパイラ装置。
US8032873B2 (en) Computer program code size partitioning system for multiple memory multi-processing systems
US5787284A (en) Improving memory layout based on connectivity considerations
KR20010032633A (ko) 프로그램머블 하드웨어 구조를 이용하여 특정용도집적회로를 생성하는 방법
US20090217252A1 (en) Optimizing compiler transforms for a high level shader language
US5367684A (en) Register allocation using an improved register candidate usage matrix
US20070074196A1 (en) Compiler apparatus
US20040194071A1 (en) Compiling device, computer-readable recording medium on which a compiling program is recorded and a compiling method
US8037463B2 (en) Computer program functional partitioning system for heterogeneous multi-processing systems
US5692196A (en) System and method for conditionally compiling a software compilation unit
JP2005141380A (ja) テンプレートコンパイル方法
US6014519A (en) Language processing unit and a language processing method to translate a source program and generate an object module file
US5418959A (en) Instruction operation size optimization
JPH11338707A (ja) 実行プログラム最適化装置
JPH01118931A (ja) プログラム変換方式
Bivens et al. Incremental register reallocation
JP2003157176A (ja) コンパイラ、その記憶領域割り付け方法およびそのプログラム
JPH08272623A (ja) プログラム解析装置及びプログラム解析方法
US7797518B2 (en) Generating instruction sets for compacting long instructions
Rauber et al. Integrating library modules into special purpose parallel algorithms
Falkenberg et al. A New Approach Towards Accelerating VLSI-Synthesis
JPH0689187A (ja) インライン展開最適化方法
JPH11184706A (ja) 画像処理装置のプログラム転送方法