JPH05120025A - ソースプログラムのインライン展開方法 - Google Patents
ソースプログラムのインライン展開方法Info
- Publication number
- JPH05120025A JPH05120025A JP3282401A JP28240191A JPH05120025A JP H05120025 A JPH05120025 A JP H05120025A JP 3282401 A JP3282401 A JP 3282401A JP 28240191 A JP28240191 A JP 28240191A JP H05120025 A JPH05120025 A JP H05120025A
- Authority
- JP
- Japan
- Prior art keywords
- source program
- object module
- source
- inline expansion
- program
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 239000000470 constituent Substances 0.000 claims description 2
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 本発明は、複数ソースプログラムで構成され
るプログラム全体の実行速度を上げるためのソースプロ
グラムのインライン展開をリンケージエディタで行うソ
ースプログラムのインライン展開方法を提供するもであ
る。 【構成】 ソースプログラム1,2,3,4,5をコン
パイルし、デバック情報付きオブジェクトモジュール7
を作成し、その後リンケージエディタ8によってリンク
する。この時にソースブプログラム1,2,3,4,5
の参照関係を分析し、1つのソースプログラムからしか
参照されていないソースプログラムはその参照元ソース
プログラム中にインライン展開するようにして、最適化
した新たなソースプログラム10を作成する。
るプログラム全体の実行速度を上げるためのソースプロ
グラムのインライン展開をリンケージエディタで行うソ
ースプログラムのインライン展開方法を提供するもであ
る。 【構成】 ソースプログラム1,2,3,4,5をコン
パイルし、デバック情報付きオブジェクトモジュール7
を作成し、その後リンケージエディタ8によってリンク
する。この時にソースブプログラム1,2,3,4,5
の参照関係を分析し、1つのソースプログラムからしか
参照されていないソースプログラムはその参照元ソース
プログラム中にインライン展開するようにして、最適化
した新たなソースプログラム10を作成する。
Description
【0001】
【産業上の利用分野】本発明は、ソースプログラムのイ
ンライン展開方法に関し、特に実行型式のロードモジュ
ールを作成するリンケージエディタが複数オブジェクト
モジュール間の関係を分析して、複数のオブジェクトモ
ジュールの元となった複数のソースプログラムをインラ
イン展開して、現在のプログラムよりも実行速度の早い
プログラムとするためのソースプログラムのインライン
展開方法に関する。
ンライン展開方法に関し、特に実行型式のロードモジュ
ールを作成するリンケージエディタが複数オブジェクト
モジュール間の関係を分析して、複数のオブジェクトモ
ジュールの元となった複数のソースプログラムをインラ
イン展開して、現在のプログラムよりも実行速度の早い
プログラムとするためのソースプログラムのインライン
展開方法に関する。
【0002】
【従来の技術】従来、この種のプログラムの実行速度を
早くするためのソースプログラムのインライン展開方法
は、コンパイラの文法としてインライン展開文が用意さ
れていて利用者が容易にソースプログラム中に記述する
手法や、コンパイラ自身の最適化機能によって自動分析
されインライン展開する方法、またはソースプログラム
インライン展開機能を持つ最適化ツールによってソース
プログラムをインライン展開する方法などがあった。
早くするためのソースプログラムのインライン展開方法
は、コンパイラの文法としてインライン展開文が用意さ
れていて利用者が容易にソースプログラム中に記述する
手法や、コンパイラ自身の最適化機能によって自動分析
されインライン展開する方法、またはソースプログラム
インライン展開機能を持つ最適化ツールによってソース
プログラムをインライン展開する方法などがあった。
【0003】
【発明が解決しようとする課題】上述した従来のソース
プログラムのインライン展開方法にでは、コンパイラで
そのインライン展開を行おうとした場合、コンパイラが
最適化できる範囲は1つのソースプログラム内だけであ
り、インライン展開文は利用者が始めから意識して設計
しておかなければならないという問題がある。またソー
スプログラムの最適化ツールは、複数ソースプログラム
で作成されたプログラムにも対応することのできる物が
あるが、コンパイラから専用の情報を生成してもらう
か、または最適化ツール自身でコンパイラと同等のソー
ス解析情報を生成しなければ処理できず、それらの情報
は他の目的に使用する情報でないという欠点があると共
に、ソースプログラムを生成する機能までの短機能しか
なく、実行型式のロードモジュールを生成する機能が無
いという欠点もある。
プログラムのインライン展開方法にでは、コンパイラで
そのインライン展開を行おうとした場合、コンパイラが
最適化できる範囲は1つのソースプログラム内だけであ
り、インライン展開文は利用者が始めから意識して設計
しておかなければならないという問題がある。またソー
スプログラムの最適化ツールは、複数ソースプログラム
で作成されたプログラムにも対応することのできる物が
あるが、コンパイラから専用の情報を生成してもらう
か、または最適化ツール自身でコンパイラと同等のソー
ス解析情報を生成しなければ処理できず、それらの情報
は他の目的に使用する情報でないという欠点があると共
に、ソースプログラムを生成する機能までの短機能しか
なく、実行型式のロードモジュールを生成する機能が無
いという欠点もある。
【0004】本発明の目的は、このような従来の問題点
を除去して、リンクすると同時にソースプログラムを最
適にインライン展開できるソースプログラムのインライ
ン展開方法を提供しようとするものである。
を除去して、リンクすると同時にソースプログラムを最
適にインライン展開できるソースプログラムのインライ
ン展開方法を提供しようとするものである。
【0005】
【課題を解決するための手段】上記課題を解決するため
の本発明の第一の解決手段としてのソースプログラムの
インライン展開方法は、入力される複数のソースプログ
ラムデータ群から個々のソースプログラムを翻訳し、前
記各ソースプログラムデータの構成要素からデバッカ用
処理情報と、リンケージエディタ用処理情報としてのオ
ブジェクトモジュールデータとを生成するコンパイラス
テップと、前記複数オブジェクトモジュールデータ群を
結合してロードモジュールデータを生成すると供に、前
記オブジェクトモジュールデータ群の一つが、他のオブ
ジェクトモジュールデータ群内の一つのみからしか参照
されていないことを識別判断した場合に、その参照され
ている側のソースプログラムデータを、参照している側
のソースプログラムデータ内にインライン展開して新た
なソースプログラムデータを作成するリンケージエディ
タステップを含むことを特徴とする。
の本発明の第一の解決手段としてのソースプログラムの
インライン展開方法は、入力される複数のソースプログ
ラムデータ群から個々のソースプログラムを翻訳し、前
記各ソースプログラムデータの構成要素からデバッカ用
処理情報と、リンケージエディタ用処理情報としてのオ
ブジェクトモジュールデータとを生成するコンパイラス
テップと、前記複数オブジェクトモジュールデータ群を
結合してロードモジュールデータを生成すると供に、前
記オブジェクトモジュールデータ群の一つが、他のオブ
ジェクトモジュールデータ群内の一つのみからしか参照
されていないことを識別判断した場合に、その参照され
ている側のソースプログラムデータを、参照している側
のソースプログラムデータ内にインライン展開して新た
なソースプログラムデータを作成するリンケージエディ
タステップを含むことを特徴とする。
【0006】上記課題を解決するための本発明の第二の
解決手段としてのソースプログラムのインライン展開方
法は、前記第一の解決手段に、前記リンケージエディタ
ステップがインライン展開して作成した前記新たなソー
スプログラムデータをコンパイルして最適コードを持つ
新たなオブジェクトモジュールデータを生成するステッ
プを含むことを特徴とする。
解決手段としてのソースプログラムのインライン展開方
法は、前記第一の解決手段に、前記リンケージエディタ
ステップがインライン展開して作成した前記新たなソー
スプログラムデータをコンパイルして最適コードを持つ
新たなオブジェクトモジュールデータを生成するステッ
プを含むことを特徴とする。
【0007】上記課題を解決するための本発明の第二の
解決手段としてのソースプログラムのインライン展開方
法は、前記第一の解決手段に、前記最適コードを持つ新
たなオブジェクトモジュールデータから最適コードを持
つ新たなロードモジュールデータを生成するリンケージ
エディタステップを含むことを特徴とする。
解決手段としてのソースプログラムのインライン展開方
法は、前記第一の解決手段に、前記最適コードを持つ新
たなオブジェクトモジュールデータから最適コードを持
つ新たなロードモジュールデータを生成するリンケージ
エディタステップを含むことを特徴とする。
【0008】
【作用】本発明のソースプログラムのインライン展開方
法は、一般にプログラム開発者がプログラムの実行確認
を行う時に使用するデバッカがソースイメージ情報を得
るために参照するコンパイラの出力情報を、リンケージ
エディタが参照することによって、リンケージエディタ
の本来の機能である複数のオブジェクトモジュールデー
タ群を結合してロードモジュールデータを作成する機能
に加えて、複数ソースプログラムデータ間のCALL/
CALLER関係を分析することによって、複数ソース
プログラムデータ群をインライン展開することを可能に
する。
法は、一般にプログラム開発者がプログラムの実行確認
を行う時に使用するデバッカがソースイメージ情報を得
るために参照するコンパイラの出力情報を、リンケージ
エディタが参照することによって、リンケージエディタ
の本来の機能である複数のオブジェクトモジュールデー
タ群を結合してロードモジュールデータを作成する機能
に加えて、複数ソースプログラムデータ間のCALL/
CALLER関係を分析することによって、複数ソース
プログラムデータ群をインライン展開することを可能に
する。
【0009】また、プログラムを実行可能なロードモジ
ュールデータとする作業は、必ず行わねばならない作業
であるため、リンクと同時にソースプログラムを最適な
インライン展開することができることを特徴としてい
る。
ュールデータとする作業は、必ず行わねばならない作業
であるため、リンクと同時にソースプログラムを最適な
インライン展開することができることを特徴としてい
る。
【0010】さらに、第二、第三の解決手段の本発明
は、単にソースプログラムデータをインライン展開して
生成するにとどまらず、さらに生成した新たなソースプ
ログラムを再コンパイルして、リンクすることによって
最適なコードとなったオブジェクトモジュールデータお
よびロードモジュールデータを生成する機能を有し、そ
の段階を選択できるように作用するものである。
は、単にソースプログラムデータをインライン展開して
生成するにとどまらず、さらに生成した新たなソースプ
ログラムを再コンパイルして、リンクすることによって
最適なコードとなったオブジェクトモジュールデータお
よびロードモジュールデータを生成する機能を有し、そ
の段階を選択できるように作用するものである。
【0011】
【実施例】次に本発明の実施例について図面を参照しつ
つ以下に説明する。図1は本発明の一実施例の処理順序
を表わすブロック図である。この図1における本発明の
処理は、ユーザによって作成されたソースプログラム
A,B,C,X,Yであるプログラム1,2,3,4,
5がコンパイラ6に入力される。このコンパイラ6から
は、プログラム1,2,3,4,5を翻訳して相対アド
レスで表された機械語命令型式のプログラムである、オ
ブジェクトモジュールA,B,C,X,Yのオブジェク
トモジュール群7が出力される。このオブジェクトモジ
ュール群7を用いてリンケージエディタ8は、各オブジ
ェクトモジュールを結合させ、さらにモジュール間の記
号による相互参照を取りつつ、指定されたプログラム・
セグメントの置き換え,削除,追加を行い、かつ指定さ
れたモジュールにオーバレイ機能を与えて主記憶装置内
から取り出すことのできるプログラム・コードであるロ
ードモジュール9を作成すると共に、出力ソースプログ
ラム10を出力する。また、図2はリンケージエディタ
8の処理内容の一部を示すプログラム構造解析機構であ
り、図3はリンケージエディタ8の処理内容の一部を示
すインライン展開機構のフローチャート図である。以上
の処理順序において以下図2,3を参照しつつ、プログ
ラム1,2,3,4,5のインライン展開方法の処理動
作を説明する。
つ以下に説明する。図1は本発明の一実施例の処理順序
を表わすブロック図である。この図1における本発明の
処理は、ユーザによって作成されたソースプログラム
A,B,C,X,Yであるプログラム1,2,3,4,
5がコンパイラ6に入力される。このコンパイラ6から
は、プログラム1,2,3,4,5を翻訳して相対アド
レスで表された機械語命令型式のプログラムである、オ
ブジェクトモジュールA,B,C,X,Yのオブジェク
トモジュール群7が出力される。このオブジェクトモジ
ュール群7を用いてリンケージエディタ8は、各オブジ
ェクトモジュールを結合させ、さらにモジュール間の記
号による相互参照を取りつつ、指定されたプログラム・
セグメントの置き換え,削除,追加を行い、かつ指定さ
れたモジュールにオーバレイ機能を与えて主記憶装置内
から取り出すことのできるプログラム・コードであるロ
ードモジュール9を作成すると共に、出力ソースプログ
ラム10を出力する。また、図2はリンケージエディタ
8の処理内容の一部を示すプログラム構造解析機構であ
り、図3はリンケージエディタ8の処理内容の一部を示
すインライン展開機構のフローチャート図である。以上
の処理順序において以下図2,3を参照しつつ、プログ
ラム1,2,3,4,5のインライン展開方法の処理動
作を説明する。
【0012】コンパイラ6はプログラム1,2,3,
4,5の翻訳処理を行い、それぞれに対応したオブジェ
クトモジュールA,B,C,X,Yを出力する。このと
きデバッカでプログラムの実行テストを行う時に必要と
なる文番号情報/名標情報等のデバック情報をも出力す
る。次にリンケージエディタ8は、コンパイラ6から出
力されたオブジェクトモジュール群7からリンク処理を
行いロードモジュール9を生成する。またその過程でリ
ンケージエディタ8は入力オブジェクトモジュール群7
から、図2で示す各オブジェクトモジュールのCALL
関係A1を識別判断し、メインであるオブジェクトモジ
ュールAから参照されるサブオブジェクトモジュール群
を全て結合することができる。例えば、定義名「A」た
るオブジェクトモジュールAはサブオブジェクトモジュ
ールB,X,Yを参照しており、さらにサブオブジェク
トモジュールBはサブオブジェクトモジュールCを参照
している。また、サブオブジェクトモジュールCは何ら
他のオブジェクトモジュールを参照しておらず、サブオ
ブジェクトモジュールYはサブオブジェクトモジュール
Xを参照している。またこリンクと共に、プログラム構
造解析機構A2によって、各外部定義名が何れのモジュ
ールによって参照されているかを示す、オブジェクトモ
ジュールのCALLER関係A3を求めている。オブジ
ェクトモジュールのCALLER関係A3で参照元が1
個しかない場合はその親のソースプログラムに、参照し
ているサブオブジェクトモジュールのソースプログラム
をインライン展開可能であると判断する。この例では、
ソースプログラムCはソースプログラムBからしか参照
されなく、ソースプログラムBはソースプログラムAか
らしか参照されないのでソースプログラムAにソースプ
ログラムB,Cを段階的にインライン展開可能であると
判定する。同様に、ソースプログラムYはソースプログ
ラムAからしか参照されないため、ソースプログラムY
をソースプログラムAにインライン展開は可能であると
判定する。
4,5の翻訳処理を行い、それぞれに対応したオブジェ
クトモジュールA,B,C,X,Yを出力する。このと
きデバッカでプログラムの実行テストを行う時に必要と
なる文番号情報/名標情報等のデバック情報をも出力す
る。次にリンケージエディタ8は、コンパイラ6から出
力されたオブジェクトモジュール群7からリンク処理を
行いロードモジュール9を生成する。またその過程でリ
ンケージエディタ8は入力オブジェクトモジュール群7
から、図2で示す各オブジェクトモジュールのCALL
関係A1を識別判断し、メインであるオブジェクトモジ
ュールAから参照されるサブオブジェクトモジュール群
を全て結合することができる。例えば、定義名「A」た
るオブジェクトモジュールAはサブオブジェクトモジュ
ールB,X,Yを参照しており、さらにサブオブジェク
トモジュールBはサブオブジェクトモジュールCを参照
している。また、サブオブジェクトモジュールCは何ら
他のオブジェクトモジュールを参照しておらず、サブオ
ブジェクトモジュールYはサブオブジェクトモジュール
Xを参照している。またこリンクと共に、プログラム構
造解析機構A2によって、各外部定義名が何れのモジュ
ールによって参照されているかを示す、オブジェクトモ
ジュールのCALLER関係A3を求めている。オブジ
ェクトモジュールのCALLER関係A3で参照元が1
個しかない場合はその親のソースプログラムに、参照し
ているサブオブジェクトモジュールのソースプログラム
をインライン展開可能であると判断する。この例では、
ソースプログラムCはソースプログラムBからしか参照
されなく、ソースプログラムBはソースプログラムAか
らしか参照されないのでソースプログラムAにソースプ
ログラムB,Cを段階的にインライン展開可能であると
判定する。同様に、ソースプログラムYはソースプログ
ラムAからしか参照されないため、ソースプログラムY
をソースプログラムAにインライン展開は可能であると
判定する。
【0013】しかし、ソースプログラムXはソースプロ
グラムY及びソースプログラムAから参照されているの
で、ソースプログラムXのインライン展開はできる条件
ではないと判断する。
グラムY及びソースプログラムAから参照されているの
で、ソースプログラムXのインライン展開はできる条件
ではないと判断する。
【0014】ここで行われた判定条件は、図3における
ステップB1の判断に使用される。
ステップB1の判断に使用される。
【0015】図3は、参照する側のソースプログラムを
ネストが浅いとし、参照される側のソースプログラムを
ネストが深いとして、参照する側の主ソースプログラム
中の内部サブルーチンとして参照される側のソースプロ
グラムを配置し、ソースプログラムのインライン展開を
行う方法を示したものである。
ネストが浅いとし、参照される側のソースプログラムを
ネストが深いとして、参照する側の主ソースプログラム
中の内部サブルーチンとして参照される側のソースプロ
グラムを配置し、ソースプログラムのインライン展開を
行う方法を示したものである。
【0016】ステップB1でインライン展開が可能条件
であるか否かを判断し、さらに、ステップB2では、参
照関係のある2つのソースプログラムの各記述言語が同
一言語でない場合、プログラム記述文法が異なるためソ
ースプログラムをそのまま結合することができないか
ら、インライン展開不可能として本処理のインライン展
開を行わず終了する。ステップB2以降は、ネストの深
いソースプログラムを内部サブルーチンの書き出しに変
換する処理と、2つのソースプログラム中の外部参照名
の重なり、および一方のソースプログラムにのみ外部参
照定義文がある場合のその定義文削除または移し替えを
行い、1つのソースプログラムとして結合して矛盾のな
い記述に変換する処理を行う。ステップB3では結合す
る2つのソースプログラムそのものを作業用に読み込む
処理であり、ステップB4では結合する2つのソースプ
ログラムで使用されている名標/文番号を高速に判別す
るためにデバック情報を読み込む処理である。ステップ
B5およびステップB6は、2つのソースプログラムに
同一の外部参照名がある場合、ネストの深いソースプロ
グラム中にある外部参照定義文を削除する処理である。
ステップB7およびステップB8は2つのソースプログ
ラム中の何れかに単独の外部参照名がある場合に、ネス
トの深いソースプログラムにある外部参照名定義文をネ
ストの浅いソースプログラムに移動させる処理である。
ステップB9はネストの深いソースプログラムの書き出
し部分をサブルーチン型式に書き換える処理であり、ス
テップB10は、2つのソースプログラムをインライン
展開して結合して1つのソースプログラムD1として、
最終的に出力する処理である。
であるか否かを判断し、さらに、ステップB2では、参
照関係のある2つのソースプログラムの各記述言語が同
一言語でない場合、プログラム記述文法が異なるためソ
ースプログラムをそのまま結合することができないか
ら、インライン展開不可能として本処理のインライン展
開を行わず終了する。ステップB2以降は、ネストの深
いソースプログラムを内部サブルーチンの書き出しに変
換する処理と、2つのソースプログラム中の外部参照名
の重なり、および一方のソースプログラムにのみ外部参
照定義文がある場合のその定義文削除または移し替えを
行い、1つのソースプログラムとして結合して矛盾のな
い記述に変換する処理を行う。ステップB3では結合す
る2つのソースプログラムそのものを作業用に読み込む
処理であり、ステップB4では結合する2つのソースプ
ログラムで使用されている名標/文番号を高速に判別す
るためにデバック情報を読み込む処理である。ステップ
B5およびステップB6は、2つのソースプログラムに
同一の外部参照名がある場合、ネストの深いソースプロ
グラム中にある外部参照定義文を削除する処理である。
ステップB7およびステップB8は2つのソースプログ
ラム中の何れかに単独の外部参照名がある場合に、ネス
トの深いソースプログラムにある外部参照名定義文をネ
ストの浅いソースプログラムに移動させる処理である。
ステップB9はネストの深いソースプログラムの書き出
し部分をサブルーチン型式に書き換える処理であり、ス
テップB10は、2つのソースプログラムをインライン
展開して結合して1つのソースプログラムD1として、
最終的に出力する処理である。
【0017】次に上記実施例の応用例例について、図4
を参照しつつ以下に説明する。なお、図4もリンケージ
エディタ8の処理内容の一部フローチャートを示す。
を参照しつつ以下に説明する。なお、図4もリンケージ
エディタ8の処理内容の一部フローチャートを示す。
【0018】始めにステップC1で上記ステップB1で
生成したソースプログラムD1のみの作成で終了するの
か、それとも作成したソースプログラムD1をコンパイ
ルしてさらにオブジェクトモジュールD2を作成するか
否を選択させる。オブジェクトモジュールD2を作成す
る場合には、生成したソースプログラムD1を入力して
翻訳するようにコンパイラの起動(ステップC2)を行
い、そのソースプログラムをコンパイルして新しいオブ
ジェクトモジュールD2を生成させる制御を行う。
生成したソースプログラムD1のみの作成で終了するの
か、それとも作成したソースプログラムD1をコンパイ
ルしてさらにオブジェクトモジュールD2を作成するか
否を選択させる。オブジェクトモジュールD2を作成す
る場合には、生成したソースプログラムD1を入力して
翻訳するようにコンパイラの起動(ステップC2)を行
い、そのソースプログラムをコンパイルして新しいオブ
ジェクトモジュールD2を生成させる制御を行う。
【0019】さらに上記処理の後、ステップC3で上記
オブジェクトモジュールD2からロードモジュールD3
を生成するか否を選択する。ロードモジュールを作成す
る場合は、新しいオブジェクトモジュールD2を入力し
てリンクするようにリンケージエディタを起動(ステッ
プC4)させてロードモジュールを作成する制御を行
う。このように、1回のリンク操作でインライン展開し
た最適化した新たなソースプログラムを作成したり、そ
の最適化したソースプログラムから新たなオブジェクト
モジュールを作成したり、そのオブジェクトモジュール
から最適化したロードモジュールを作成したりする制御
をおこなう。
オブジェクトモジュールD2からロードモジュールD3
を生成するか否を選択する。ロードモジュールを作成す
る場合は、新しいオブジェクトモジュールD2を入力し
てリンクするようにリンケージエディタを起動(ステッ
プC4)させてロードモジュールを作成する制御を行
う。このように、1回のリンク操作でインライン展開し
た最適化した新たなソースプログラムを作成したり、そ
の最適化したソースプログラムから新たなオブジェクト
モジュールを作成したり、そのオブジェクトモジュール
から最適化したロードモジュールを作成したりする制御
をおこなう。
【0020】
【発明の効果】以上説明したように本発明によれば、複
数のソースプログラムからリンケージエディタがリンク
と共に最適なインライン展開して新たなソースプログラ
ムを作成し、さらにその新たなソースプログラムをコン
パイルすることで、より高速動作する最適化されたオブ
ジェクトコードを作成できる。しかも複数のサブルーチ
ンからなる複雑な構造のプログラムを単純化する効果も
合わせ持っている。また、単純化した新たなソースプロ
グラムから連続的にコンパイルとリンクとを行って最適
コード化したオブジェクトモジュールとロードモジュー
ルとをも一度に作成できる効果がる。
数のソースプログラムからリンケージエディタがリンク
と共に最適なインライン展開して新たなソースプログラ
ムを作成し、さらにその新たなソースプログラムをコン
パイルすることで、より高速動作する最適化されたオブ
ジェクトコードを作成できる。しかも複数のサブルーチ
ンからなる複雑な構造のプログラムを単純化する効果も
合わせ持っている。また、単純化した新たなソースプロ
グラムから連続的にコンパイルとリンクとを行って最適
コード化したオブジェクトモジュールとロードモジュー
ルとをも一度に作成できる効果がる。
【図1】本発明の一実施例の処理ブロック構成図。
【図2】リンケージエディタ8の処理内容の一部を示す
プログラム構造解析機構を示す図。
プログラム構造解析機構を示す図。
【図3】リンケージエディタ8の処理内容の一部を示す
インライン展開機構のフローチャート図。
インライン展開機構のフローチャート図。
【図4】リンケージエディタ8の処理内容の一部を示す
次処理制御部のフローチャート図。
次処理制御部のフローチャート図。
1,2,3,4,5 入力ソースプログラム 6 コンパイラ 7 オブジェクトモジュール 8 リンケージエディタ 9 ロードモジュール 10 出力ソースプログラム
Claims (3)
- 【請求項1】入力される複数のソースプログラムデータ
群から個々のソースプログラムを翻訳し、前記各ソース
プログラムデータの構成要素からデバッカ用処理情報
と、リンケージエディタ用処理情報としてのオブジェク
トモジュールデータとを生成するコンパイラステップ
と、 前記複数オブジェクトモジュールデータ群を結合してロ
ードモジュールデータを生成すると供に、前記オブジェ
クトモジュールデータ群の一つが、他のオブジェクトモ
ジュールデータ群内の一つのみからしか参照されていな
いことを識別判断した場合に、その参照されている側の
ソースプログラムデータを、参照している側のソースプ
ログラムデータ内にインライン展開して新たなソースプ
ログラムデータを作成するリンケージエディタステップ
を含むことを特徴とするソースプログラムのインライン
展開方法。 - 【請求項2】前記リンケージエディタステップがインラ
イン展開して作成した前記新たなソースプログラムデー
タをコンパイルして最適コードを持つ新たなオブジェク
トモジュールデータを生成するステップを含むことを特
徴とする請求項1記載のソースプログラムのインライン
展開方法。 - 【請求項3】前記最適コードを持つ新たなオブジェクト
モジュールデータから最適コードを持つ新たなロードモ
ジュールデータを生成するリンケージエディタステップ
を含むことを特徴とする請求項1記載のソースプログラ
ムのインライン展開方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3282401A JPH05120025A (ja) | 1991-10-29 | 1991-10-29 | ソースプログラムのインライン展開方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP3282401A JPH05120025A (ja) | 1991-10-29 | 1991-10-29 | ソースプログラムのインライン展開方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH05120025A true JPH05120025A (ja) | 1993-05-18 |
Family
ID=17651934
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP3282401A Pending JPH05120025A (ja) | 1991-10-29 | 1991-10-29 | ソースプログラムのインライン展開方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH05120025A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH10340193A (ja) * | 1997-06-06 | 1998-12-22 | Nec Corp | 言語処理装置、言語処理方法およびその記録媒体 |
| JP2021192318A (ja) * | 2021-03-23 | 2021-12-16 | 北京百度網訊科技有限公司 | コンパイル方法、コンパイル装置、電子デバイス、記憶媒体及びプログラム |
-
1991
- 1991-10-29 JP JP3282401A patent/JPH05120025A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH10340193A (ja) * | 1997-06-06 | 1998-12-22 | Nec Corp | 言語処理装置、言語処理方法およびその記録媒体 |
| JP2021192318A (ja) * | 2021-03-23 | 2021-12-16 | 北京百度網訊科技有限公司 | コンパイル方法、コンパイル装置、電子デバイス、記憶媒体及びプログラム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11579856B2 (en) | Multi-chip compatible compiling method and device | |
| US5606697A (en) | Compiler system for language processing program | |
| US5586328A (en) | Module dependency based incremental compiler and method | |
| EP0905617B1 (en) | Method for generating a java bytecode data flow graph | |
| JP2666847B2 (ja) | 異種言語間連絡方式 | |
| US20030088860A1 (en) | Compiler annotation for binary translation tools | |
| US6467082B1 (en) | Methods and apparatus for simulating external linkage points and control transfers in source translation systems | |
| JPWO2000045260A1 (ja) | コンパイラ装置、コンパイル方法、およびそのためのプログラムを格納した記憶媒体 | |
| JP2001166949A (ja) | シンボリック実行を用いてソースコードをコンパイルするための方法及び装置 | |
| US20150020051A1 (en) | Method and apparatus for automated conversion of software applications | |
| CN118312153A (zh) | 编译器后端代码生成方法、装置、存储介质 | |
| JPH05120025A (ja) | ソースプログラムのインライン展開方法 | |
| CN118312154A (zh) | 编译器生成方法、编译器、存储介质 | |
| JP3266097B2 (ja) | 非リエントラントプログラムの自動リエントラント化方法及びシステム | |
| GB2420638A (en) | Method of substituting code fragments in Internal Representation | |
| CN112579088A (zh) | 面向异构混合编程的一站式程序编译方法 | |
| Harmer et al. | Transformations to Restructure and Re–engineer COBOL Programs | |
| JPH05204705A (ja) | 未定義変数検出処理方法 | |
| JPH0695890A (ja) | コンパイラにおける名前置換方式 | |
| JPH09274570A (ja) | コンパイル方法及びコンパイラシステム | |
| JPH11195011A (ja) | 言語翻訳処理装置、言語翻訳処理方法、言語翻訳処理プログラムを記録した記録媒体 | |
| JPH0561687A (ja) | コンパイラの処理方式 | |
| JP3424596B2 (ja) | シンボル参照情報のキャッシュ方法ならびに装置 | |
| JPH03144832A (ja) | プリコンパイラ言語プログラムのシンボリックデバッグ装置 | |
| JPH07192034A (ja) | インタプリタ型シミュレーション方法 |