JPS63146129A - 部分パスリスト生成器 - Google Patents

部分パスリスト生成器

Info

Publication number
JPS63146129A
JPS63146129A JP29382986A JP29382986A JPS63146129A JP S63146129 A JPS63146129 A JP S63146129A JP 29382986 A JP29382986 A JP 29382986A JP 29382986 A JP29382986 A JP 29382986A JP S63146129 A JPS63146129 A JP S63146129A
Authority
JP
Japan
Prior art keywords
node
edges
flow
partial flow
partial
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
JP29382986A
Other languages
English (en)
Inventor
Hiroshi Takeuchi
寛 竹内
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 Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP29382986A priority Critical patent/JPS63146129A/ja
Publication of JPS63146129A publication Critical patent/JPS63146129A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、情報処理装置におけるコンピュータプログラ
ム開発支援に使用される部分パスリス1生成器に関する
ものである。
〔従来の技術〕
従来、プログラムの最適化が行なわれており、その具体
的な処理を行なうなめには、プログラムをある単位に分
割し、分割された各部分の相互関係を明確にしておく必
要がある。そのためにプログラムを分析するに当り、処
理しやすい形にする必要がある。その中に、例えば、プ
ログラムの制御の流れを表わすフローグラフがある。そ
してフローグラフは、制御の分岐点1合流点をノード、
制御の流れをエツジとして方向を示している。また、ノ
ードの先後関係にあるものをパスとして表わしている。
このように表わされたフローグラフについて、そのパス
をリス1−状にして生成が行なわれている。
し発明が解決しようとする問題点〕 上述した従来のパスリスト生成器では、フローグラフ間
エツジを生成しないか、あるいは生成してもそれを辿っ
て部分バスリストを出力しなかった。したがってフロー
グラフ間エツジに対応するバスリストでは、外部への飛
出しである旨出力するか、あるいは飛出し先の行番号を
出力するか、飛出し先のノード番号を出力するかの処理
を行う。
このため飛出し先のパスのつづきを出力させるためには
、全パスリストを出力し対応するノード番号あるいは行
番号を捜すか、または飛出し先のノード番号あるいは行
番号を指定して再び部分バスリストを出力しなければな
らないという欠点があった。さらにこの欠点のため任意
のノードを起点とする部分バスリストを出力する機能を
備えていないという欠点があった。
〔問題点を解決するための手段〕
本発明の部分バスリスト生成器は、入力装置から入力さ
れたソースプログラムを解析し、記憶装置内にノードお
よびエツジより成る部分フローグラフの集まり、および
、前記部分フローグラフのフローグラフ間エツジの集ま
りを生成するフロー解析器と、前記入力装置から入力さ
れ記憶装置に記録された指定ノートを起点として前記フ
ロー解析器が生成した前記部分フローグラフの集まり。
および、前記フローグラフ間エツジの集まりを辿りパス
リストを生成し出力装置に出力する出力器とを含む。
〔実施例〕
次に、本発明について図面を参照して説明する。
第1図は本発明の一実施例を示すブロック図であり、指
定ノードと解析されるソースプログラムを入力する入力
装置1と、この入力装置1により入力されたソースプロ
グラムを解析し部分フローグラフの集まり42とフロー
グラフ間エツジの集まり43を生成するフロー解析2;
2と、入力装置1により入力された指定ノード41と部
分フローグラフの集まり42とフローグラフ間エツジの
集まり43を記録する記憶装置4と、記憶装置4に記録
された指定ノード41と部分フローグラフの集まり42
とフローグラフ間エツジの集まり43を参照してバスを
生成し出力装置5に出力するパス出力器3が示されてい
る。今ソースプログラムが入力装置1に人力されると、
そのソースプログラムはフロー解析器2にわたされる。
フロー解析器2はそのソースプログラムを解析し、制御
の分岐点および合流点に対してノードを生成し、そのノ
ード間にエツジを生成し、手続きおよびブロックを一つ
のフローグラフ、すなわち、部分フローグラフとして入
力し、例えば、return文1goto文、exit
文等の飛出し文によってフローグラフ間エツジを生成す
る。
第2図にはあるプログラムがフロー解析器2で解析され
記憶装置4に記録されたノード1−1゜1−2.1−3
.1−4.1−5、エツジ1−11.1−12.1−1
3.1−14.1−15を持つ部分フローグラフ42−
1およびノード2−1.2−2.2−3.2−4.2−
5、エツジ2−L L、2−12.2−13.2−14
.2−15を持つ部分フローグラフ42−2とによる部
分フローグラフの集まりと、フローグラフ間エツジ43
−1をフローグラフ間エツジ(この場合一つ)の集まり
とし、互いの関係を例示した概念図である。第2図にお
いてはノードを円でエツジを矢印で表わしている。また
第2図では、入力装置1から入力された指定ノード41
が部分フローグラフ42−1内のノード2−2を指して
いる。次にパス出力器3は、指定ノード41から最初に
ノード1−2を得る。そしてノード1−2からエツジ1
−12を辿りノード1−3を°得る。そしてノード1−
3からエツジ1−13を辿りノード1−4を得る。ノー
ド1−4を起点とするエツジは存在しないので、パス出
力器3は、指定ノード41からノード1−4にいたるバ
スを出力装置5に出力する。次にパス出力器3はバック
トラックし、選択可能なのこりのエツジを持っているノ
ード1−3から新しいエツジ43−1を辿り、上記と同
様にしてエツジの起点となっていないノードに行きつく
か、あるいは今までに辿ったノートに再び行きつくかす
るまでエツジを辿りそのバスを出力する。
そして選択可能なエツジがなくなるまで、以上の処理を
くりかえす。この様に部分フローグラフ間エツジ43−
1を、エツジ1−13と同等に扱うことによって、部分
フローグラフ間にまたがるパスを出力できる。
フロー解析器2の動作について説明する。第3図〜第9
図はフロー解析器2の具体的な処理フローの一例を示す
フローチャートである。入力装置1よりプログラムソー
スを受け(100)、ソースが終了であるかチェックし
く101)、終了であれば終了される( 108)。ソ
ースがあれば、開始点であるかチェック(102)L、
開始点であれば開始点処理(200、第4図)を行なう
開始点でなければ、終了点であるかチェック(103)
し、終了点であれば終了点処理(300、第5図)を行
なう。終了点でなければ、分岐点であるかチェック(1
04)L、分岐点であれば分岐点処理(400、第6図
)を行なう。分岐点でなければ、合流点であるかチェッ
ク(105)L、合流点であれば合流点処理(500、
第7図)を行なう。合流点でなければ、ブロック開始点
であるかチェック(106)L、ブロック開始点であれ
ばブロック開始処理(600、第8図)を行なう。ブロ
ック開始点でなければ、ブロック終了点であるかチェッ
ク(107)L、ブロック終了点であればブロック終了
処理(700、第9図)を行なう。終了点でなければ処
理100へ戻る。
次に、開始点処理(200)について第4図を用いて説
明する。なお、各処理(第4図〜第9図)において、ノ
ードXとは、各処理において生成された新たなノードに
付けられるもので、各処理によってそれぞれ付けられる
ものとする。入力されたプログラムソースが開始点であ
るとき、ノードXを生成しく201>、生成したノード
Xを最新ノードとしく202>、ノードXをブロックノ
ードとして記憶装置4へ登録しく203)開始点処理を
終了する。
次に、終了点処理(300)について第5図を用いて説
明する。プログラムソースが終了点であるとき、ノード
Xを生成しく301)、最新ノードから生成したノード
Xへのエツジを生成しく302)、ノードXを最新ノー
ドとしく303)、終了点処理を終了する。
次に、分岐点処理(400>について第6図を用いて説
明する。プログラムソースが分岐点であるとき、ノード
Xを生成しく401)、最新ノートから生成したノード
Xヘエッジを生成し、ノードXを最新ノードとする(4
02)。次に分岐先ノードがすでにあるかチェック(4
03)L、分岐先ノードがなければ分岐先ノードを生成
する(404)、分岐先ノードがすでにあるか、または
、処理404で生成されると、分岐先ノードが別フロー
グラフ内にあるかチェック(404)L、別フローグラ
フにあれば最新ノードから分岐先ノードへフローグラフ
間エツジを生成(406)L、処理は分岐先の有無のチ
ェック(409)へ移る。
分岐先ノードが別フローグラフになければ、分岐先ノー
ドを生成(407)L、最新ノードから分岐先ノードへ
エツジを生成(408)する。次に処理すべき分岐点が
なくなったか否かチェ・ツク(409)L、処理すべき
分岐点がなければ、新たに分岐先ノードを生成したかチ
ェック(410)し、新たに分岐先ノートを生成したな
らば分岐先ノードのうちの1つを最新ノードとしく41
1 )終了する。新たな分岐先ノードを生成していな÷
れば終了する。チェック(409>結果、処理すべき分
岐点がまだあるときは処理403へ戻る。
次に、合流点処理(500)について第7図を用いて説
明する。プログラムソースが合流点であれば、ノードX
を生成(501)L、最新ノードから生成したノードX
へのエツジを生成(502>し、ノードXを最新ノード
として(503)終了する。
次にブロック開始処理(600)について第8図を用い
て説明する。プログラムソースがブロック開始点であれ
ば、ノードXを生成(601)L、最新ノードから生成
したノードXヘエッジを生成(602)L、ノードXを
最新ノードとする(603)。次にブロック終了ノード
を生成(604)し、最新ノードから生成したブロック
終了ノードへエツジを生成(605)L、ブロック終了
ノードを最新ノードとする( 606 )。次に最新ノ
ードをスタックにブツシュしく607)8次のノードX
を生成する(608)。608で生成したノードXをブ
ロックノードとして登録(609)L、ノードXを最新
ノードとして(610)終了する。
次にブロック終了処理(700)について第9図を用い
て説明する。プログラムソースがブロック終了点であれ
ば、ノードXを生成(701)L、最新ノードから生成
したノードXへのエツジを生成(702)L、スタック
をポツプし最新ノードを取り出しく703)処理を終了
する。
〔発明の効果〕
以上説明したように本発明は、ソースプログラムを解析
し部分フローグラフの集まりとフローグラフ間エツジの
集まりを生成し、指定ノードがらエツジおよびフローグ
ラフ間エツジを辿りパスリストを生成することにより、
部分フローグラフ内の指定された任意のノードから部分
フローグラフ間にまたがるパスを含めて出力でき、必要
なパス情報が1度に出力できるという効果がある。
【図面の簡単な説明】
第1図は本発明の一実施例を示すブロック図、第2図は
本発明のフロー解析の結果記憶装置に記録される情報の
例を表わす概念図、第3図〜第9図はフロー解析器の処
理フローの一例を示すフローチャートである。 1は入力装置、2はフロー解析器、3はパス出力器、4
は記憶装置、5は出°力装置、41は指定ノード、42
は部分フローグラフの集まり、43はフローグラフ間エ
ツジの集まり、42−1.42−2は部分フローグラフ
、43−1はフローグラフ間エツジ、1−1.〜1−5
.2−1〜2−5はノード、1−11〜1−15.2−
11〜2笛4図      易j〆

