JPH11272473A - プログラム言語処理装置のコード最適化方式 - Google Patents

プログラム言語処理装置のコード最適化方式

Info

Publication number
JPH11272473A
JPH11272473A JP7605398A JP7605398A JPH11272473A JP H11272473 A JPH11272473 A JP H11272473A JP 7605398 A JP7605398 A JP 7605398A JP 7605398 A JP7605398 A JP 7605398A JP H11272473 A JPH11272473 A JP H11272473A
Authority
JP
Japan
Prior art keywords
register
function
code
language processing
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
Application number
JP7605398A
Other languages
English (en)
Inventor
Seiji Komori
誠司 古森
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP7605398A priority Critical patent/JPH11272473A/ja
Publication of JPH11272473A publication Critical patent/JPH11272473A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 コードサイズを縮小し、且つ生成したプログ
ラムの実行速度が向上するプログラム言語処理装置のコ
ード最適化方法を提供する。 【解決手段】 原始プログラムをファイル単位で関数ご
とにコンパイルして目的プログラムに変換する言語処理
システムを有するプログラム言語処理装置において、前
記言語処理システムは、同一ファイル内の実行モジュー
ルを構成する関数の呼出し関係を前記原始プログラムか
ら抽出する関数呼出情報抽出手段と、前記目的プログラ
ムのレジスタ使用状況を抽出するレジスタ情報抽出手段
と、前記関数呼出情報抽出手段の抽出結果と前記レジス
タ情報抽出手段の抽出結果とに基づいて、関数の出入口
で関数を跨いで使用するレジスタを生存保証レジスタと
して保護するためのレジスタ退避コードを削除するレジ
スタ退避コード削除手段とを備えた。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、同一の言語または
複数の異なる言語を使用し、モジュールまたは関数単位
でプログラムを構成し実行モジュールを生成するプログ
ラム言語処理装置のコード最適化方法に関する。
【0002】
【従来の技術】従来、この種の分野の技術としては、次
のようなものがあった。
【0003】図9は、従来のプログラム言語処理装置の
構成を示す図である。
【0004】このプログラム言語処理装置は、原始プロ
グラムを目的プログラムに変換する言語処理システム1
01と、目的プログラムを適切にリンクして実行モジュ
ールを生成するリンカ102とを備えている。
【0005】同図に示す通り、原始プログラムP1,P
2は、言語処理システム101によってファイル単位で
関数ごとにコンパイルされて目的プログラムP3,P4
に変換される。その後、リンカ102は、目的プログラ
ムP3,P4を適切にリンクし実行モジュールを生成す
る。
【0006】図10は、原始プログラム(C言語ソース
プログラム)の一例を示す図であり、1つのファイル内
に3つの関数201,202,203が記述されている
C言語のソースファイルを表している。関数201,2
02は、このファイル内の関数からだけ参照可能な関数
であり、関数202は関数201を呼び出し、関数20
3は関数202と201を呼び出している。
【0007】この例では、関数の出入口で関数を跨いで
使用するレジスタを関数内で使用している場合に、この
レジスタを保護するため、関数の出入り口でレジスタ退
避・復帰コードを生成している。このようにレジスタ退
避・復帰コードを生成させている目的は、レジスタの生
存区間を延ばすためである。
【0008】関数内で頻繁に使用するレジスタの生存区
間を分断すると、そのレジスタへのメモリ変数からの転
送命令が増える結果、コードサイズが増大する。これを
回避するために、言語処理システム101では、関数を
跨いで生存する生存保証レジスタを用意する。
【0009】また、レジスタの生存区間を延長させるた
めのレジスタ退避・復帰コード生成の別の方法として
は、関数呼出しの前後で関数の呼出元がレジスタ退避・
復帰コードを挿入する方法もある。しかし、この方法
は、呼出す関数の個数に比例してレジスタ退避コードが
増大する欠点がある。
【0010】
【発明が解決しようとする課題】しかしながら、上記従
来のレジスタ退避・復帰・コード生成に関しては次のよ
うな問題点があった。
【0011】関数を跨ぐレジスタの保護は、呼出した側
の関数でその関数を跨ぐレジスタを使用していなけれ
ば、無駄な退避コードとなり、そのコードは冗長とな
る、という問題がある。以下、具体的に説明する。
【0012】図11は、図10に示す原始プログラムを
各関数毎にファイルに分割した例を示す図である。関数
201,202,203は、それぞれファイル301,
302,303に分割されている。
【0013】また、図12は、図11に示す原始プログ
ラムを言語処理して目的プログラム(アセンブラプログ
ラム)に変換したコードを示す図である。図中の401
は、関数201を言語処理したアセンブラプログラムで
あり、402は関数202を言語処理したアセンブラプ
ログラムであり、403は関数203を言語処理したア
センブラプログラムである。さらに、401Aは、生存
保証レジスタ(HL)の退避・復帰コードであり、40
2Aは、関数呼出を示すアセンブラコードである。
【0014】上述の冗長コード生成の問題について、1
つのファイル内にすべての関数が記述されていれば、フ
ァイル単位で処理する言語処理システム101を改良す
ることで対応することも不可能ではない。しかし、ファ
イルに跨って関数が記述されている本例では、呼出され
る側の関数を言語処理している段階では、呼出し側の関
数でどのレジスタを使用しているかをコンパイルの時点
では判定することはできない。
【0015】よって、リンカ102によるリンク処理の
終了後、無用な関数を跨ぐ生存保証レジスタの保護が冗
長コードとして実行モジュール内に残るという問題が発
生する。
【0016】このように、コンパイラなどのプログラム
言語処理システム101において、モジュールまたは関
数を跨いで使用する生存保証レジスタは、関数の出入り
口構築となるスタックフレーム生成・消滅前後で、退避
・復帰コードを生成するが、この場合に呼出元関数内で
の未使用レジスタがあると、呼び出される関数での生存
保証レジスタの退避・復帰コードは冗長となる。
【0017】本発明は、上述の如き従来の問題点を解決
するためになされたもので、その目的は、不要なレジス
タの退避・復帰コードを削除することで、コードサイズ
を縮小し、且つ生成したプログラムの実行速度が向上す
るプログラム言語処理装置のコード最適化方法を提供す
ることである。
【0018】
【課題を解決するための手段】上記目的を達成するため
に、第1の発明の特徴は、原始プログラムをファイル単
位で関数ごとにコンパイルして目的プログラムに変換す
る言語処理システムを有するプログラム言語処理装置に
おいて、前記言語処理システムは、同一ファイル内の実
行モジュールを構成する関数の呼出し関係を前記原始プ
ログラムから抽出する関数呼出情報抽出手段と、前記目
的プログラムのレジスタ使用状況を抽出するレジスタ情
報抽出手段と、前記関数呼出情報抽出手段の抽出結果と
前記レジスタ情報抽出手段の抽出結果とに基づいて、関
数の出入口で関数を跨いで使用するレジスタを生存保証
レジスタとして保護するためのレジスタ退避コードを削
除するレジスタ退避コード削除手段とを備えたことにあ
る。
【0019】第2の発明の特徴は、上記第1の発明にお
いて、前記原始プログラムを中間コードに変換する中間
コード変換手段を設け、前記関数呼出情報抽出手段は、
前記関数の呼出し関係を前記中間コードから抽出する構
成にし、前記レジスタ情報抽出手段は、前記中間モード
に基づいて前記目的プログラムのレジスタ使用状況を抽
出する構成にしたことにある。
【0020】第3の発明の特徴は、上記第1または第2
の発明において、前記言語処理システムから1つ以上の
手段を別システムとして構成し、該言語処理システムと
前記別システムの情報をシステム外部へデータとして入
/出力する構成にしたことにある。
【0021】第4の発明の特徴は、上記第1または第2
の発明において、前記生存保証レジスタとして使用する
レジスタを予め決定してから、前記言語処理システムの
処理を行うように構成したことにある。
【0022】第5の発明の特徴は、実行モジュールを構
成する全ての原始プログラムリストを記述しているシス
テム構成記述ファイルと、前記システム構成記述ファイ
ルを解析するシステム構成分析手段と、原始プログラム
をファイル単位で関数ごとにコンパイルして目的プログ
ラムに変換する言語処理システムとを有するプログラム
言語処理装置であって、前記言語処理システムは、同一
ファイル内の実行モジュールを構成する関数の呼出し関
係を前記システム構成分析手段の分析結果から抽出する
関数呼出情報抽出手段と、前記目的プログラムのレジス
タ使用状況を抽出するレジスタ情報抽出手段と、前記関
数呼出情報抽出手段の抽出結果と前記レジスタ情報抽出
手段の抽出結果とに基づいて、関数の出入口で関数を跨
いで使用するレジスタを生存保証レジスタとして保護す
るためのレジスタ退避コードを削除するレジスタ退避コ
ード削除手段とを備えたことにある。
【0023】第6の発明の特徴は、実行モジュールを構
成する全ての原始プログラムリスト及びその原始プログ
ラムリストを処理する言語処理システムを記述している
システム構成記述ファイルと、前記システム構成記述フ
ァイルを解析するシステム構成分析手段と、各原始プロ
グラムをファイル単位で関数ごとにコンパイルして夫々
の目的プログラムに変換する複数の言語処理システムと
を有するプログラム言語処理装置であって、前記各言語
処理システムは、同一ファイル内の実行モジュールを構
成する関数の呼出し関係を前記システム構成分析手段の
分析結果から抽出する関数呼出情報抽出手段と、目的プ
ログラムのレジスタ使用状況を抽出するレジスタ情報抽
出手段と、前記関数呼出情報抽出手段の抽出結果と前記
レジスタ情報抽出手段の抽出結果とに基づいて、関数の
出入口で関数を跨いで使用するレジスタを生存保証レジ
スタとして保護するためのレジスタ退避コードを削除す
るレジスタ退避コード削除手段とをそれそれ備えたこと
にある。
【0024】
【発明の実施の形態】以下、本発明に係わるプログラム
言語処理装置のコード最適化方法の実施形態について説
明する。
【0025】(第1実施形態)図1は、本発明の第1実
施形態に係るプログラム言語処理装置のコード最適化方
法を示すフローチャートであり、図9に示す構成の言語
処理システム101において、従来の制御方法に代って
実行されるものである。なお、本実施形態では、言語処
理システム101としてCコンパイラの使用を前提して
いる。また、図2は、図1に示したコード最適化方法の
実行時におけるデータの流れを示した図である。
【0026】初めに、Cコンパイラは、図10に例示し
た原始プログラム(C言語ソースプログラム)を図3に
示すような中間コード31,32,33に変換する(S
11,T11)。
【0027】ここで、図3は、図10に示した原始プロ
グラムの言語処理時に生成された中間生成物を示す図で
ある。図中の31は、関数201を言語処理して生成し
た中間コードであり、32は、関数202を言語処理し
て生成した中間コードであり、33は、関数203を言
語処理して生成した中間コードである。また、34は中
間コード31のレジスタ割当情報であり、35は中間コ
ード32のレジスタ割当情報であり、36は中間コード
33のレジスタ割当情報である。さらに、31Aは生存
保証をするレジスタの退避・復帰リストを示している。
【0028】そして、上記の中間コードは、関数呼出分
析手段に引き渡される(T12)。関数呼出分析手段
は、関数201,202,203を基に、図4に示すよ
うな関数の呼出関係を導く(T13)。
【0029】ここで、図4は、ファイル内の関数の関数
呼出関係の一例を表した関数呼出情報を示す図であり、
図10のプログラムを関数呼出分析手段によって分析さ
れたものである。この関数呼出情報は、ファイル内だけ
で呼び出されている関数(Callee)の呼出元リス
ト(Caller−list)を保持している。図中の
41は、関数201に対応し、42は関数202に対応
し、43は関数203に対応した情報である。そして、
関数41を呼び出している関数が42と43であること
を示めしている。
【0030】具体的に、関数呼出分析手段は、中間コー
ド内の関数毎に、その関数内で呼び出している関数を呼
出関数リストとして記録する。すべての関数に対して、
処理を施した後、各関数の呼出関数リストに登録されて
いる関数の呼出元関数を求める。すべての関数に対して
処理を施した後に、呼び出されている関数(Calle
e)の呼び出している関数のリスト(Caller−l
ist)が算出される。
【0031】本例の場合は、後述の出力結果の図6が示
すように,関数62が関数61を命令62Aで呼び出し
ている。同様に関数63が関数61と関数62を呼び出
している。
【0032】その後、レジスタを必要とする各変数を、
レジスタ割付で割付て(S13,T14)、レジスタ使
用情報分析手段によって、図3のレジスタ割当情報3
4,35,36を生成する(S14,T15,T1
6)。これをファイル内の全ての関数に対して処理を施
す。
【0033】レジスタ使用情報分析手段は、レジスタ使
用情報とレジスタ破壊情報を算出し、各情報フィールド
に結果を記録する。レジスタ使用情報は、レジスタ割付
で中間コードにレジスタを割り付けた場合に使用レジス
タの集合和で算出する。図3の例であると、中間コード
31のレジスタ割付の結果、レジスタ割当情報34が算
出されている。この集合和がレジスタ使用情報として図
5に示す51の情報になる。
【0034】ここで、図5は、関数ごとのレジスタ情報
を示す図である。レジスタ情報は、2種類の情報フィー
ルドから構成される。その1つは、関数内で使用してい
る生存保証レジスタのリストをレジスタ使用情報のフィ
ールドであり、もう1つは、使用している生存保証レジ
スタがCaller−listのCallerのレジス
タ使用情報に登録している場合において、その生存レジ
スタが呼出元関数で破壊したことを情報として登録する
ためのレジスタ破壊情報のフィールドである。
【0035】図10の原始プログラムをレジスタ使用分
析手段によって分析した図5に示すレジスタ使用情報
は、図4に対応して、各関数41,42,43のレジス
タ使用情報を示す。51は、関数41の、生存保証する
必要のあるレジスタ使用情報を示す。この例では関数4
2がHLレジスタを使用し、保護する必要のあることを
示している。52は、関数42では生存保証レジスタが
ないことを示し、53は関数43では生存保証レジスタ
がないことを示す。
【0036】レジスタ破壊情報の算出の方法を図4の関
数41で説明する。関数41のレジスタ破壊情報は、C
aller−list42,43に記録されている関数
41を呼出す総ての関数42,43のレジスタ使用情報
52,53の集合和を求め、レジスタ使用情報51の集
合差を取る。この差の集合がレジスタ破壊情報となり、
保護する必要のない生存保証レジスタの集合である。
【0037】次に図4の関数呼出情報を参照し、ファイ
ル内だけで呼ばれている関数(Callee)を順次処
理対象にする(S15,S16,S19,T17)。対
象とした関数(Callee)のレジスタ破壊情報を算
出する。算出したレジスタ破壊情報を基に、図5のよう
にレジスタが破壊されていない場合は、レジスタを保護
するコード31Aを中間コードから削除する(S17,
T18,T19)。
【0038】最後に、図3の中間コードを基に図6のア
センブラプログラムを生成する(S18,T20,T2
1,T22)。このアセンブラプログラムは、中間コー
ド31Aを削除したことにより、従来方式の図12で示
す401Aの出力が抑制された図6の出力結果を得る。
【0039】ここで、図6は、本発明の方式で処理を施
したアセンブラプログラムを示す図であり、図12の従
来方式に対応した図となっている。同図6から明らかな
ように、図中の関数61は、図12に示した関数401
のコード401Aの部分が削減されたものとなってい
る。なお、その他の関数62,63については変化がな
い。
【0040】このように、本実施形態では、一関数内で
頻繁に利用するレジスタの生存区間を分断することなく
関数を跨ぐレジスタ(生存保証レジスタ)として活用
し、その関数を跨ぐレジスタを呼び出し側または呼出さ
れる側のいずれかで保護する。そして、目的プログラム
を作成後、関数を跨ぐレジスタを保護している関数の保
護レジスタ情報と呼び出し関係のある関数のレジスタ使
用情報とを基に、生存保証レジスタを保護する必要があ
るか否かを判断する。その結果、保護する必要がなけれ
ば、その生存保証レジスタを不要なものとして、その保
護コードを削除することにより、冗長コード削減を再コ
ンパイル無しで行うことができる。これにより、コード
サイズが縮小し、目的プログラムの実行速度が向上す
る。
【0041】(第2実施形態)上記第1実施形態は、図
10に示したような1つのファイル内に記述されている
関数に対しての処理であったのに対し、本発明の第2実
施形態では、図11に示したような異なったファイルに
分散している関数に対して、第1実施形態と同様に、不
要なレジスタを保護するコードを中間コードから削除す
る例を説明する。
【0042】図7は、本発明の第2実施形態に係るプロ
グラム言語処理装置のコード最適化方法を示すフローチ
ャートである。
【0043】まず、図11に例示した原始プログラム3
01,302,303は、言語処理システム101によ
り、図3に示すような中間コードに変換される(S7
1)。次にファイル構成分析手段がシステム構成記述フ
ァイルを参照し、システムを構成しているファイルの関
数リスト(図8)を作成し、それを関数呼出分析手段に
渡す(S72)。
【0044】ここで、図8は、システム構成記述ファイ
ルの内容を示す図である。図中の81,82,83は、
実行モジュールを構成するファイルのリストであり、8
4,85,86は、そのファイル内で定義されている関
数リストが記述されている部分である。このように、図
8のシステム構成記述ファイルには、実行モジュールで
あるシステムを構成しているファイルのリストが予め記
述されている。
【0045】関数呼出分析手段では、上記関数リスト
(図8)から図4に示すような関数呼出関係を導出する
(S73)。その後、第1実施形態と同様に、生存保証
レジスタを保護している呼び出される側の関数とその関
数を呼び出す関数とについて、レジスタ情報分析手段が
生存保証レジスタ情報を収集する(S75)。
【0046】その後、第1実施形態のS15,S16に
対応する処理(処理対象関数の選択)S76,S77を
経て、S78の処理へ進む。
【0047】S78の処理では、冗長コード削減手段
は、図4の関数呼出情報を参照しながら最も深く呼出さ
れている関数から、そのレジスタ破壊情報で破壊されて
いないレジスタを保護するコードを削除する。これによ
って、冗長コード(従来方式の図12で示す401A)
を削減し、中間コード31Aから冗長コードを削除した
図6のアッセンブラプログラムを生成する(S79,S
80)。
【0048】なお、本発明は図示の実施形態に限定され
ず種々の変形が可能である。その変形例としては、例え
ば次のようなものがある。
【0049】(1)第1及び第2実施形態では、関数を
言語処理し、レジスタ割付を行い各関数のレジスタ使用
情報を導くが、関数を言語処理する場合に、予め使用す
る生存保証レジスタを決めて処理を行うようにしてもよ
い。この例のメリットは、使用する生存保証レジスタに
制限を付けて言語処理を施した関数を使用する場合に、
図1のレジスタ使用情報分析手段(S14)が不要にな
る。特に、全ての処理対象内の関数に予め使用する生存
保証レジスタを決めて処理している場合は、レジスタ割
付の後は、無条件にアセンブラ出力となり、処理速度が
向上する。
【0050】(2)言語処理システムから1つ以上の手
段を別システムとして構成し、この言語処理システムと
前記別システムの情報をシステム外部へデータとして入
/出力する構成にしてもよい。ここで、入/出力は入力
のみ、出力のみ、入力出力両方行う構成すべてを含む。
この場合は、システムの使用メモリを削減することが可
能になる。
【0051】(3)複数の異なる言語システムよるシス
テム全域を対象として本発明を構成してもよい。
【0052】
【発明の効果】以上詳細に説明したように、第1及び第
2の発明によれば、不要な生存保証レジスタのレジスタ
退避コードを削除することができ、コードサイズが縮小
すると共に、生成した目的プログラムの実行速度が向上
する。
【0053】第3の発明によれば、上記第1または第2
の発明において、システムの使用メモリを削減すること
が可能になる。
【0054】第4の発明によれば、第1または第2の発
明よりも単純な構成となり、より一層の高速処理も可能
になる。
【0055】第5の発明によれば、システム全域を対象
とし、異なったファイルに分散している関数に対して
も、上記第1の発明と同等の効果を奏する。
【0056】第6の発明によれば、異種言語システムよ
るシステム全域を対象とし、異なったファイルに分散し
ている関数に対しても、上記第1の発明と同等の効果を
奏する。
【図面の簡単な説明】
【図1】本発明の第1実施形態に係るプログラム言語処
理装置のコード最適化方法を示すフローチャートであ
る。
【図2】図1に示したコード最適化方法の実行時におけ
るデータの流れを示した図である。
【図3】図10に示した原始プログラムの言語処理時に
生成された中間生成物を示す図である。
【図4】ファイル内の関数の関数呼出関係の一例を表し
た関数呼出情報を示す図である。
【図5】関数ごとのレジスタ情報を示す図である。
【図6】本発明の方式で処理を施したアセンブラプログ
ラムを示す図である。
【図7】本発明の第2実施形態に係るプログラム言語処
理装置のコード最適化方法を示すフローチャートであ
る。
【図8】システム構成記述ファイルの内容を示す図であ
る。
【図9】従来のプログラム言語処理装置の構成を示す図
である。
【図10】原始プログラム(C言語ソースプログラム)
の一例を示す図である。
【図11】図10に示す原始プログラムを各関数毎にフ
ァイルに分割した例を示す図である。
【図12】図11に示す原始プログラムを言語処理して
目的プログラムに変換したコードを示す図である。
【符号の説明】
101 言語処理システム 102 リンカ P1,P2 原始プログラム P3,P4 目的プログラム 41,42,43,61,62,63 関数 62A 関数61を呼び出す命令コード

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 原始プログラムをファイル単位で関数ご
    とにコンパイルして目的プログラムに変換する言語処理
    システムを有するプログラム言語処理装置において、 前記言語処理システムは、 同一ファイル内の実行モジュールを構成する関数の呼出
    し関係を前記原始プログラムから抽出する関数呼出情報
    抽出手段と、 前記目的プログラムのレジスタ使用状況を抽出するレジ
    スタ情報抽出手段と、 前記関数呼出情報抽出手段の抽出結果と前記レジスタ情
    報抽出手段の抽出結果とに基づいて、関数の出入口で関
    数を跨いで使用するレジスタを生存保証レジスタとして
    保護するためのレジスタ退避コードを削除するレジスタ
    退避コード削除手段とを備えたことを特徴とするプログ
    ラム言語処理装置のコード最適化方式。
  2. 【請求項2】 前記原始プログラムを中間コードに変換
    する中間コード変換手段を設け、 前記関数呼出情報抽出手段は、前記関数の呼出し関係を
    前記中間コードから抽出する構成にし、 前記レジスタ情報抽出手段は、前記中間モードに基づい
    て前記目的プログラムのレジスタ使用状況を抽出する構
    成にしたことを特徴とする請求項1に記載のプログラム
    言語処理装置のコード最適化方式。
  3. 【請求項3】 前記言語処理システムから1つ以上の手
    段を別システムとして構成し、 該言語処理システムと前記別システムの情報をシステム
    外部へデータとして入/出力する構成にしたことを特徴
    とする請求項1または請求項2に記載のプログラム言語
    処理装置のコード最適化方式。
  4. 【請求項4】 前記生存保証レジスタとして使用するレ
    ジスタを予め決定してから、前記言語処理システムの処
    理を行うように構成したことを特徴とする請求項1また
    は請求項2に記載のプログラム言語処理装置のコード最
    適化方式。
  5. 【請求項5】 実行モジュールを構成する全ての原始プ
    ログラムリストを記述しているシステム構成記述ファイ
    ルと、前記システム構成記述ファイルを解析するシステ
    ム構成分析手段と、原始プログラムをファイル単位で関
    数ごとにコンパイルして目的プログラムに変換する言語
    処理システムとを有するプログラム言語処理装置であっ
    て、 前記言語処理システムは、 同一ファイル内の実行モジュールを構成する関数の呼出
    し関係を前記システム構成分析手段の分析結果から抽出
    する関数呼出情報抽出手段と、 前記目的プログラムのレジスタ使用状況を抽出するレジ
    スタ情報抽出手段と、 前記関数呼出情報抽出手段の抽出結果と前記レジスタ情
    報抽出手段の抽出結果とに基づいて、関数の出入口で関
    数を跨いで使用するレジスタを生存保証レジスタとして
    保護するためのレジスタ退避コードを削除するレジスタ
    退避コード削除手段とを備えたことを特徴とするプログ
    ラム言語処理装置のコード最適化方式。
  6. 【請求項6】 実行モジュールを構成する全ての原始プ
    ログラムリスト及びその原始プログラムリストを処理す
    る言語処理システムを記述しているシステム構成記述フ
    ァイルと、前記システム構成記述ファイルを解析するシ
    ステム構成分析手段と、各原始プログラムをファイル単
    位で関数ごとにコンパイルして夫々の目的プログラムに
    変換する複数の言語処理システムとを有するプログラム
    言語処理装置であって、 前記各言語処理システムは、 同一ファイル内の実行モジュールを構成する関数の呼出
    し関係を前記システム構成分析手段の分析結果から抽出
    する関数呼出情報抽出手段と、 目的プログラムのレジスタ使用状況を抽出するレジスタ
    情報抽出手段と、 前記関数呼出情報抽出手段の抽出結果と前記レジスタ情
    報抽出手段の抽出結果とに基づいて、関数の出入口で関
    数を跨いで使用するレジスタを生存保証レジスタとして
    保護するためのレジスタ退避コードを削除するレジスタ
    退避コード削除手段とをそれぞれ備えたことを特徴とす
    るプログラム言語処理装置のコード最適化方式。
