JPH05151000A - 最適な内部呼び出し命令の生成処理方式 - Google Patents

最適な内部呼び出し命令の生成処理方式

Info

Publication number
JPH05151000A
JPH05151000A JP31271291A JP31271291A JPH05151000A JP H05151000 A JPH05151000 A JP H05151000A JP 31271291 A JP31271291 A JP 31271291A JP 31271291 A JP31271291 A JP 31271291A JP H05151000 A JPH05151000 A JP H05151000A
Authority
JP
Japan
Prior art keywords
call instruction
instruction
internal call
internal
relative
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
JP31271291A
Other languages
English (en)
Inventor
Yoshikazu Takeda
義和 武田
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.)
KOBE NIPPON DENKI SOFTWARE KK
NEC Software Kobe Ltd
Original Assignee
KOBE NIPPON DENKI SOFTWARE KK
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 KOBE NIPPON DENKI SOFTWARE KK, NEC Software Kobe Ltd filed Critical KOBE NIPPON DENKI SOFTWARE KK
Priority to JP31271291A priority Critical patent/JPH05151000A/ja
Publication of JPH05151000A publication Critical patent/JPH05151000A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 内部呼び出し命令の命令数を効率よく削減
し、プログラムの実行速度を上げる。 【構成】 機械語が内部呼び出し命令の場合、内部呼び
出し命令管理テーブル設定手段2で、内部呼び出し命令
管理テーブル5に情報を設定し、構文・意味解析結果フ
ァイル終了後、内部呼び出し命令管理テーブル補正手段
3でテーブル5の情報を補正し、機械語展開時に内部呼
び出し命令展開変更手段4でテーブル5の情報をもとに
内部呼び出し命令を展開する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、機械語の内部呼び出し
命令が内部呼び出し命令から呼び出し先までの相対で呼
び出す命令とレジスタ修飾で呼び出す命令を有する計算
機における言語処理プログラムの機械語内部呼び出し命
令の処理方式に関する。
【0002】
【従来の技術】ソースプログラムを翻訳し機械語命令を
展開する処理過程において、最適な(より命令部が小さ
い)内部呼び出し命令を展開した目的プログラムを得よ
うとする言語処理プログラムの処理方式として、従来、
例えば図3に示されるような方式が知られている。これ
は、ソース入力・構文・意味解析処理s15と、構文・
意味解析結果ファイル入力処理s16、構文・意味解析
結果ファイル終了判定処理s17と、機械語展開処理s
18と、上位方向直接相対呼び出し命令判定処理s19
と、直接相対呼び出し命令変更処理s20、呼び出し先
(入口)定義判定処理s21と、入口情報テーブル設定
処理s22と、機械語出力処理s23と、ソースプログ
ラムファイルが格納される記憶装置12と、構文・意味
解析結果ファイルが格納される記憶装置13と、目的プ
ログラムファイルが格納される記憶装置14と、入口情
報テーブル15から構成されており、各処理の流れと内
容は次のようなものであった。
【0003】(ソース入力・構文・意味解析処理s1
5)ソースプログラムファイルからソースプログラムを
読み込み、構文・意味解析処理を行い、結果を構文・意
味解析結果ファイルへ格納し、制御を構文・意味解析結
果ファイル入力処理s16へ移す。
【0004】(構文・意味解析結果ファイル入力処理s
16)構文・意味解析結果ファイルから構文・意味解析
結果を読み込み、制御を構文・意味解析結果ファイル終
了判定処理s17へ移す。
【0005】(構文・意味解析結果ファイル終了判定処
理s17)構文・意味解析結果が読み込まれたかどうか
を判定する。構文・意味解析結果ファイルが終了してい
なければ機械語展開処理s18へ制御を移す。
【0006】(機械語展開処理s18)構文・意味解析
結果ファイル入力処理s16で読み込んだ構文・意味解
析結果を機械語に変換して機械語を展開する。この後、
制御を上位方向直接相対呼び出し命令判定処理s19へ
移す。
【0007】(方向直接相対呼び出し命令判定処理s1
9)内部呼び出し命令の呼び出し先(入口の定義)が、
内部呼び出し命令の存在する命令セグメント内相対アド
レスよりも上位の方向(低いアドレス)へ内部呼び出し
するかどうか判定し上位方向へ内部呼び出しする場合、
内部呼び出し命令から入口定義までの相対値に、直接相
対呼び出し命令にできる範囲であれば直接相対呼び出し
命令変更処理s20へ制御を移す。上位方向の内部呼び
出し以外、または上位方向への内部呼び出し命令であっ
ても直接相対呼び出し命令にできないならば、制御を呼
び出し先(入口)定義判定処理s21へ移す。本処理で
の相対値を求めるために入口情報テーブル15を参照す
る。
【0008】(直接相対呼び出し命令変更処理s20)
内部呼び出し命令を直接相対呼び出し命令に変更して制
御を機械語出力処理s23へ移す。
【0009】(呼び出し先(入口)定義判定処理s2
1)機械語展開処理s18で展開された機械語情報が呼
び出し先(入口)定義であれば、制御を入口情報テーブ
ル設定処理s22へ移す。呼び出し先(入口)定義でな
いならば制御を機械語出力処理s23へ移す。
【0010】(入口情報テーブル設定処理s22)呼び
出し先定義の命令セグメント内相対アドレスを入口情報
テーブル15へ設定し、制御を機械語出力処理s23へ
移す。
【0011】(機械語出力処理s23)機械語展開処理
s18で展開された機械語、または、直接相対呼び出し
命令変更処理s20で変更された内部呼び出し命令を目
的プログラムファイルへ格納し、構文・意味解析結果フ
ァイル入力処理s16へ制御を移す。
【0012】
【発明が解決しようとする課題】上述した従来の処理方
式は、上位方向の内部呼び出し命令(高いアドレスから
低いアドレスへの内部呼び出し命令)が直接相対呼び出
し命令にできるか否かの判定と、それに伴う内部呼び出
し命令の変更のみを行い、下位方向への内部呼び出し命
令(低いアドレスから高いアドレスへの内部呼び出し命
令)は、間接呼び出し命令群に展開しており、これは、
内部呼び出し命令から呼び出し先までの間に別の内部呼
び出し命令を含んでいる場合、間に含まれる内部呼び出
し命令が直接相対呼び出し命令になるか否かによって、
間に含む側の内部呼び出し命令の相対値が変更されるた
め、呼び出し先までの正確な相対値を求める相対値補正
の処理が複雑で困難になっているので、完全な直接相対
呼び出しへの変更が実施されず、展開した機械語の命令
数が大きくなり、それによってプログラムの実行速度が
遅くなるという欠点がある。
【0013】また、別の従来の方法として、すべて間接
呼び出し命令群に展開して内部呼び出し命令の最適化を
実施しない場合とか、展開された機械語命令を何度も読
み直して内部呼び出し命令の最適化を行う方法もある
が、前者は最適化されないという欠点があり、後者は内
部呼び出し命令以外の命令も何度も読み直すという無駄
な処理が増加して、言語処理プログラムの処理速度が遅
くなるという欠点がある。
【0014】本発明の目的は、内部呼び出し命令の命令
数を効率よく削減し、プログラムの実行速度を上げる、
最適な内部呼び出し命令の生成処理方式を提供すること
である。
【0015】
【課題を解決するための手段】本発明の、最適な内部呼
び出し命令の生成処理方式では、ソースプログラムファ
イルからソースプログラムを読み込み、構文・意味解析
を行い、機械語命令を展開する言語プログラムの処理方
式において、内部呼び出し命令の命令セグメント内相対
アドレスと、内部呼び出し命令の呼び出し先の情報、す
なわち呼び出し先の命令セグメント内相対アドレスが格
納されている入口情報テーブルの何番目かを示す番号
と、内部呼び出し命令が直接相対呼び出し命令になり得
たか否かの情報を要素とする内部呼び出し命令管理テー
ブルと、機械語に展開された個々の内部呼び出し命令の
情報を出現順に内部呼び出し命令管理テーブルへ格納す
る内部呼び出し命令管理テーブル設定手段と、入口情報
テーブルと内部呼び出し命令管理テーブルの情報をもと
に、内部呼び出し命令から呼び出し先までの相対値を求
め、内部呼び出し命令が直接相対呼び出し命令か否かを
判定し、直接相対呼び出し命令に該当すれば、内部呼び
出し命令管理テーブルに直接呼び出し命令に変更した旨
の情報を設定し、変更された内部呼び出し命令以降の内
部呼び出し命令管理テーブルの命令セグメント内相対ア
ドレスと、入口情報テーブルの命令セグメント内相対ア
ドレスを補正する内部呼び出し命令管理テーブル補正手
段と、機械語命令を内部呼び出し命令管理テーブルの直
接相対呼び出し命令か否かの情報をもとに決定した内部
呼び出し命令を出現順に変更していく内部呼び出し命令
展開変更手段と、前記内部呼び出し命令管理テーブル設
定手段、内部呼び出し命令管理テーブル補正手段、内部
呼び出し命令展開変更手段とを制御するプログラム制御
手段を有している。
【0016】
【作用】言語処理プログラムが機械語命令を展開する処
理過程において、内部呼び出し命令が直接相対呼び出し
命令か間接呼び出し命令群かを判断し、可能な限り内部
呼び出し命令を直接相対呼び出し命令にするために、内
部呼び出し命令の情報(内部呼び出し命令の命令セグメ
ント内相対アドレス、呼び出し先の情報、直接相対呼び
出し命令になり得たか否かの情報)をテーブル化して管
理することにより、完全な直接相対呼び出し命令化と、
内部呼び出し命令の相対値を求める処理が単純化でき、
内部呼び出し命令の命令数を削減し、プログラムの実行
速度を上げる。
【0017】
【実施例】次に本発明の実施例について図面を参照して
説明する。
【0018】図1は本発明の一実施例の概略構成図であ
る。本実施例は、プログラム制御手段1、内部呼び出し
命令管理テーブル設定手段2、内部呼び出し命令管理テ
ーブル補正手段3、内部呼び出し命令展開変更手段4、
内部呼び出し命令管理テーブル5から構成されている。
【0019】図2は本実施例の処理の流れ図であり、ソ
ース入力・構文・意味解析処理s1、構文・意味解析結
果ファイル入力処理s2、構文・意味解析結果ファイル
判定処理s3、機械語展開処理s4、内部呼び出し命令
判定処理s5、内部呼び出し命令管理テーブル設定処理
s6、呼び出し先(入口)定義判定処理s7、入口情報
テーブル設定処理s8、機械語展開−1出力処理s9、
内部呼び出し命令管理テーブル補正処理s10、機械語
展開ファイル入力処理s11、機械語展開ファイル終了
判定処理s12、内部呼び出し命令展開変更処理s1
3、機械語展開−2出力処理s14、ソースプログラム
ファイルを格納する記憶装置6、構文・意味解析結果フ
ァイルを格納する記憶装置7、入口定義の命令セグメン
ト内相対アドレスが配列で格納される入口情報テーブル
8、機械語展開ファイルが格納される記憶装置9、目的
プログラムファイルが格納される記憶装置10、内部呼
び出し命令の存在する命令セグメント内相対アドレス
と、内部呼び出し命令の呼び出し先(入口情報テーブル
の要素を示す)情報と、直接相対呼び出し命令になり得
たか否かの情報を、配列で格納される内部呼び出し命令
管理テーブル11が含まれている。各処理の内容と制御
の流れは次の通りである。
【0020】(ソース入力・構文・意味解析処理s1)
ソースプログラムファイルからソースプログラムを読み
込み、構文・意味解析の処理を行い、結果を構文・意味
解析結果ファイルへ格納し、制御を構文・意味解析結果
ファイル入力処理s2へ移す。
【0021】(構文・意味解析結果ファイル入力処理s
2)構文・意味解析結果ファイルから構文・意味解析結
果を読み込み、制御を構文・意味解析結果ファイル終了
判定処理s3へ移す。
【0022】(構文・意味解析結果ファイル終了判定処
理s3)構文・意味解析結果が読み込まれたかどうかを
判定する。構文・意味解析結果ファイルが終了していれ
ば、制御を内部呼び出し命令管理テーブル補正処理s1
0へ移す。構文・意味解析結果ファイルが終了していな
ければ、制御を機械語展開処理s4へ移す。
【0023】(機械語展開処理s4)構文・意味解析結
果ファイル入力処理s2で読み込んだ構文・意味解析結
果を機械語に変換して機械語を展開する。この後、制御
を内部呼び出し命令判定処理s5へ移す。
【0024】(内部呼び出し命令判定処理s5)機械語
展開処理s4で展開された機械語が内部呼び出し命令で
あれば制御を内部呼び出し命令管理テーブル設定処理s
6へ移す。内部呼び出し命令でなければ制御を呼び出し
先(入口)定義判定処理s7へ移す。
【0025】(内部呼び出し命令管理テーブル設定処理
s6)内部呼び出し命令の命令セグメント内相対アドレ
スと、内部呼び出し命令の呼び出し先(入口情報テーブ
ルの要素を示す)情報と、直接相対呼び出し命令になり
得たか否かの初期情報を内部呼び出し命令の出現順に内
部呼び出し命令管理テーブル11へ格納し、制御を機械
語展開−1出力処理s9へ移す。
【0026】(内部呼び出し先(入口)定義判定処理s
7)機械語展開処理s4で展開された機械語情報が呼び
出し先(入口)定義であれば、制御を入口情報テーブル
設定処理s8へ移す。機械語情報が呼び出し先(入口)
定義でないならば、制御を機械語展開−1出力処理s9
へ移す。
【0027】(入口情報テーブル設定処理s8)呼び出
し先(入口)定義の命令セグメント内相対アドレスを入
口情報テーブル8へ格納し、制御を機械語展開−1出力
処理s9へ移す。
【0028】(機械語展開−1出力処理s9)機械語展
開処理s4で展開された機械語情報を機械語展開ファイ
ルへ格納し、制御を構文・意味解析結果ファイル入力処
理s2へ移す。
【0029】(内部呼び出し命令管理テーブル補正処理
s10)内部呼び出し命令管理テーブル11の配列の最
初から最後まで以下の処理を行う。その中に直接相対呼
び出し命令に変更される内部呼び出し命令の補正があれ
ば、配列の最初から最後までの処理を繰り返す。
【0030】・内部呼び出し命令及び呼び出し先(入
口)定義の命令セグメント内相対アドレスをもとに内部
呼び出し命令から呼び出し先(入口)定義までの相対値
を求め、その値が直接相対呼び出し命令にできる範囲で
あれば、直接相対呼び出し命令になり得た旨の情報を設
定する。次に、直接相対呼び出し命令になり得た場合に
は、命令サイズが変更されるので、変更された直接相対
呼び出し命令の命令セグメント内相対アドレス以降のア
ドレスをもつ、内部呼び出し命令管理テーブルの命令セ
グメント内相対アドレスと、入口情報テーブル8の命令
セグメント内相対アドレスを補正する。内部呼び出し命
令が既に直接相対呼び出し命令になっている場合は、処
理は行われず次の内部呼び出し命令用の配列へ移す。
【0031】上記処理で配列の最初から最後までの間
に、補正すべき内部呼び出し命令がなくなった時点で制
御を機械語展開ファイル入力処理s11へ移す。
【0032】(機械語展開ファイル入力処理s11)機
械語展開ファイルから機械語展開情報を読み込み、制御
を機械語展開ファイル終了判定処理s12へ移す。
【0033】(機械語展開ファイル終了判定処理s1
2)機械語展開情報が読み込まれたかどうかを判定す
る。機械語展開ファイルが終了していれば言語処理プロ
グラムを終了する。機械語展開ファイルが終了していな
ければ、制御を内部呼び出し命令展開変更処理s13へ
移す。
【0034】(内部呼び出し命令展開変更処理s13)
機械語展開ファイル入力処理s11で読み込んだ機械語
展開情報が内部呼び出し命令であれば、その出現順に対
応する内部呼び出し命令管理テーブル11を参照し、内
部呼び出し命令が直接相対呼び出し命令になり得ている
時は、機械語展開情報の内部呼び出し命令を直接相対呼
び出し命令に変更する。
【0035】上記処理終了後、制御を機械語展開−2出
力処理s14へ移す。
【0036】(機械語展開−2出力処理s14)機械語
展開ファイル入力処理s11で読み込んだ機械語展開情
報、または内部呼び出し命令展開変更処理s13で変更
された内部呼び出し命令を目的プログラムファイルへ格
納し、制御を機械語展開ファイル入力処理s11へ移
す。
【0037】
【発明の効果】以上説明したように本発明は、言語処理
プログラムが機械語命令を展開する処理過程において、
内部呼び出し命令が直接相対呼び出し命令か間接呼び出
し命令群かを判断し、可能な限り内部呼び出し命令を直
接相対呼び出し命令にするために、内部呼び出し命令の
情報(内部呼び出し命令の命令セグメント内相対アドレ
ス、呼び出し先の情報、直接相対呼び出し命令になり得
たか否かの情報)をテーブル化して管理することによ
り、完全な直接相対呼び出し命令化と、内部呼び出し命
令の相対値を求める処理が単純化でき、内部呼び出し命
令の命令数を削減し、プログラムの実行速度を上げる効
果がある。
【図面の簡単な説明】
【図1】本発明の一実施例の概略構成図である。
【図2】図1の実施例の処理の流れ図である。
【図3】従来例の処理の流れ図である。
【符号の説明】
1 プログラム制御手段 2 内部呼び出し命令管理テーブル設定手段 3 内部呼び出し命令管理テーブル補正手段 4 内部呼び出し命令展開変更手段 5 内部呼び出し命令管理テーブル

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 機械語の内部呼び出し命令が、狭い範囲
    の呼び出しを可能とする内部呼び出し命令から呼び出し
    先までの相対で呼び出す命令である直接相対呼び出し命
    令と、広い範囲の呼び出しを可能とするレジスタ修飾で
    呼び出す命令を有する計算機の場合、ソースプログラム
    ファイルからソースプログラムを読み込み、構文・意味
    解析をして、機械語命令を展開する時、直接相対呼び出
    し命令にできるのか、呼び出し先の命令セグメント内相
    対アドレスをレジスタにロードして、レジスタ修飾によ
    る呼び出す命令群である間接呼び出し命令群になるのか
    を判定し、機械語命令数を少なく展開する、言語処理プ
    ログラムの処理方式において、 内部呼び出し命令の命令セグメント内相対アドレスと、
    内部呼び出し命令の呼び出し先の情報、すなわち呼び出
    し先の命令セグメント内相対アドレスが格納されている
    入口情報テーブルの何番目かを示す番号と、内部呼び出
    し命令が、直接相対呼び出し命令になり得たか否かの情
    報を要素とする内部呼び出し命令管理テーブルと、 機械語に展開された個々の内部呼び出し命令の情報を出
    現順に前記内部呼び出し命令管理テーブルへ格納する内
    部呼び出し命令管理テーブル設定手段と、 前記入口情報テーブルと前記内部呼び出し命令管理テー
    ブルの情報をもとに、内部呼び出し命令から呼び出し先
    までの相対値を求め、内部呼び出し命令が直接相対呼び
    出し命令か否かを判定し、直接相対呼び出し命令に該当
    すれば、前記内部呼び出し命令管理テーブルに直接呼び
    出し命令に変更した旨の情報を設定し、変更された内部
    呼び出し命令以降の内部呼び出し命令管理テーブルの命
    令セグメント内相対アドレスと、入口情報テーブルの命
    令セグメント内相対アドレスを補正する内部呼び出し命
    令管理テーブル補正手段と、 内部呼び出し機械語命令を、前記内部呼び出し命令管理
    テーブルの直接相対呼び出し命令か否かの情報をもとに
    出現順に変更していく内部呼び出し命令展開変更手段
    と、 前記内部呼び出し命令管理テーブル設定手段、内部呼び
    出し命令管理テーブル補正手段、内部呼び出し命令展開
    変更手段とを制御するプログラム制御手段を含むことを
    特徴とする、最適な内部呼び出し命令の生成処理方式。