Claims (1)

    【特許請求の範囲】
  1. 入力装置から入力されたソースプログラムを解析し、記
    憶装置内にノードおよびエッジより成る部分フローグラ
    フの集まり、および、前記部分フローグラフのフローグ
    ラフ間エッジの集まりを生成するフロー解析器と、前記
    入力装置から入力され記憶装置に記録された指定ノード
    を起点として前記フロー解析器が生成した前記部分フロ
    ーグラフの集まり、および、前記フローグラフ間エッジ
    の集まりを辿りパスリストを生成し出力装置に出力する
    出力器とを含むことを特徴とする部分パスリスト生成器
JP29382986A 1986-12-09 1986-12-09 部分パスリスト生成器 Pending JPS63146129A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP29382986A JPS63146129A (ja) 1986-12-09 1986-12-09 部分パスリスト生成器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP29382986A JPS63146129A (ja) 1986-12-09 1986-12-09 部分パスリスト生成器

Publications (1)

Publication Number Publication Date
JPS63146129A true JPS63146129A (ja) 1988-06-18

Family

ID=17799698

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29382986A Pending JPS63146129A (ja) 1986-12-09 1986-12-09 部分パスリスト生成器

Country Status (1)

Country Link
JP (1) JPS63146129A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010500497A (ja) * 2006-08-10 2010-01-07 ダイムラー・アクチェンゲゼルシャフト 内燃機関

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010500497A (ja) * 2006-08-10 2010-01-07 ダイムラー・アクチェンゲゼルシャフト 内燃機関