JP7605398A 1998-03-24 1998-03-24 プログラム言語処理装置のコード最適化方式 Pending JPH11272473A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7605398A JPH11272473A (ja) 1998-03-24 1998-03-24 プログラム言語処理装置のコード最適化方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7605398A JPH11272473A (ja) 1998-03-24 1998-03-24 プログラム言語処理装置のコード最適化方式

Publications (1)

Publication Number Publication Date
JPH11272473A true JPH11272473A (ja) 1999-10-08

Family

ID=13594049

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7605398A Pending JPH11272473A (ja) 1998-03-24 1998-03-24 プログラム言語処理装置のコード最適化方式

Country Status (1)

Country Link
JP (1) JPH11272473A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6966055B2 (en) 2001-03-02 2005-11-15 International Business Machines Corporation Optimizing post-link code
WO2012143760A1 (en) * 2011-04-20 2012-10-26 Freescale Semiconductor, Inc. Method and apparatus for generating resource efficient computer program code

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6966055B2 (en) 2001-03-02 2005-11-15 International Business Machines Corporation Optimizing post-link code
WO2012143760A1 (en) * 2011-04-20 2012-10-26 Freescale Semiconductor, Inc. Method and apparatus for generating resource efficient computer program code

Similar Documents

Publication Publication Date Title
US6292939B1 (en) Method of reducing unnecessary barrier instructions
JP3284956B2 (ja) プログラム変換方法、プログラム変換装置及びプログラム変換プログラムを記憶した記憶媒体
US6986130B1 (en) Methods and apparatus for compiling computer programs using partial function inlining
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
JPH04211830A (ja) 並列化コンパイル方式
EP0806725A2 (en) Method and apparatus for easy insertion of assembler code for optimization
JP4487479B2 (ja) Simd命令シーケンス生成方法および装置ならびにsimd命令シーケンス生成用プログラム
JPH07105012A (ja) 言語処理プログラムのコンパイル処理方式
JPH11212837A (ja) 言語処理方法及び言語処理装置並びに言語処理プログラムを記録した記憶媒体
JPH11167492A (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
JPH11272473A (ja) プログラム言語処理装置のコード最適化方式
US5815716A (en) Method for supporting multiple call interface conventions for computer programs using directives
JPH01118931A (ja) プログラム変換方式
JP2956591B2 (ja) ループ外への条件付き飛び出しがあるループの並列化方法及び装置
JP2009515243A (ja) ホストコンピュータ上で実行可能なシミュレーションプログラムを生成する方法
JPH04344536A (ja) レジスタ割当て方式
JPH08263300A (ja) インライン展開方式
JP3566602B2 (ja) コンパイル方法、および、コンパイル用プログラムを記録した記録媒体
JP3018783B2 (ja) コンパイル方式
JPH03144830A (ja) 並列処理方式
JPS5960641A (ja) 呼出し関係解析方法
JPS63163636A (ja) 並列処理実行方式
JPH05204705A (ja) 未定義変数検出処理方法
JP2001290652A (ja) プログラム変換装置、プログラム変換方法及び記録媒体
JP2008102740A (ja) 最適化処理方法、及びその言語処理系