JP31271291A 1991-11-27 1991-11-27 最適な内部呼び出し命令の生成処理方式 Pending JPH05151000A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31271291A JPH05151000A (ja) 1991-11-27 1991-11-27 最適な内部呼び出し命令の生成処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31271291A JPH05151000A (ja) 1991-11-27 1991-11-27 最適な内部呼び出し命令の生成処理方式

Publications (1)

Publication Number Publication Date
JPH05151000A true JPH05151000A (ja) 1993-06-18

Family

ID=18032519

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31271291A Pending JPH05151000A (ja) 1991-11-27 1991-11-27 最適な内部呼び出し命令の生成処理方式

Country Status (1)

Country Link
JP (1) JPH05151000A (ja)

Similar Documents

Publication Publication Date Title
JP2001147819A (ja) 最適化装置および記録媒体
JPH05151000A (ja) 最適な内部呼び出し命令の生成処理方式
US5765148A (en) Database processing apparatus and database processing method for variable length objects, and computer-readable memory medium for storing database processing program
JPH07244601A (ja) 関係データベースのアクセス方法および装置
JPH0594311A (ja) 機械語翻訳プログラム
JP2001125793A (ja) コンパイラシステム及びコンパイル方法並びに記録媒体
JPH01233622A (ja) 機械語分岐命令生成処理方式
CN116009877A (zh) 指令优化方法及装置
JPH0619721A (ja) 機械語翻訳最適化方式
JPH0581004A (ja) ドキユメント自動生成システム
JPH07129411A (ja) 機械語変換装置
JPH07105014A (ja) 言語処理システムのシンボル処理方式
JPH06175858A (ja) プログラム翻訳装置
JPH0371231A (ja) ソースリスト作成方式
JPH03142628A (ja) 最新ソースファイル作成装置
JPH0573335A (ja) プログラムの自動インライン展開方式
JPH03271939A (ja) メッセージ送信翻訳処理方式
JPH07175656A (ja) 代入用アドレス保持装置
JPH01196629A (ja) 翻訳処理方式
JP2001331312A (ja) 複数プログラム間の関連情報取得システム
JPH0553827A (ja) ダイナミツクリンク最適化方式
JPS6339037A (ja) プログラム呼出し処理方式
JPH08255076A (ja) データベース駆動によるプログラム自動生成システム
JPH01196630A (ja) プログラム翻訳方式
JPH05216684A (ja) プログラム実行装置および実行方法