Similar Documents

Publication Publication Date Title
JP2627512B2 (ja) ネツトワーク図作成装置
US20020052856A1 (en) Method of data-dependence analysis and display for procedure call
JP2005018114A (ja) プログラム保守支援装置、プログラム保守支援方法、およびプログラム
Bakker et al. Ten years of concurrency semantics: selected papers of the Amsterdam Concurrency Group
Holzmann Early fault detection tools
JPS63146129A (ja) 部分パスリスト生成器
Milius et al. A new foundation for finitary corecursion: The locally finite fixpoint and its properties
JP2004178270A (ja) 有向グラフ解析方法、解析装置及びそのプログラム
JPH06348475A (ja) ポインタ解析システム
Lee et al. An SSIMD compiler for the implementation of linear shift-invariant flow graphs
JPH09101880A (ja) プログラム分析装置
JP3648710B2 (ja) プログラム解析システム
CN112306470B (zh) 一种复杂同步语言程序的化简转化和自动验证方法
Cox et al. Advanced programming aids in PROGRAPH
Wedler et al. Parallel implementations of combinations of broadcast, reduction and scan
JPH0793144A (ja) プログラム解析装置
Brunner Formal Verification of Algorithms for Automata and Model Checking
JPH04177427A (ja) プログラム木構造図作成装置
JPH06222913A (ja) プログラム解析装置
JPH0950379A (ja) プログラム意味保存コード移動装置
JPH05241890A (ja) データトレース方式
JP3167386B2 (ja) プログラム自動並列化方法
Wang et al. Hindsight helps: deterministic task scheduling with backtracking
JPH04148328A (ja) 状態遷移変換装置
JPH0340144A (ja) パターン解析機能を持つスナップショットダンプ出力処理装置