JPH03179537A - プログラム内容解析装置 - Google Patents
プログラム内容解析装置Info
- Publication number
- JPH03179537A JPH03179537A JP1319451A JP31945189A JPH03179537A JP H03179537 A JPH03179537 A JP H03179537A JP 1319451 A JP1319451 A JP 1319451A JP 31945189 A JP31945189 A JP 31945189A JP H03179537 A JPH03179537 A JP H03179537A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- program
- line number
- analysis
- 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.)
- Granted
Links
- 238000004458 analytical method Methods 0.000 claims abstract description 89
- 238000003860 storage Methods 0.000 claims abstract description 54
- 238000000034 method Methods 0.000 abstract description 122
- 238000002360 preparation method Methods 0.000 abstract description 5
- 230000008878 coupling Effects 0.000 abstract 1
- 238000010168 coupling process Methods 0.000 abstract 1
- 238000005859 coupling reaction Methods 0.000 abstract 1
- 238000004519 manufacturing process Methods 0.000 abstract 1
- 238000011144 upstream manufacturing Methods 0.000 description 28
- 238000010586 diagram Methods 0.000 description 15
- 230000014509 gene expression Effects 0.000 description 9
- 230000001174 ascending effect Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- GNFTZDOKVXKIBK-UHFFFAOYSA-N 3-(2-methoxyethoxy)benzohydrazide Chemical compound COCCOC1=CC=CC(C(=O)NN)=C1 GNFTZDOKVXKIBK-UHFFFAOYSA-N 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- GSDSWSVVBLHKDQ-UHFFFAOYSA-N 9-fluoro-3-methyl-10-(4-methylpiperazin-1-yl)-7-oxo-2,3-dihydro-7H-[1,4]oxazino[2,3,4-ij]quinoline-6-carboxylic acid Chemical compound FC1=CC(C(C(C(O)=O)=C2)=O)=C3N2C(C)COC3=C1N1CCN(C)CC1 GSDSWSVVBLHKDQ-UHFFFAOYSA-N 0.000 description 1
- FGUUSXIOTUKUDN-IBGZPJMESA-N C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 Chemical compound C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 FGUUSXIOTUKUDN-IBGZPJMESA-N 0.000 description 1
- 235000019892 Stellar Nutrition 0.000 description 1
- 241000473945 Theria <moth genus> Species 0.000 description 1
- 241000209140 Triticum Species 0.000 description 1
- 235000021307 Triticum Nutrition 0.000 description 1
- 239000008280 blood Substances 0.000 description 1
- 210000004369 blood Anatomy 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
概 要
アセンブラ言語で記述されたプログラムをその仕様と対
比して基本的構造や動作を解析するのは、従来では人手
により膨大な労力を用いて行っており、また過誤を避け
ることが困ルであった。本発明では、このような被解析
プロゲラl、の基本的動作と構造とはロード命令やスト
ア命令による入カフ′出力状態と、実行順序を配列順序
と異ならせる分岐命令による分岐状態とによって決定さ
れることに着目した。したがって、分岐命令に規定され
る実行経路を識別する経路データと 分岐命令に関連し
て分岐先命令や分岐元If5令の位置データなどを命令
部に設定するようにしている。
比して基本的構造や動作を解析するのは、従来では人手
により膨大な労力を用いて行っており、また過誤を避け
ることが困ルであった。本発明では、このような被解析
プロゲラl、の基本的動作と構造とはロード命令やスト
ア命令による入カフ′出力状態と、実行順序を配列順序
と異ならせる分岐命令による分岐状態とによって決定さ
れることに着目した。したがって、分岐命令に規定され
る実行経路を識別する経路データと 分岐命令に関連し
て分岐先命令や分岐元If5令の位置データなどを命令
部に設定するようにしている。
プログラムはストア命令や分(吐命令から逆上られて読
取られ、その実行内容や分岐条件なとがΩ令カニの実行
内容を表す論理式の結合された論理式として、たとえば
フローチャー1〜やP A D図などの出力を得る。こ
のとき、プロゲラl\が長いほど前記出力量は膨大とな
るので、前記論理式の結合された論理式に論理演算を施
し、簡キ、′)化して出力する。これにより、前記出力
がプログラムの仕様と対比が容易な簡約化された形式に
てfiられることになり、解析処理の効率(ヒと過誤の
発生とを防止することができる。
取られ、その実行内容や分岐条件なとがΩ令カニの実行
内容を表す論理式の結合された論理式として、たとえば
フローチャー1〜やP A D図などの出力を得る。こ
のとき、プロゲラl\が長いほど前記出力量は膨大とな
るので、前記論理式の結合された論理式に論理演算を施
し、簡キ、′)化して出力する。これにより、前記出力
がプログラムの仕様と対比が容易な簡約化された形式に
てfiられることになり、解析処理の効率(ヒと過誤の
発生とを防止することができる。
産業上の利用分野
本発明は、マイクロプロセッサなどを動作させるために
用いられるプログラムの内容を解析する装置に関する。
用いられるプログラムの内容を解析する装置に関する。
従来の技術
マイクロプロセッサが動作するにあたって実際に読取る
機械語に最も近い言語としてアセンブラ言語がプログラ
ムを記述するために用いられている。このアセンブラ言
語は高級り語と異なり、機械語の各命令と1対l対応を
なす言語であるため、この10グラl、に基づく各種入
出力装置の0作内容やプログラムの実行内容の概略など
が、アセンブラ言語にては把握しに<<、仕様上σ)記
載内容と照合するにあたり、人手によって命令毎に行う
必要がある。またシュミレーションやエミュレーション
などを行ってプログラムの動作状態を確認する技術が採
用されているが、これらはプログラムの中で要求される
各種入力命令に対応して数値やデータを設定しなければ
ならない。
機械語に最も近い言語としてアセンブラ言語がプログラ
ムを記述するために用いられている。このアセンブラ言
語は高級り語と異なり、機械語の各命令と1対l対応を
なす言語であるため、この10グラl、に基づく各種入
出力装置の0作内容やプログラムの実行内容の概略など
が、アセンブラ言語にては把握しに<<、仕様上σ)記
載内容と照合するにあたり、人手によって命令毎に行う
必要がある。またシュミレーションやエミュレーション
などを行ってプログラムの動作状態を確認する技術が採
用されているが、これらはプログラムの中で要求される
各種入力命令に対応して数値やデータを設定しなければ
ならない。
したがってプログラムの各命令を読取ってプログラム全
体の処理や流れの構造を認識し、プログラドの実行内容
を概略的に記述したり、また入出力装置の動作として記
述するなど、プログラムの実行内容の把IINが容易な
形式の出力を得ようとする技術が想定される。この場合
、プログラムに基づく入出力装置へのA1柊的な出力は
、マイクロプロセッサが或データをメモリの所定のアド
レスに書込むストア命令である。したがってストア命令
に表れるオペランドの変数の内容が最終的に確定される
たとえばロード命令まで、プログラムを逆上って命令を
読取れば、当該ロード命令でデータが入力されるものと
して前記変数の内容が確定することになる。このように
して前記ロード命令に用いられたオペラン);の変数で
プログラムの実行内容を概略的に記述できることなる。
体の処理や流れの構造を認識し、プログラドの実行内容
を概略的に記述したり、また入出力装置の動作として記
述するなど、プログラムの実行内容の把IINが容易な
形式の出力を得ようとする技術が想定される。この場合
、プログラムに基づく入出力装置へのA1柊的な出力は
、マイクロプロセッサが或データをメモリの所定のアド
レスに書込むストア命令である。したがってストア命令
に表れるオペランドの変数の内容が最終的に確定される
たとえばロード命令まで、プログラムを逆上って命令を
読取れば、当該ロード命令でデータが入力されるものと
して前記変数の内容が確定することになる。このように
して前記ロード命令に用いられたオペラン);の変数で
プログラムの実行内容を概略的に記述できることなる。
発明が解決しようとする課題
このような従来例に之3いて、解析する対象のプログラ
ムがたとえば第19図示の構造である場合について説明
する。このプログラムは、ステップa1〜a 10の命
令から成り、ステップa2.a4にサブルーチンプログ
ラムを呼出すコール命令rCALL AJおよびrc
ALL B、が配置されている。ここでステップa5
からプログラムを逆上る場a、逆上り経路としては、 a5→a8→a7→a6→・ および a 5− a 8−+ a 7 →a 10−p a
9−+の2種類、t!!定されるが、実際のプログラム
の実行順を考慮すると凌者は実際には実行され得ない経
路である。
ムがたとえば第19図示の構造である場合について説明
する。このプログラムは、ステップa1〜a 10の命
令から成り、ステップa2.a4にサブルーチンプログ
ラムを呼出すコール命令rCALL AJおよびrc
ALL B、が配置されている。ここでステップa5
からプログラムを逆上る場a、逆上り経路としては、 a5→a8→a7→a6→・ および a 5− a 8−+ a 7 →a 10−p a
9−+の2種類、t!!定されるが、実際のプログラム
の実行順を考慮すると凌者は実際には実行され得ない経
路である。
すなわちプログラムの内容を解析するにあたって、プロ
グラムを命令の実行内容に基づいて逆上って順次的に読
取る技術のみでは、実際のプログラムの実行経路からは
あり得ない経路も解析な対重としてしまい、解析時間が
長くなってしまうとともに、実際のプログラム実行内容
と異なる解析結果を一導出することになり極めて不具合
である。
グラムを命令の実行内容に基づいて逆上って順次的に読
取る技術のみでは、実際のプログラムの実行経路からは
あり得ない経路も解析な対重としてしまい、解析時間が
長くなってしまうとともに、実際のプログラム実行内容
と異なる解析結果を一導出することになり極めて不具合
である。
本発明の目的は、上述の技fネi的課題を解消し、プロ
グラムを逆上って命令を読取り、内容を解析するにあた
って実際の実行経路に対応した解析経路を選択して、実
行経路としては有り得ない解析経路を選択する不具合を
解消したプロゲラl、内容解析装置を提供することであ
る。
グラムを逆上って命令を読取り、内容を解析するにあた
って実際の実行経路に対応した解析経路を選択して、実
行経路としては有り得ない解析経路を選択する不具合を
解消したプロゲラl、内容解析装置を提供することであ
る。
課題を解決するための手段
本発明は、複数の命令から成るプログラムの各命令を配
列順とは逆に逆上って読取り、その内容を解析する装置
において、 プログラムを逆上って各命令の実行内容を読取る読取り
手段と、 読取られた各命令の実行内容を、命令毎の実行内容に対
応する論理式の結合した論理式として記憶する実行内容
記憶手段と、 実行内容記憶手段に記憶された命令毎の論理式の結合さ
れた論理式に論理演算を施し、簡約化して出力する実行
内容出力手段とをきむことを特徴とするプログラム内容
解析装置て゛ある。
列順とは逆に逆上って読取り、その内容を解析する装置
において、 プログラムを逆上って各命令の実行内容を読取る読取り
手段と、 読取られた各命令の実行内容を、命令毎の実行内容に対
応する論理式の結合した論理式として記憶する実行内容
記憶手段と、 実行内容記憶手段に記憶された命令毎の論理式の結合さ
れた論理式に論理演算を施し、簡約化して出力する実行
内容出力手段とをきむことを特徴とするプログラム内容
解析装置て゛ある。
作用
本発明に従えば、プログラムは読取り手段により、逆上
って各命令次行内容が読取られる。読取られた各命令の
実行内容は、実行内容記憶手段に命令毎の実行内容に対
応する論理式の結合した論理式として記憶される。実行
内容出力手段では、前記実行内容記憶手段に記憶された
命令海の論理式の結合された論理式に論理渓算を施し、
簡約1ヒして出力する。これによりプログラム解析処理
が動子化され、またこのような解析処理におけろ過訊の
発生を防止することができる。
って各命令次行内容が読取られる。読取られた各命令の
実行内容は、実行内容記憶手段に命令毎の実行内容に対
応する論理式の結合した論理式として記憶される。実行
内容出力手段では、前記実行内容記憶手段に記憶された
命令海の論理式の結合された論理式に論理渓算を施し、
簡約1ヒして出力する。これによりプログラム解析処理
が動子化され、またこのような解析処理におけろ過訊の
発生を防止することができる。
実施例
第1図は本発明の一実施例のプログラム内容解析装置(
以下、解析装置と略す)1の構成例を示すブロック図で
ある。解析装置lには外部記憶装置2が接続され、解析
対象となる高級言語やアセンブラ言語で記述されたプロ
グラムが保存される。
以下、解析装置と略す)1の構成例を示すブロック図で
ある。解析装置lには外部記憶装置2が接続され、解析
対象となる高級言語やアセンブラ言語で記述されたプロ
グラムが保存される。
0V析装置lは外部記憶装置2からのプログラムを機械
語に変化するアセンブラ3を備え、アセンブラ3からの
アセ〉プルリストがアセンブルリス1−ファイル記憶部
4に記憶される。以下「記・階部」J)名称は解析装置
lに皓えちれるたとえばRA M(ラングl、アクセス
メモリ)や固定ディスク装置などの内部記憶装置の所定
の領域を示す。
語に変化するアセンブラ3を備え、アセンブラ3からの
アセ〉プルリストがアセンブルリス1−ファイル記憶部
4に記憶される。以下「記・階部」J)名称は解析装置
lに皓えちれるたとえばRA M(ラングl、アクセス
メモリ)や固定ディスク装置などの内部記憶装置の所定
の領域を示す。
アセンブルリストファイル記憶手段4からの解析対象と
なるアセンブルプログラムは、解析準備処理手段5に与
えられ、後述するプログラム解析に先立ち解析対象とな
るプログラムのデータが内容別に分類される。解析準備
処理手段5には複数の記憶部が接続される6リストフア
イル記憶部6には被解析プログラムの機tiIti語と
アセンブラ言語の二一モニツクから戊る命令列が記憶さ
れる。RAMファイル記憶部7には被解析プログラムで
用いられる各種変数が記憶される。マツプデータ記憶部
8には被解析プログラムで用いられるマツプ形式などで
の固定データが記憶される。またその池に記憶部9が接
続され、被解析10グラl、で用いられるたとえば割込
みベクトルのベタ1−ルアドレスや、前記リストファイ
ル記憶部6に記憶されている二一モニツクのプログラム
に関するラベルなどが記憶される。また解析装置lには
命令データファイル記憶部10が設けられ、被解析プロ
グラムで用いられる命令が予め記憶される。
なるアセンブルプログラムは、解析準備処理手段5に与
えられ、後述するプログラム解析に先立ち解析対象とな
るプログラムのデータが内容別に分類される。解析準備
処理手段5には複数の記憶部が接続される6リストフア
イル記憶部6には被解析プログラムの機tiIti語と
アセンブラ言語の二一モニツクから戊る命令列が記憶さ
れる。RAMファイル記憶部7には被解析プログラムで
用いられる各種変数が記憶される。マツプデータ記憶部
8には被解析プログラムで用いられるマツプ形式などで
の固定データが記憶される。またその池に記憶部9が接
続され、被解析10グラl、で用いられるたとえば割込
みベクトルのベタ1−ルアドレスや、前記リストファイ
ル記憶部6に記憶されている二一モニツクのプログラム
に関するラベルなどが記憶される。また解析装置lには
命令データファイル記憶部10が設けられ、被解析プロ
グラムで用いられる命令が予め記憶される。
前記リストファイル記憶部6からの二−モニツ2形式で
のプログラムは分岐データ作成手段としての流れ構危解
析手段11にIi−えられ、被解析プロゲラ1.にお(
するり匹丁里の流れの構造、すなわち分波の右無1分v
L#if令が想定される場合の分岐先血合の位置の変動
J3よびスタックのネスティングの程度などを解析する
ようにしている。ここではこれ以降のすべての解析処理
の基礎データとff 7+流れ制御ファイルを作成し、
流れ制御ファイル記↑Δ部12に記憶する。前記リスト
ファイル記憶部6.56令ファイ/L記↑α部20およ
び流れ1tll Inファイル記1!部■2からの各デ
ータに基づいて分岐条件解析部13、ストア内容解析部
■・1、完全分岐z t’F解析都15は後述するそれ
ぞれの解析処理を行い(’Frられた各データを経路デ
ータ記十Δ+殴および位置データ記憶手段を含む分岐条
件ファイル記憶部16、実行内容ファイル記憶部17、
および完全分岐条件ファイル記憶部18に記憶する。
のプログラムは分岐データ作成手段としての流れ構危解
析手段11にIi−えられ、被解析プロゲラ1.にお(
するり匹丁里の流れの構造、すなわち分波の右無1分v
L#if令が想定される場合の分岐先血合の位置の変動
J3よびスタックのネスティングの程度などを解析する
ようにしている。ここではこれ以降のすべての解析処理
の基礎データとff 7+流れ制御ファイルを作成し、
流れ制御ファイル記↑Δ部12に記憶する。前記リスト
ファイル記憶部6.56令ファイ/L記↑α部20およ
び流れ1tll Inファイル記1!部■2からの各デ
ータに基づいて分岐条件解析部13、ストア内容解析部
■・1、完全分岐z t’F解析都15は後述するそれ
ぞれの解析処理を行い(’Frられた各データを経路デ
ータ記十Δ+殴および位置データ記憶手段を含む分岐条
件ファイル記憶部16、実行内容ファイル記憶部17、
および完全分岐条件ファイル記憶部18に記憶する。
流れ制御ファイル、分岐条(↑ファイルおよび実行内容
ファイルかr、フローチャート・作成部1つは、被解析
プログラムのフローチャートを作成して出力する。また
実行内容ファイルおよび完全分岐条件ファイルから実行
内容解析結果出力部20は被解析プログラムの実行内容
をたとえば印字出力する。
ファイルかr、フローチャート・作成部1つは、被解析
プログラムのフローチャートを作成して出力する。また
実行内容ファイルおよび完全分岐条件ファイルから実行
内容解析結果出力部20は被解析プログラムの実行内容
をたとえば印字出力する。
第2図は解析準備処理手段5の動作を説明するフローヂ
ャ−1・である。ステップa1にI3いて解析装置1は
外部記憶装置2からソースプログラムを読込み、アセン
ブラ3にてアセンブル処理を行う。アセンブルリストフ
ァイル4に記憶されたアセンブルプログラムに対して、
解析$備処理手段5はステップa2にて各命令海に一連
の番号(以下、行番号と称する)を付与する。このとき
各命令は後述するようにたとえばストア命令、入出力命
令、分岐命令あるいは演算命令などのようにその種類に
よって分類される。これは前記命令データファイル記憶
部IOに記憶されている命令を参照して行われる。ステ
ップ、13ではこのような命令の分類に基づいて、前述
した各種データファイルの作成が行われる。
ャ−1・である。ステップa1にI3いて解析装置1は
外部記憶装置2からソースプログラムを読込み、アセン
ブラ3にてアセンブル処理を行う。アセンブルリストフ
ァイル4に記憶されたアセンブルプログラムに対して、
解析$備処理手段5はステップa2にて各命令海に一連
の番号(以下、行番号と称する)を付与する。このとき
各命令は後述するようにたとえばストア命令、入出力命
令、分岐命令あるいは演算命令などのようにその種類に
よって分類される。これは前記命令データファイル記憶
部IOに記憶されている命令を参照して行われる。ステ
ップ、13ではこのような命令の分類に基づいて、前述
した各種データファイルの作成が行われる。
次に解析′A置1は、流れtll遣解析手段11により
リストファイル記憶部6に記憶されている機械語と二一
モニツクから戒るプログラムファイルに関して流れ構造
解析処理を行う。この解析処理は被解析プログラムの流
れ構造(分岐の有無、分岐先の特定、スタックのネステ
ィングの程度など)を解析する処理であり、以降のすべ
ての解析プログラムの基礎データとなる前述した各種フ
ァイルを作成する。とりわけ分山支命令の存在に基づく
分岐先命令の行番号などの抽出の池、「逆上り(さかの
ぼり)」概念と「属性」概念とを表1−データを作成す
る。
リストファイル記憶部6に記憶されている機械語と二一
モニツクから戒るプログラムファイルに関して流れ構造
解析処理を行う。この解析処理は被解析プログラムの流
れ構造(分岐の有無、分岐先の特定、スタックのネステ
ィングの程度など)を解析する処理であり、以降のすべ
ての解析プログラムの基礎データとなる前述した各種フ
ァイルを作成する。とりわけ分山支命令の存在に基づく
分岐先命令の行番号などの抽出の池、「逆上り(さかの
ぼり)」概念と「属性」概念とを表1−データを作成す
る。
(1)逆上り概念
プログラムの実行内容を解析するため(こプロクラムを
その実行順に促って命イアを読取って解析しようとする
場合、各種フラグなどのコンデイションコードの変化、
複数の命令の間の相関関係なと、当該命令にrIA達し
て惣定されるすべてのデータを蓄積しておく必要がある
。このようなデータの中には命令の種類によっては不必
要なデータがあるJ1合であっても、以後の解析処理で
、どのデータが必要になるか判断できず、このためすべ
てのデータを収集する必要がある。
その実行順に促って命イアを読取って解析しようとする
場合、各種フラグなどのコンデイションコードの変化、
複数の命令の間の相関関係なと、当該命令にrIA達し
て惣定されるすべてのデータを蓄積しておく必要がある
。このようなデータの中には命令の種類によっては不必
要なデータがあるJ1合であっても、以後の解析処理で
、どのデータが必要になるか判断できず、このためすべ
てのデータを収集する必要がある。
本発明に従う「逆上り」概念はこのような課題を解消す
るための方策である。
るための方策である。
本発明は機械語やアツセンブラプロダラムで記憶された
プログラムを、分岐da /、2およびス1〜Tir令
の分岐条件やストア内容を合成する二とにより、把打(
!容易な形式に論理式により記憶しようヒ5る乙のであ
る。このため前記分岐命令またはストア晶令をllil
点とし、当該分岐条イ9;またはストアLhj令の内容
が確定する個所までプロゲラl、を逆上りつつ、必要な
情報のみを収集するらのて、らる7ここでプログラム到
として下記第↓表の〕゛ログラス、に則して説明する。
プログラムを、分岐da /、2およびス1〜Tir令
の分岐条件やストア内容を合成する二とにより、把打(
!容易な形式に論理式により記憶しようヒ5る乙のであ
る。このため前記分岐命令またはストア晶令をllil
点とし、当該分岐条イ9;またはストアLhj令の内容
が確定する個所までプロゲラl、を逆上りつつ、必要な
情報のみを収集するらのて、らる7ここでプログラム到
として下記第↓表の〕゛ログラス、に則して説明する。
(L″)、下糸口)
第
に
上記プログラム例で、実行順序は行番す1・2−・3→
4→5→6または行番号1 m 2→3−4−5−7で
ある。分岐命令はrBccjであり、その条件4ま行番
号4の(A−#8)が0以上かnて゛あるかで決定され
る。そのためにはアキュムレータAの値が確定する必要
がある。そのためには行番号3にてアキュムレータA、
Bの双方の値が確定する必要があり、行番号2,1を読
取って初めてその値が確定する。
4→5→6または行番号1 m 2→3−4−5−7で
ある。分岐命令はrBccjであり、その条件4ま行番
号4の(A−#8)が0以上かnて゛あるかで決定され
る。そのためにはアキュムレータAの値が確定する必要
がある。そのためには行番号3にてアキュムレータA、
Bの双方の値が確定する必要があり、行番号2,1を読
取って初めてその値が確定する。
流れn4造解析手段11ては上記逆上り処理ζこ・ヒ・
要な情報、すなわち或命令とその前行と(ニブログラム
の実行順に&tつた連続したclI令あるか否かのpH
Dのためのデ〜りや、これらの命令が不連続の場合、ど
の行番号の命令へ連続しているかに閂するデータなどの
後述する属性データをf1…成している。
要な情報、すなわち或命令とその前行と(ニブログラム
の実行順に&tつた連続したclI令あるか否かのpH
Dのためのデ〜りや、これらの命令が不連続の場合、ど
の行番号の命令へ連続しているかに閂するデータなどの
後述する属性データをf1…成している。
(2)属性は、含
プログラムにはメインル−チンと、メインルーチンの所
定の個所から処理が分岐さhろサフノL−チンとを含ん
で構成される。同一のサフルーーf−ンでら成敗箇所か
ら呼出される場合か、ろり、メインル−チンに処f里を
戻すリターンLi官令r了[’、 T fこ上る分岐先
の位置は、メインルーチンの叶出し命令に対応して変化
する。したがって1−)σ)サフlし−チンによっても
複数の実行経路が設定されていると考えられ、処理経路
を区分する情報として寓性直念を設定する。す、下、第
2表で示されるプログラム例に沿って説明する。
定の個所から処理が分岐さhろサフノL−チンとを含ん
で構成される。同一のサフルーーf−ンでら成敗箇所か
ら呼出される場合か、ろり、メインル−チンに処f里を
戻すリターンLi官令r了[’、 T fこ上る分岐先
の位置は、メインルーチンの叶出し命令に対応して変化
する。したがって1−)σ)サフlし−チンによっても
複数の実行経路が設定されていると考えられ、処理経路
を区分する情報として寓性直念を設定する。す、下、第
2表で示されるプログラム例に沿って説明する。
(1,J、下糸口)
第
2
表
上記プログラム例のフローチャー1・は第3図に示され
る。
る。
このプロゲラl、例の実行順序は行番号1−2−3−9
+l O= l ]→4→5 ”6−8−フ9−・10
−11−7−・・・である。一方、行番号7からプログ
ラムを逆上る場合、第iの経laとして行番17=ll
→ 10→9→8→6→5→4→ 11→ 1〇−9
→3→2→1→・・・があるが、その他に行番号7−1
1.−10→9→3→2→・・・などの逆上り経路が存
在していることになる。このような後者の逆上り経路は
実行順序からはあり得ない経路であり、前記属性概念を
用いてこのような不所望な経路の選択が防止される。
+l O= l ]→4→5 ”6−8−フ9−・10
−11−7−・・・である。一方、行番号7からプログ
ラムを逆上る場合、第iの経laとして行番17=ll
→ 10→9→8→6→5→4→ 11→ 1〇−9
→3→2→1→・・・があるが、その他に行番号7−1
1.−10→9→3→2→・・・などの逆上り経路が存
在していることになる。このような後者の逆上り経路は
実行順序からはあり得ない経路であり、前記属性概念を
用いてこのような不所望な経路の選択が防止される。
第2表のプログラム例において、分岐先欄、分岐元欄、
流れフラグ欄および属性欄の内容が以下のようにして決
定される。
流れフラグ欄および属性欄の内容が以下のようにして決
定される。
<a>a性
行番号1〜7は行番号3.6のCALL命令によって処
理が分岐し、かつサブルーチン10グラムをきんでいな
いので、すべて同一の属性記号MがIj、えられる。行
番号9〜11は行番号3のCALL命令により処理が移
されるサブルーチンプログラムであり、属性記号Aが与
えられる。また行番号8〜11は行番号6のCALL命
令に上り処理が移されるサブルーチンプログラムであり
、前記属性記号Aと異なる属性記号Bがそれぞれ与えら
れる。
理が分岐し、かつサブルーチン10グラムをきんでいな
いので、すべて同一の属性記号MがIj、えられる。行
番号9〜11は行番号3のCALL命令により処理が移
されるサブルーチンプログラムであり、属性記号Aが与
えられる。また行番号8〜11は行番号6のCALL命
令に上り処理が移されるサブルーチンプログラムであり
、前記属性記号Aと異なる属性記号Bがそれぞれ与えら
れる。
(b)分岐先欄
上記プログラムの分岐命令は行番号3.t)、711に
配置されてれり、これらの処理が移7−先は?If65
令の内容に対応してそれぞれ行番号9.81であり、〉
j゛岐命イi R,E Tては対応するCALL命令の
直後の行番号4または行番号7である。分岐先間にはこ
の上うな分岐先の行番号と当該行番号の命令か71する
属性とが組にな−)だデータが設定される。
配置されてれり、これらの処理が移7−先は?If65
令の内容に対応してそれぞれ行番号9.81であり、〉
j゛岐命イi R,E Tては対応するCALL命令の
直後の行番号4または行番号7である。分岐先間にはこ
の上うな分岐先の行番号と当該行番号の命令か71する
属性とが組にな−)だデータが設定される。
(c)分岐元欄
前記各分岐命令により処理を移される分岐先の命令から
見て、処理が当該分岐先命令へ移る元となる分岐元命令
が対応r;tけられる。したがって分岐元欄には、各品
令毎に前記分岐元@ i?が対応f「けられる場急には
その分岐元命令の行番号と当該分岐命令の所属する属性
記号とが組とく、−)だデータが設定される。
見て、処理が当該分岐先命令へ移る元となる分岐元命令
が対応r;tけられる。したがって分岐元欄には、各品
令毎に前記分岐元@ i?が対応f「けられる場急には
その分岐元命令の行番号と当該分岐命令の所属する属性
記号とが組とく、−)だデータが設定される。
((1)流れフラグ欄
流itフラグr1.は当該命令が前行のIFR令から連
続した命令であることを示す。流れフラグ「0」は当該
命令が前行の56令以外の他の命令から処理が分岐して
くる分岐先命令であることを示す。すなわら行番号1〜
3は一連の命令であり、行番号4の命令は行番号3のC
ALL命令によりサブルーチンプログラムAが実行され
て行番号11のRET命令により処理が分岐してきた命
令である。
続した命令であることを示す。流れフラグ「0」は当該
命令が前行の56令以外の他の命令から処理が分岐して
くる分岐先命令であることを示す。すなわら行番号1〜
3は一連の命令であり、行番号4の命令は行番号3のC
ALL命令によりサブルーチンプログラムAが実行され
て行番号11のRET命令により処理が分岐してきた命
令である。
このため流れフラグ「0」が1寸される。同様にして行
番号5.6には流れフラグ「1」か付され、行番号7に
は涜れフラグ「0」か付される。
番号5.6には流れフラグ「1」か付され、行番号7に
は涜れフラグ「0」か付される。
行番号8が行番号6のCALL命令により処理か分岐し
てくる命令であり、流れフラグ「0」がttされる。行
番号9は行番号3のCALL命令により処理が分岐して
くる命令であり、流れフラグ「0」が付される命令であ
るが、前記行番号3すCLLの後に行番号6のCALL
命令が行われるので、行番号9は行番号8に連続する命
令となり、第2表のように流れフラグ「1」が与えられ
る。
てくる命令であり、流れフラグ「0」がttされる。行
番号9は行番号3のCALL命令により処理が分岐して
くる命令であり、流れフラグ「0」が付される命令であ
るが、前記行番号3すCLLの後に行番号6のCALL
命令が行われるので、行番号9は行番号8に連続する命
令となり、第2表のように流れフラグ「1」が与えられ
る。
行番号10.11については流れフラグ「1」が与えら
れる6 上記第2表のプログラム例では、CALL命令などその
命令から処理が分岐し、またその命令へ処理が分岐して
くる命令に関して説明したが、般にマイクロコンピュー
タのプロゲラ18の実行ζ土、プログラムカウンタ(P
C)の出力するアドレスの命令を読取って実行し、その
命令の実行により次に実行すべき命令のアドレスがプロ
ゲラl、カウンタに格納される。
れる6 上記第2表のプログラム例では、CALL命令などその
命令から処理が分岐し、またその命令へ処理が分岐して
くる命令に関して説明したが、般にマイクロコンピュー
タのプロゲラ18の実行ζ土、プログラムカウンタ(P
C)の出力するアドレスの命令を読取って実行し、その
命令の実行により次に実行すべき命令のアドレスがプロ
ゲラl、カウンタに格納される。
一方、プログラム中にサブルーチンプロゲラノ、が含ま
れている場合、処理が分岐するが、二のときスタックが
用いられる。スタックは周知のように、先入れ後出しく
ファーストインラストアウト。
れている場合、処理が分岐するが、二のときスタックが
用いられる。スタックは周知のように、先入れ後出しく
ファーストインラストアウト。
FrLo方式)のメモリであり、サブルーチンを呼出す
ときサブルーチンから処理が戻るべきメインルーチンの
次のアドレスが格納される。サブルーチンの処理が終了
後、リターン命令RETによりスタックに格納されてい
るデータがプログラムカウンタに転送され、当該アドレ
スからプログラムが実行される。したがってスタックの
記t−3内容を変更する命令が含まれていれば、サブル
ーチンプロゲラ18からの復帰先を変更することができ
る。
ときサブルーチンから処理が戻るべきメインルーチンの
次のアドレスが格納される。サブルーチンの処理が終了
後、リターン命令RETによりスタックに格納されてい
るデータがプログラムカウンタに転送され、当該アドレ
スからプログラムが実行される。したがってスタックの
記t−3内容を変更する命令が含まれていれば、サブル
ーチンプロゲラ18からの復帰先を変更することができ
る。
このようなプログラム例を下記第3表に示す。
第3表のプログラム例は第2表のプログラム例の行番号
4〜8が変更されている。第3にのプログラムf3’l
+で分岐光間、分岐元図および流れフラグ欄のデータの
決定方法は第2表のプログラム例の場合と同様である。
4〜8が変更されている。第3にのプログラムf3’l
+で分岐光間、分岐元図および流れフラグ欄のデータの
決定方法は第2表のプログラム例の場合と同様である。
以下、属性の決定方法について説明する。
行番号l〜3は一連の命令であり、属性データMを与え
る。行番号3のCALL命令により処理は行番号9に分
岐するので、行番号9〜11には池の属性記号Aを与え
る。行番号11のRE T 6n令により処理は行番号
4に復帰する。この命令には属性記号Mを与える。
る。行番号3のCALL命令により処理は行番号9に分
岐するので、行番号9〜11には池の属性記号Aを与え
る。行番号11のRE T 6n令により処理は行番号
4に復帰する。この命令には属性記号Mを与える。
行番号5のPSH命令により、前述したスタックの最新
のアドレスデータがXレジスタ9)内容に書換えられる
。この時点で属性データをnに変更し、以下行番号11
まで同一の属性データBをj)−える。このようにして
、前述したスタックに格納されているデータを変更する
命令を罰むプログラム中■する属性が決定される。
のアドレスデータがXレジスタ9)内容に書換えられる
。この時点で属性データをnに変更し、以下行番号11
まで同一の属性データBをj)−える。このようにして
、前述したスタックに格納されているデータを変更する
命令を罰むプログラム中■する属性が決定される。
上記第2表および第3にのプロゲラl、例に関する流れ
利御データの属性データは、スタックの内容を変更する
命令を含む分岐命令に関してプログラムの実行経路毎に
、前述したように異なる記号を与えるようにしている。
利御データの属性データは、スタックの内容を変更する
命令を含む分岐命令に関してプログラムの実行経路毎に
、前述したように異なる記号を与えるようにしている。
二のような方法の場合、被解析プログラムにおける属性
の数が増大すると、後述するようにプロゲラl\を逆上
って解析を行う場合、命令等にすべての属性間の属性デ
ータを倹素して同一の属性に沿って逆上るようなろ°5
埋を行うので、前記属性データの数を減小できれ(土よ
り高速な処理が実現できる。
の数が増大すると、後述するようにプロゲラl\を逆上
って解析を行う場合、命令等にすべての属性間の属性デ
ータを倹素して同一の属性に沿って逆上るようなろ°5
埋を行うので、前記属性データの数を減小できれ(土よ
り高速な処理が実現できる。
下記第一1にはプログラム内容は第3表のプログラム内
容と同一であるが、前記第2表」3よび第3にとは異な
る流れ制御データを、分岐量12および属性間l、2.
・とじて設定している。
容と同一であるが、前記第2表」3よび第3にとは異な
る流れ制御データを、分岐量12および属性間l、2.
・とじて設定している。
以下、これらの決定方法について説明する。
(以下金白)
(e) 属性1fiili(i=1.2>属性間の行
番号データNoは分岐命令海に設定され、分岐先命令の
行番号が記述される。属性データtoは当該分岐命令に
より、どの属性間に処理が分岐したかを表す。また行上
りフラグ開においてフラグ=「O」は対応する命令が分
岐先命令であり、直前の行の命令とは処理が連続I−な
い命令であることを示し、フラグ−「3」 (j=]。
番号データNoは分岐命令海に設定され、分岐先命令の
行番号が記述される。属性データtoは当該分岐命令に
より、どの属性間に処理が分岐したかを表す。また行上
りフラグ開においてフラグ=「O」は対応する命令が分
岐先命令であり、直前の行の命令とは処理が連続I−な
い命令であることを示し、フラグ−「3」 (j=]。
2、・)は属性間の番号を示す。行番号1は行屏号11
を分岐命令とする分岐先命令の場合かあり、したがって
フラグ=「O」が設定される。また1lft下りフラグ
欄においてフラグ−「O」は、対応する命令が直r&の
命令と処理が連続しない命令て夕)す、分岐命令である
ことを示す。
を分岐命令とする分岐先命令の場合かあり、したがって
フラグ=「O」が設定される。また1lft下りフラグ
欄においてフラグ−「O」は、対応する命令が直r&の
命令と処理が連続しない命令て夕)す、分岐命令である
ことを示す。
行番号2ではまず設定された属性間1の番号がフラグ−
「1」として設定される。行番号3は分岐命令であり、
分岐先の行番号データN0=r9゜が設定される。属性
データLOについ’7. t o == rIJが設定
される。この後、処理は行番号9へ分岐し、したがって
逆上りフラグ−「0」が設定される。行番号10に(i
逆上r)フラグ−「1」が設定される。行番号rl I
Jは分岐元命令であり、行番号データN0−r4jが設
定される。この行番号4の命令は現時点では属性間1の
範囲にありしたがって属性データt o = r l
」が設定されるこの後、処理は行番号・1ハ、杼る。こ
のため逆上りフラグおよび順下りフラグはrO,、rl
jとなる。これ以降、行番号5〜10には逆上リフラフ
−「0」またはrl、のいずれかか設定されろこの後、
処理は行番号11に到達する。分岐先は行番号5のn
S I(K5令にYり行番号1に変更されており、した
かつて属性間2が増設され、逆上りフラグ−「2」が設
定される。また行番号データNO= r 1 jと属性
データf−o−rl」が設定される。
「1」として設定される。行番号3は分岐命令であり、
分岐先の行番号データN0=r9゜が設定される。属性
データLOについ’7. t o == rIJが設定
される。この後、処理は行番号9へ分岐し、したがって
逆上りフラグ−「0」が設定される。行番号10に(i
逆上r)フラグ−「1」が設定される。行番号rl I
Jは分岐元命令であり、行番号データN0−r4jが設
定される。この行番号4の命令は現時点では属性間1の
範囲にありしたがって属性データt o = r l
」が設定されるこの後、処理は行番号・1ハ、杼る。こ
のため逆上りフラグおよび順下りフラグはrO,、rl
jとなる。これ以降、行番号5〜10には逆上リフラフ
−「0」またはrl、のいずれかか設定されろこの後、
処理は行番号11に到達する。分岐先は行番号5のn
S I(K5令にYり行番号1に変更されており、した
かつて属性間2が増設され、逆上りフラグ−「2」が設
定される。また行番号データNO= r 1 jと属性
データf−o−rl」が設定される。
(f)分岐瓦間i (i=1,2.・・・)この分岐瓦
間のデータは分岐先命令とについて設定され、分岐先の
行番号データNoと、当該分岐命令の直前の60令が属
する属性間番号f’rと、分岐先命令の属する属性間番
号t、 oとがそれぞれ設定される。
間のデータは分岐先命令とについて設定され、分岐先の
行番号データNoと、当該分岐命令の直前の60令が属
する属性間番号f’rと、分岐先命令の属する属性間番
号t、 oとがそれぞれ設定される。
以下、分岐瓦間のデータと属性間のデータとを用いて第
4艮のプロゲラ11例で逆上り解析可能であることを説
明する。逆上りフラグ−「T」について逆上ると、行番
号って逆上りフラグ−「0」となるので分岐瓦間を参照
し、行番号3の属性間1から分岐していることが理解さ
れる。さ−,に逆上り1行番号lですべての情報が確定
ずろ。したがって逆上りフラグ−「1」に関する経路は
行番号10→9→3→2−1となり、そ1)処理内容は
、IPORT1+Oi +1→[PORTl+OE
・(1)となることが理解される。
4艮のプロゲラ11例で逆上り解析可能であることを説
明する。逆上りフラグ−「T」について逆上ると、行番
号って逆上りフラグ−「0」となるので分岐瓦間を参照
し、行番号3の属性間1から分岐していることが理解さ
れる。さ−,に逆上り1行番号lですべての情報が確定
ずろ。したがって逆上りフラグ−「1」に関する経路は
行番号10→9→3→2−1となり、そ1)処理内容は
、IPORT1+Oi +1→[PORTl+OE
・(1)となることが理解される。
次に逆上りフラグ−「2」について逆上ると、まず属性
間2が参照されるが、行番号0にて逆上りフラグ=「1
」に変更されるので、行番号8については属性f171
1が参照される。これ以降、前述と同様に逆上って読取
り、行番号6にてすべての情報が確定する。これによれ
ば処理内容は、[PORT2+O] +1l−1→[p
op’r2+o] (2)となることが理解さ
れる。
間2が参照されるが、行番号0にて逆上りフラグ=「1
」に変更されるので、行番号8については属性f171
1が参照される。これ以降、前述と同様に逆上って読取
り、行番号6にてすべての情報が確定する。これによれ
ば処理内容は、[PORT2+O] +1l−1→[p
op’r2+o] (2)となることが理解さ
れる。
第4図は流り横道解析手段11の勤(1:を説明するフ
ローチャートである。流れ構造解析手段11の動IYの
(Qli13は上記第2表〜第4表を参照して説明した
が、以下にその動作を詳述する。第4図ステップc1で
は解析を開始する行番号enを所定の値に設定し、また
各種データを所定の値に初期1ヒする。ステップc2て
は処理が最経行までr11達したか否かを判断する。到
達していなければ%埋はステップc3に移り、現在解析
の対象となっている命令の行番号Nnに関して設定され
る属性間の個数を表す配列CZ[nn]が0であるが否
がを判断する。個数配列CZが0であれば、初めて解析
する命令であることを意味する。
ローチャートである。流れ構造解析手段11の動IYの
(Qli13は上記第2表〜第4表を参照して説明した
が、以下にその動作を詳述する。第4図ステップc1で
は解析を開始する行番号enを所定の値に設定し、また
各種データを所定の値に初期1ヒする。ステップc2て
は処理が最経行までr11達したか否かを判断する。到
達していなければ%埋はステップc3に移り、現在解析
の対象となっている命令の行番号Nnに関して設定され
る属性間の個数を表す配列CZ[nn]が0であるが否
がを判断する。個数配列CZが0であれば、初めて解析
する命令であることを意味する。
ステップc3の判断が否定であれば処理はステップc4
に移り、属性間の個数を1つ増加する。
に移り、属性間の個数を1つ増加する。
ステップc5では第4氏を参照して説明した属性データ
を設定する。ステップc6では行番号inの命令が分岐
先行であるが否がを判断する。分岐先行であればステッ
プc7で第・1表行番号4の命令における分岐元欄1な
どの分岐穴間を設定し、ステップc8に移る。ステップ
c6の判断が否定であればステップC9に移り、前記逆
上りフラグやl1li下りフラグを設定する。
を設定する。ステップc6では行番号inの命令が分岐
先行であるが否がを判断する。分岐先行であればステッ
プc7で第・1表行番号4の命令における分岐元欄1な
どの分岐穴間を設定し、ステップc8に移る。ステップ
c6の判断が否定であればステップC9に移り、前記逆
上りフラグやl1li下りフラグを設定する。
以下、上記逆上りフラグと順下りフラグとについて説明
する。第5(2Iは流れ制御ファイル記色部12のfI
lI造を説明する図である。流れ制量ファイル記憶部I
2は、分岐元ファイル部2■と属性ファイル部22とか
ら構成される。第6図は分岐元ファイル部21の構造を
説明する図である。分岐元ファイル部21は行番号毎に
設けられ、当該行番号を分岐先とする分岐元命令の個数
を記1・3する分岐元個数記憶部23と、第4表を参照
して説明した分岐穴間に相当する分岐元個記憶部24か
たとえば80領域設定される。分岐条件記憶部2!1は
行番号記憶部25、分岐元個数記憶部20、分岐先属性
記憶部27を含んで構成される。
する。第5(2Iは流れ制御ファイル記色部12のfI
lI造を説明する図である。流れ制量ファイル記憶部I
2は、分岐元ファイル部2■と属性ファイル部22とか
ら構成される。第6図は分岐元ファイル部21の構造を
説明する図である。分岐元ファイル部21は行番号毎に
設けられ、当該行番号を分岐先とする分岐元命令の個数
を記1・3する分岐元個数記憶部23と、第4表を参照
して説明した分岐穴間に相当する分岐元個記憶部24か
たとえば80領域設定される。分岐条件記憶部2!1は
行番号記憶部25、分岐元個数記憶部20、分岐先属性
記憶部27を含んで構成される。
第7図は属性ファイル部22の構造を説明する図である
。属性ファイル部22は各行番号毎に設けられ、当該行
番号に設定された属性(閘の個数を記憶する属性個数記
憶部28、当該命令行の属性データが確定すれば「l」
、不定の場合は「0」で表される不定フラグを記憶する
不定フラグ記憶部2つ、第・1表の属性間の属性データ
1.0に(1当する属性値を記憶する属性値記憶部30
、第1[71示の分岐42件ファイル記憶部16におい
て当該行番号の命令の分岐条件を記憶しているアドレス
を記↑きする分岐条件記憶部31、第4表の属性間にお
ける行番号データN Oと属性データLoとをそれぞれ
記憶する分岐先属性記憶部32、分岐先属性記憶部33
、第4表の属性間のフラグに相当する逆上りフラグを記
憶する逆上りフラグ記↑Δ部3.4 、IIfi下りフ
ラグを記憶する順下りフラグ他部35を含んで構成され
る。
。属性ファイル部22は各行番号毎に設けられ、当該行
番号に設定された属性(閘の個数を記憶する属性個数記
憶部28、当該命令行の属性データが確定すれば「l」
、不定の場合は「0」で表される不定フラグを記憶する
不定フラグ記憶部2つ、第・1表の属性間の属性データ
1.0に(1当する属性値を記憶する属性値記憶部30
、第1[71示の分岐42件ファイル記憶部16におい
て当該行番号の命令の分岐条件を記憶しているアドレス
を記↑きする分岐条件記憶部31、第4表の属性間にお
ける行番号データN Oと属性データLoとをそれぞれ
記憶する分岐先属性記憶部32、分岐先属性記憶部33
、第4表の属性間のフラグに相当する逆上りフラグを記
憶する逆上りフラグ記↑Δ部3.4 、IIfi下りフ
ラグを記憶する順下りフラグ他部35を含んで構成され
る。
前記順下りフラグは第4表のたとえば属性間1の順下り
フラグ欄に示すように設定される。ずiわち、成行番号
の命令が直後の行番号の命令と連続した命令であれば「
1」、不連続す・イ令で、p)れR’ 04を与える。
フラグ欄に示すように設定される。ずiわち、成行番号
の命令が直後の行番号の命令と連続した命令であれば「
1」、不連続す・イ令で、p)れR’ 04を与える。
第4表の行番号2は行番号3と連続する命令であり、前
記データr ]、 、+か与えられる。ところが行番号
3は行番号、4の命令とは連続せず、したがってデータ
「0」が」j・えられろ。
記データr ]、 、+か与えられる。ところが行番号
3は行番号、4の命令とは連続せず、したがってデータ
「0」が」j・えられろ。
第4図示ステップc7.c9ては、上述したような内容
を有する逆上り属性、1′1n下り属性3よび分岐穴間
が設定される。
を有する逆上り属性、1′1n下り属性3よび分岐穴間
が設定される。
まずステップc8で当該命令が分岐命9↑であるか否か
が判断される。分岐命令であれはステップc10(こT
多り、当該分岐命令が第・4表行QF、 写11RET
命令のような割込み処理を経了させる命令であるか否か
を判断する。二の判断が否定であればステップallに
移り、分岐先行番号を求める。
が判断される。分岐命令であれはステップc10(こT
多り、当該分岐命令が第・4表行QF、 写11RET
命令のような割込み処理を経了させる命令であるか否か
を判断する。二の判断が否定であればステップallに
移り、分岐先行番号を求める。
これは第■図のリストファイル記(,0部0を9 iT
Q ’。
Q ’。
て求められる。ステップ(,12では、5j−岐の数を
表す分岐数データbiを+lインクリメントし。
表す分岐数データbiを+lインクリメントし。
ステップc13では当該分岐数データ1)lと当該行番
号を配列n1、 m(bi)−L! n =1
3)で対応付ける。
号を配列n1、 m(bi)−L! n =1
3)で対応付ける。
ステップc14では、後述するようにスタックの麦1ヒ
がチエツクされる。ステップc]5て゛は属性データが
計算されステップc 16では次の行:)号を変数1’
nに設定し、処理をステップC2に戻す。前記ステップ
C8の判断が否定てあれば処理はステップc l 4に
f多る。
がチエツクされる。ステップc]5て゛は属性データが
計算されステップc 16では次の行:)号を変数1’
nに設定し、処理をステップC2に戻す。前記ステップ
C8の判断が否定てあれば処理はステップc l 4に
f多る。
前記ステップC3の判断が肯定て′あtしば当該命令+
i 1JIJめて解析する命令行てはないことになり、
ステップc17で同一属性を有する属性間が存在するか
否かが1′す断される。この4’ll ($Jiか否定
であればステップc4に秤り、属性間が増加さ!とる。
i 1JIJめて解析する命令行てはないことになり、
ステップc17で同一属性を有する属性間が存在するか
否かが1′す断される。この4’ll ($Jiか否定
であればステップc4に秤り、属性間が増加さ!とる。
ステップc17の判断が11定てあれはステップc18
に秤り、当該分岐命令が分岐先行であるか否かが判断さ
れる。分岐先行であればステップc ]、 9で、第4
表の分岐斤量が設定され、ステップC20に丁寧る。ス
テップc18の判断か否定であhはステップc21にお
いて前記ステップC9て説明した逆上りフラグおよび順
下りフラグか設定される。ここでステップc 19.
c 21ffi?&、ステップc17の判断が肯定とな
っているので同−属性間がすでに存在していることにな
り、この属性に関しては解析は終了しており、再び解析
を行うことなく解析処理が終了され、ステップC20に
%理を移している。
に秤り、当該分岐命令が分岐先行であるか否かが判断さ
れる。分岐先行であればステップc ]、 9で、第4
表の分岐斤量が設定され、ステップC20に丁寧る。ス
テップc18の判断か否定であhはステップc21にお
いて前記ステップC9て説明した逆上りフラグおよび順
下りフラグか設定される。ここでステップc 19.
c 21ffi?&、ステップc17の判断が肯定とな
っているので同−属性間がすでに存在していることにな
り、この属性に関しては解析は終了しており、再び解析
を行うことなく解析処理が終了され、ステップC20に
%理を移している。
ステップc20では前記分岐数データbiがOであるか
否かが判断される。肯定であれば処理は終了する。否定
であれば解析処理が終了していないことになり、ステッ
プC20に前記ステップC13で記憶した分岐命令の行
番号1nを前記配列m(bi)にて読出し、またステッ
プc23にて分岐数データbiを一1デクリメシトし、
処理はステップC2に戻る。すなわちステップc22で
読出された行番号Q rlから再び解析処理を行う。
否かが判断される。肯定であれば処理は終了する。否定
であれば解析処理が終了していないことになり、ステッ
プC20に前記ステップC13で記憶した分岐命令の行
番号1nを前記配列m(bi)にて読出し、またステッ
プc23にて分岐数データbiを一1デクリメシトし、
処理はステップC2に戻る。すなわちステップc22で
読出された行番号Q rlから再び解析処理を行う。
第8図は、分岐条件解析手段13の+13作を説明する
フローチャートである。上記第4kに示したプログラム
内容に即して分岐条件+!了析処理について説明する。
フローチャートである。上記第4kに示したプログラム
内容に即して分岐条件+!了析処理について説明する。
第8図ステップd1ては行番号sfnをOに設定し、ス
テップd2て゛は行番号signを+1インクリメント
する。ステップ゛d 3ては当該行番号inがプログラ
ムの最終行番号、すなわち第4表のプログラム例では行
番号11を超えたか否かを判断する。超えていれば処理
は3!ミ了し、超えていなければステップd4に移る。
テップd2て゛は行番号signを+1インクリメント
する。ステップ゛d 3ては当該行番号inがプログラ
ムの最終行番号、すなわち第4表のプログラム例では行
番号11を超えたか否かを判断する。超えていれば処理
は3!ミ了し、超えていなければステップd4に移る。
ステップ゛(」4ては?7番番号 nの命令か分岐イf
令であるがjりかを判断する。上記プログラム例ては、
行番号(は分岐命令ではなく処理はステップ1)2へ戻
り、;)′:の行番号の命令I\進む。行番弓3て分岐
命令て、ちることが1′す断され、ステップd5/\氾
む。
令であるがjりかを判断する。上記プログラム例ては、
行番号(は分岐命令ではなく処理はステップ1)2へ戻
り、;)′:の行番号の命令I\進む。行番弓3て分岐
命令て、ちることが1′す断され、ステップd5/\氾
む。
ステップ+、35では、属性間番号をkず変数kを0に
設定し、ステップd6て(ま変数kをY1インクリメン
トする。ステップ〈」7では、当該行番号i r+の命
令に関する啓性欄の個数をJIミナ配列(Z(fr+)
に関して。
設定し、ステップd6て(ま変数kをY1インクリメン
トする。ステップ〈」7では、当該行番号i r+の命
令に関する啓性欄の個数をJIミナ配列(Z(fr+)
に関して。
k S CZ (On) −(
4)の判断を行う。この+’I iII’iが否定て、
P)れζよ、第4図に示1−た流れ構造解析処理の際の
命令)汀の属性間の個数を超過したことになり、すなわ
ち当該分岐命令にI3けるすべての属性について分岐条
(′F解析が終了したことになり、処理はステップd
2 /\移つ、次の行番号の命令へ進む。
4)の判断を行う。この+’I iII’iが否定て、
P)れζよ、第4図に示1−た流れ構造解析処理の際の
命令)汀の属性間の個数を超過したことになり、すなわ
ち当該分岐命令にI3けるすべての属性について分岐条
(′F解析が終了したことになり、処理はステップd
2 /\移つ、次の行番号の命令へ進む。
ステップd7の判断が肯定であればステップ(」8へ移
り、当該行番号1nの前記命令における属性間番号kに
沿って後述する逆JHV) ’)%理を開始して逆上り
経路を求める。前述したように分岐命<↑の分岐条件を
確定するに必要な命令には、後述する関与フラグを設定
する。ステップd9では、後述するように逆上って読取
った命令海の実行内容を分岐条件として構成する。ステ
ップd 10ては、このようにして得られた分岐条件を
第1図示ノ)分岐条件ファイル記憶部16に記憶する。
り、当該行番号1nの前記命令における属性間番号kに
沿って後述する逆JHV) ’)%理を開始して逆上り
経路を求める。前述したように分岐命<↑の分岐条件を
確定するに必要な命令には、後述する関与フラグを設定
する。ステップd9では、後述するように逆上って読取
った命令海の実行内容を分岐条件として構成する。ステ
ップd 10ては、このようにして得られた分岐条件を
第1図示ノ)分岐条件ファイル記憶部16に記憶する。
第9図は、第8図のステップd8の逆−Eり処理の詳細
を説明するフローチャートである。第9図ステップel
では、後述する制御′X:数SWか0に初期化される。
を説明するフローチャートである。第9図ステップel
では、後述する制御′X:数SWか0に初期化される。
ステップe2では、上記制13Il変数S Wが0であ
るか否かを判断し、肯定であればステップe3に移り、
第4表の属性間に示される逆上りフラグをチエツクして
、逆上りフラグが0のとき制御変数S W = 2とし
、逆上りフラグがOLフ内のときS W = 1と設定
する。この後、処理はステップe2に戻る。
るか否かを判断し、肯定であればステップe3に移り、
第4表の属性間に示される逆上りフラグをチエツクして
、逆上りフラグが0のとき制御変数S W = 2とし
、逆上りフラグがOLフ内のときS W = 1と設定
する。この後、処理はステップe2に戻る。
第10図は、前記ステップヒ3の逆上り判断91埋の詳
細を説明するフローチャートで、7る。第10図ステッ
プf1では、第4表行番号3の萬性欄1の属性データt
oで示される属性欄番号を読出す。上記例ではt、 o
= r I Jであり、属性欄1が読出される。ステ
ップf2では、属性欄1の逆上りフラグの値を前記属性
データtoの値に設定する。ステップf3では、属性デ
ータtoが0であるか否かを判断する。0てあノ1ば前
行の命令とは実行順に関する連続性が失われていること
になり、ステップr4で前記制御変数S W = 2に
設定して処理は番竺了する。
細を説明するフローチャートで、7る。第10図ステッ
プf1では、第4表行番号3の萬性欄1の属性データt
oで示される属性欄番号を読出す。上記例ではt、 o
= r I Jであり、属性欄1が読出される。ステ
ップf2では、属性欄1の逆上りフラグの値を前記属性
データtoの値に設定する。ステップf3では、属性デ
ータtoが0であるか否かを判断する。0てあノ1ば前
行の命令とは実行順に関する連続性が失われていること
になり、ステップr4で前記制御変数S W = 2に
設定して処理は番竺了する。
前記ステップf3て′+II断が否定であれば、前行力
命令とは処理が連続していることになり、ステップf5
にて制御変数5W=1に設定する。ステップf6では、
行番号を表す変数inを一1デクリメントして処理を終
了する。第4表のプログラムと例の行番号3では属性デ
ータto−r I Jであり、この場合、制御変数S
W = 1となる。
命令とは処理が連続していることになり、ステップf5
にて制御変数5W=1に設定する。ステップf6では、
行番号を表す変数inを一1デクリメントして処理を終
了する。第4表のプログラムと例の行番号3では属性デ
ータto−r I Jであり、この場合、制御変数S
W = 1となる。
再び第9図を参照して、前記ステップe2の1′す断が
否定であればステップe4へ移り、制(卸変数S W
= 1であるか否かを判断する。肯定であればステップ
e5へ移り、上記分岐命令の分岐条件を確定す、るに必
要な情報が全て得られているとき、対応する逆上りフラ
グをクリアし、新たに必要な情報を対応するフラグをセ
ットする。全てのフラグがクリアされたとき、制御変数
S W = 4と設定され、これ以外のときには制御変
数S W = Oに設定される。この後、処理はステッ
プe2に戻る。
否定であればステップe4へ移り、制(卸変数S W
= 1であるか否かを判断する。肯定であればステップ
e5へ移り、上記分岐命令の分岐条件を確定す、るに必
要な情報が全て得られているとき、対応する逆上りフラ
グをクリアし、新たに必要な情報を対応するフラグをセ
ットする。全てのフラグがクリアされたとき、制御変数
S W = 4と設定され、これ以外のときには制御変
数S W = Oに設定される。この後、処理はステッ
プe2に戻る。
第11図は、前記ステップe5の逆上り情)■設定処理
の詳細を説明するフローチャートである。
の詳細を説明するフローチャートである。
第1上図ステップg1では、被解析プログラムを1行ず
つ逆上る毎に+1インクリメントされる逆上り行カウン
タrcを+1インクリメン1−・する。
つ逆上る毎に+1インクリメントされる逆上り行カウン
タrcを+1インクリメン1−・する。
ステップg2では、逆上り用カウンタcn3変数とし、
行番号Nn、属性データto、分岐欄番号ndおよび分
岐命令またはストア命令の分岐条件、またはストア条件
を確定するに必要な命<↑の行番号rnOを一時的に記
憶するワークメモリmに、先ず逆上った行番号1nを記
憶する。
行番号Nn、属性データto、分岐欄番号ndおよび分
岐命令またはストア命令の分岐条件、またはストア条件
を確定するに必要な命<↑の行番号rnOを一時的に記
憶するワークメモリmに、先ず逆上った行番号1nを記
憶する。
ステップg3では同じくワークメモリmに逆上った命令
の属性データtoを記憶する。ステップg4では、逆上
った行番号に対応する第6図示の分岐元ファイル部21
の分岐斤量21において、当該命令の属性データt、
oと同一属性l\分岐している分岐元命令の個数を計数
し、記憶する。iた、前記ワークメモリmに記憶された
分岐元命令毎に分岐元棚番号ntをワークメモリmに記
憶ずろ。
の属性データtoを記憶する。ステップg4では、逆上
った行番号に対応する第6図示の分岐元ファイル部21
の分岐斤量21において、当該命令の属性データt、
oと同一属性l\分岐している分岐元命令の個数を計数
し、記憶する。iた、前記ワークメモリmに記憶された
分岐元命令毎に分岐元棚番号ntをワークメモリmに記
憶ずろ。
ステップg5では、前記ステップg2〜g4でi:F
rr i’した各種データが必要であるか否かを判11
1’i 1−る。第4表の行番号3のCALL命令は、
無条件分岐1危令であり、したがって行番号2の上記各
種データは不・ビ・要であり、判断は否定となる。一方
、第4表行番号3が前記第1表行番号5のB B C命
令のように条件付き分岐命令であって、行番号2かその
分岐条件に関与するならばステップg7へTjす、その
ような命令毎に与えられる番号を前記ワークメモリに記
憶する。ステップg8では、前記ワークメモリ以外の情
報フラグをクリアし、ステップgつに杼る。
rr i’した各種データが必要であるか否かを判11
1’i 1−る。第4表の行番号3のCALL命令は、
無条件分岐1危令であり、したがって行番号2の上記各
種データは不・ビ・要であり、判断は否定となる。一方
、第4表行番号3が前記第1表行番号5のB B C命
令のように条件付き分岐命令であって、行番号2かその
分岐条件に関与するならばステップg7へTjす、その
ような命令毎に与えられる番号を前記ワークメモリに記
憶する。ステップg8では、前記ワークメモリ以外の情
報フラグをクリアし、ステップgつに杼る。
ステップg9では、新たな・2−要情報があるか否かが
[+11断され、あればステップg10で新たな情報フ
ラグを設定し、ステップ”gLlに仔る。前記ステップ
g5の4.II断が否定の場合、前記ワークメモリrn
(r c r n O)にはデータ「0」が設定され
、ステップgllに移る。ステップg9の判断が否定の
場合ら同様である。
[+11断され、あればステップg10で新たな情報フ
ラグを設定し、ステップ”gLlに仔る。前記ステップ
g5の4.II断が否定の場合、前記ワークメモリrn
(r c r n O)にはデータ「0」が設定され
、ステップgllに移る。ステップg9の判断が否定の
場合ら同様である。
ステップgllでは、分岐条1′!:やストア命令の内
容を確定するためにさらに新たな情報か必要か否かを表
す必要情報フラグが「0」であるか否かを判断する。す
なわち、必要情報フラグがパ1」のとき、逆上り解析処
理が出発した前記分岐命令やストア命令の実行内容か確
定したことになり、処理はステップg12へ移り、前記
制御変数S W−「4」とする。これは後述するように
、前記ワークメモリn1に記憶されたデータを第1VA
の分岐条件ファイル記憶部16に言込む処理を行うため
である。また、前記ステップg]1の判断力(否定であ
れば、処理はステップg13に秤り、制御変数sw−r
ouに設定される。こり、は後述するように、処理が第
9[2Iステツプe2へ戻ったとき、ステップe3へ移
って逆上りシ凸理を続行するためである。
容を確定するためにさらに新たな情報か必要か否かを表
す必要情報フラグが「0」であるか否かを判断する。す
なわち、必要情報フラグがパ1」のとき、逆上り解析処
理が出発した前記分岐命令やストア命令の実行内容か確
定したことになり、処理はステップg12へ移り、前記
制御変数S W−「4」とする。これは後述するように
、前記ワークメモリn1に記憶されたデータを第1VA
の分岐条件ファイル記憶部16に言込む処理を行うため
である。また、前記ステップg]1の判断力(否定であ
れば、処理はステップg13に秤り、制御変数sw−r
ouに設定される。こり、は後述するように、処理が第
9[2Iステツプe2へ戻ったとき、ステップe3へ移
って逆上りシ凸理を続行するためである。
このようにして第1図ステップe5が実行され処理はス
テップe2に戻る。前記ステップe4の判断が否定であ
ればステップe6へ移り、制御変数5W=r2Jである
か否かが判断される。この場合は、ステップe3で説明
したように、逆上りフラグ=「0」であって、行番号が
直前の命令とは処理の順序が連続していない命令である
場合を示している。このような場合には、逆上り解析処
理を分岐させる必要があるため、ステップe7に移る。
テップe2に戻る。前記ステップe4の判断が否定であ
ればステップe6へ移り、制御変数5W=r2Jである
か否かが判断される。この場合は、ステップe3で説明
したように、逆上りフラグ=「0」であって、行番号が
直前の命令とは処理の順序が連続していない命令である
場合を示している。このような場合には、逆上り解析処
理を分岐させる必要があるため、ステップe7に移る。
ステップe7では、後述するように逆上り解析処理の分
岐先の行番号を求め、制御変数S W=「1」として処
理をステップe2に戻す。
岐先の行番号を求め、制御変数S W=「1」として処
理をステップe2に戻す。
第12図は、第9図ステップe7の逆上り分岐9r!、
理の詳細を示すフローチャートである。第11図ステッ
プh1では、第11[2Iステップg 4て分岐斤量番
号が記憶されたワークメモリm [rcnd(cn)]
から分岐元欄番号を読出し、第4表に示されるような分
岐六番1などにおいて、対応する分岐元行番号データN
Oや、分岐元の属性データすなわち分岐元属性データf
rを求め、行番号1nに前記分岐元行番号データNoを
設定し、ステップh2では属性データtoに分岐元属性
データを設定する。
理の詳細を示すフローチャートである。第11図ステッ
プh1では、第11[2Iステップg 4て分岐斤量番
号が記憶されたワークメモリm [rcnd(cn)]
から分岐元欄番号を読出し、第4表に示されるような分
岐六番1などにおいて、対応する分岐元行番号データN
Oや、分岐元の属性データすなわち分岐元属性データf
rを求め、行番号1nに前記分岐元行番号データNoを
設定し、ステップh2では属性データtoに分岐元属性
データを設定する。
ステップh3では、第11図ステップg4で設定された
分岐個数データm[rc]、cnを一1デクリメントす
る。この後、ステップh4で前記制御変数sw= r
I Jとし、処理は終了する。
分岐個数データm[rc]、cnを一1デクリメントす
る。この後、ステップh4で前記制御変数sw= r
I Jとし、処理は終了する。
このように第9図ステップe7の処理が読了してステッ
プe2に戻る。ステップe6の判断が否定であればステ
ップe8に移り、制御変数SW−「3」であるか否かを
判断する。この判断が肯定であればステップe9に移り
、逆上り解析を保留している解析経路の開始行番号を求
め、制(■変数5W=r2Jとして処理をステップ62
/\戻ず。
プe2に戻る。ステップe6の判断が否定であればステ
ップe8に移り、制御変数SW−「3」であるか否かを
判断する。この判断が肯定であればステップe9に移り
、逆上り解析を保留している解析経路の開始行番号を求
め、制(■変数5W=r2Jとして処理をステップ62
/\戻ず。
第13図は第1図ステップe9の未解析データ処理の詳
細を示すフローチャートである。第13図ステラプル1
では、逆上り経路カウンタrcがrQjであるか否かを
判断する。すなわち、未解析の逆上り解析経路が残って
いるかどうかを′lJ1断する。このような未解析逆上
りルートが存在しなければステップp2に移り、制御変
’!J S W = r 5 。
細を示すフローチャートである。第13図ステラプル1
では、逆上り経路カウンタrcがrQjであるか否かを
判断する。すなわち、未解析の逆上り解析経路が残って
いるかどうかを′lJ1断する。このような未解析逆上
りルートが存在しなければステップp2に移り、制御変
’!J S W = r 5 。
として処理を終了する。ステップp1の判断が否定であ
ればステップp3に移り、逆上り経路カウンタl−Cを
−lデクリメントし、ステップp4にて第11図ステッ
プg4で説明した分岐関数ワークデータm (r c
) 、 c nがOであるか否かを判断する。Oであれ
ば処理はステップp1に戻り、他の未解析経路に関して
同様な処理を行う。
ればステップp3に移り、逆上り経路カウンタl−Cを
−lデクリメントし、ステップp4にて第11図ステッ
プg4で説明した分岐関数ワークデータm (r c
) 、 c nがOであるか否かを判断する。Oであれ
ば処理はステップp1に戻り、他の未解析経路に関して
同様な処理を行う。
ステップp4の判断が否定であればステップp5に移り
、制御変数SW−「2」に設定して処理を読了する。
、制御変数SW−「2」に設定して処理を読了する。
再び第9図を参照して、このようにしてステップe9の
未解析ルート解析処理が終了して処理はステップe2に
戻る。ステップe8の判断が否定であればステップel
oに移り、制御変数5W=r4Jであるか否かを判断す
る。肯定であれば、逆上り解析処理は想定される全ての
逆上り解析経路に関して終了していることになり、ステ
ップe11にて得られた解析経路、すなわち逆上り解析
経路を構成する各命令の行番号データを第1図の分岐条
f↑ファイル16に書込む。未解析経路か残っている場
合には、制御変数5W=r3Jと設定される。
未解析ルート解析処理が終了して処理はステップe2に
戻る。ステップe8の判断が否定であればステップel
oに移り、制御変数5W=r4Jであるか否かを判断す
る。肯定であれば、逆上り解析処理は想定される全ての
逆上り解析経路に関して終了していることになり、ステ
ップe11にて得られた解析経路、すなわち逆上り解析
経路を構成する各命令の行番号データを第1図の分岐条
f↑ファイル16に書込む。未解析経路か残っている場
合には、制御変数5W=r3Jと設定される。
第1412Iは、第9図ステップallの処理を詳述す
るフローチャートである。第11図ステップqlで前記
逆上り経路カウンタrcがOであるが否かが判断される
。0であれば、前逆上り経路に亘って解析が終了したこ
とになり、前述した経路データの記憶処理を行い、処理
は糸5了する。ステップq1の判断が否定であれば、ス
テップ(13に移り、制御変数5W=r3Jに設定して
処理を終了する。
るフローチャートである。第11図ステップqlで前記
逆上り経路カウンタrcがOであるが否かが判断される
。0であれば、前逆上り経路に亘って解析が終了したこ
とになり、前述した経路データの記憶処理を行い、処理
は糸5了する。ステップq1の判断が否定であれば、ス
テップ(13に移り、制御変数5W=r3Jに設定して
処理を終了する。
再び第9図を参照して、このようにしてステップell
でデータの書込み処理が終了して処理(よステップe2
に戻る。ステップeloの判断が否定の場合、第131
2Iステツプp2で説明したように、全解析経路に亘っ
て解析が終了していることになり、第1図ステップd8
で訛門したプログラムを逆上る経路を求める処理が終了
する。
でデータの書込み処理が終了して処理(よステップe2
に戻る。ステップeloの判断が否定の場合、第131
2Iステツプp2で説明したように、全解析経路に亘っ
て解析が終了していることになり、第1図ステップd8
で訛門したプログラムを逆上る経路を求める処理が終了
する。
第811Wステツプ(−」9では5ステップd8″C″
得られた逆上り解析経路海に分岐条件を合成する処理を
行う、上記第2表〜第3表における分岐命令は、黒条1
″IZ分岐命令であり、第1表のプログラム例1に関し
て説明する。このプログラム例の分岐命令(ま、行番号
5のBCC命令であり、i!!fi本した逆上る経路を
求める処理に従えば6番す5から出発する逆上り解析経
路として6番= 5−4.−3−2−1か?1)られろ
。
得られた逆上り解析経路海に分岐条件を合成する処理を
行う、上記第2表〜第3表における分岐命令は、黒条1
″IZ分岐命令であり、第1表のプログラム例1に関し
て説明する。このプログラム例の分岐命令(ま、行番号
5のBCC命令であり、i!!fi本した逆上る経路を
求める処理に従えば6番す5から出発する逆上り解析経
路として6番= 5−4.−3−2−1か?1)られろ
。
すなわち、行番号5の分岐命令の分岐条件(よ行番号4
て()られる、 A −#8 ≧ 0
〈5ンで、F)す、変数Aが未確定
である。行番号3で変数Aについて、 A −(A−B) (6)
の演算が行われ、未確定変数は7\、Bとなる。行番号
2〜1の命令にて A = #3 − (7)
B = #5 − (8)
か得られ、変数A、Bは確定する。したがって、これら
を合成すると、分岐条件として 3*5−8 ≧ 8
・・(9〉が得られる。
て()られる、 A −#8 ≧ 0
〈5ンで、F)す、変数Aが未確定
である。行番号3で変数Aについて、 A −(A−B) (6)
の演算が行われ、未確定変数は7\、Bとなる。行番号
2〜1の命令にて A = #3 − (7)
B = #5 − (8)
か得られ、変数A、Bは確定する。したがって、これら
を合成すると、分岐条件として 3*5−8 ≧ 8
・・(9〉が得られる。
第8図のステップdloでは、このようにしてステップ
d9で得られた分岐条件を第1図分岐条件ファイル記憶
部16に記憶する。このようにして、被解析プログラム
を分岐命令から逆上り、分岐条件を求める処理は読了す
る。
d9で得られた分岐条件を第1図分岐条件ファイル記憶
部16に記憶する。このようにして、被解析プログラム
を分岐命令から逆上り、分岐条件を求める処理は読了す
る。
また、第4表のプロゲラl、例において、実行内容を求
める処理は、第8図ステップd8で得られた逆上り解析
経路を、たとえば行番号10のST命令から開な台する
こと(こよってi号られる。得られた第1の解析経路は
、前述したように 行番号10→3→2→■ である。この経路に沿って前記分岐条件を合成した手法
と同様な技術により、実行内容を合成すると、 CPORT1+O] + 1 → [PORTl
+0 コ (10)[PORT1]は、アド
レスPORTに格納されたデータを示す。
める処理は、第8図ステップd8で得られた逆上り解析
経路を、たとえば行番号10のST命令から開な台する
こと(こよってi号られる。得られた第1の解析経路は
、前述したように 行番号10→3→2→■ である。この経路に沿って前記分岐条件を合成した手法
と同様な技術により、実行内容を合成すると、 CPORT1+O] + 1 → [PORTl
+0 コ (10)[PORT1]は、アド
レスPORTに格納されたデータを示す。
が得られる。すなわちアドレスPORTIにプリセット
データ0を加えたアドレスの内容にデータlを加えたも
のを同一アドレスに再び格納する処理、すなわちアドレ
スPORTIのデータを+1fシクリメントする処理を
示している。
データ0を加えたアドレスの内容にデータlを加えたも
のを同一アドレスに再び格納する処理、すなわちアドレ
スPORTIのデータを+1fシクリメントする処理を
示している。
池の解析経路は、
行番号10→9→8→(5→5−・4
となる。この経路に沿って実行内容を合成すると、IP
OR,T2+O] + 1 −ト 】
→ [P ORT 2 + O]〈11〉 となり、アドレスP OIt T 2のデータを21″
つインクリメントする処理であることが+1ろ。二のよ
うな実行内容のデータは 第1図の実行内容ファイル記
憶部17に記憶される。
OR,T2+O] + 1 −ト 】
→ [P ORT 2 + O]〈11〉 となり、アドレスP OIt T 2のデータを21″
つインクリメントする処理であることが+1ろ。二のよ
うな実行内容のデータは 第1図の実行内容ファイル記
憶部17に記憶される。
以上のようにして本実施例に従えば、上記第2に〜第4
表や第5121〜第7図に示した分岐斤量の各データや
属性1閘を構成する各データを、逆上り解析処理に先立
って設定するようにしたので、逆上り解析時においてフ
゛ログラl\の実行順序に矛盾する不所望な逆上り解析
経路が准択されて、!!!、駄な処理が行われる事態を
防ぐことができる。
表や第5121〜第7図に示した分岐斤量の各データや
属性1閘を構成する各データを、逆上り解析処理に先立
って設定するようにしたので、逆上り解析時においてフ
゛ログラl\の実行順序に矛盾する不所望な逆上り解析
経路が准択されて、!!!、駄な処理が行われる事態を
防ぐことができる。
また本実施例では、前記第2表に示した10グラノ、例
の行番号9〜11のサブルーチンプログラムAのように
、行番号3のCA L L uiF令で呼出されるとと
もに、行番号6のCA L L 命令てB・ト出された
サブルーチンプログラムBが呼出されることにより再び
実行されるような命令列にわいて、複数の分岐命令毎に
解析経路を識別する属性データを設定するようにしてい
る。
の行番号9〜11のサブルーチンプログラムAのように
、行番号3のCA L L uiF令で呼出されるとと
もに、行番号6のCA L L 命令てB・ト出された
サブルーチンプログラムBが呼出されることにより再び
実行されるような命令列にわいて、複数の分岐命令毎に
解析経路を識別する属性データを設定するようにしてい
る。
したがって、このようなサブルーチンプログラムの中か
ら逆上り解析処理を行うに際して、CALL命令などの
呼出し箇所に応じた解析経路を設定することができ、誤
った解析経路が設定される事態を防ぐことができる。
ら逆上り解析処理を行うに際して、CALL命令などの
呼出し箇所に応じた解析経路を設定することができ、誤
った解析経路が設定される事態を防ぐことができる。
以下、第4表の属性欄における願下がりフラグについて
説明する。
説明する。
第15図はこの願下がりフラグを用いる理由を説明する
プログラム例を示すフローチャートであり、第16[J
は第15図示のプログラム実行時に用いられるスタック
36の記憶内容を説明する図である。メインルーチ〉′
プログラム例の実行llIにサブルーチンプログラムが
呼出されると、第!6図(1)に示すようにスタック3
6には戻りア1でレスが格納されてスタックポインタは
+1インクリメントされ、処理はたとえば第15図示の
サブルーチンプログラムに移る。
プログラム例を示すフローチャートであり、第16[J
は第15図示のプログラム実行時に用いられるスタック
36の記憶内容を説明する図である。メインルーチ〉′
プログラム例の実行llIにサブルーチンプログラムが
呼出されると、第!6図(1)に示すようにスタック3
6には戻りア1でレスが格納されてスタックポインタは
+1インクリメントされ、処理はたとえば第15図示の
サブルーチンプログラムに移る。
第15図のサブルーチンプロゲラl\において、ステッ
プr1でスタック36に新たなアドレスデータを書込む
ブツシュ命令P S Hが実行されると、スタック36
には第16図(2)図示のようにアドレスデータが書込
まれ、スタックポインタは一ト1インクリメントされる
。これ以降、処理がステップr2.r3.r4.r5と
進行した場合、スタック36から最新に書込まれたアド
レスデータを読出してスタックポインタを一1デクリメ
ントするプル命令PULLによりスタック36では、第
16Thli!(3)に示すように前記アドレスデータ
が消去され、戻りアドレスのみが残る状態となろ。
プr1でスタック36に新たなアドレスデータを書込む
ブツシュ命令P S Hが実行されると、スタック36
には第16図(2)図示のようにアドレスデータが書込
まれ、スタックポインタは一ト1インクリメントされる
。これ以降、処理がステップr2.r3.r4.r5と
進行した場合、スタック36から最新に書込まれたアド
レスデータを読出してスタックポインタを一1デクリメ
ントするプル命令PULLによりスタック36では、第
16Thli!(3)に示すように前記アドレスデータ
が消去され、戻りアドレスのみが残る状態となろ。
第15図示のようなサブルーチンプログラムにおいて、
前記スタック操作命令P S Hとスタック操作命令P
ULLとが単一のサブルーチンプログラム内で1個ずつ
組となっているか否かを検査し上うとする場合を想定す
る。このとき逆上り処理では、下記の3種類の経路が存
在する。
前記スタック操作命令P S Hとスタック操作命令P
ULLとが単一のサブルーチンプログラム内で1個ずつ
組となっているか否かを検査し上うとする場合を想定す
る。このとき逆上り処理では、下記の3種類の経路が存
在する。
行番号R7,R6・・・り12)
行番号R7,R6,R2,R1・・(13)行番号R7
,R5,R4,λ3.R2,R1・・(14)である。
,R5,R4,λ3.R2,R1・・(14)である。
したがって、前記検査を行う場合、第12式の経路につ
いても検査することになり、スタック操作命令に全く関
係を有さない無駄な検査を行ってしまうことになる。し
たがって、前記のような検査を行う場合、プログラムの
実行順に命令を読取って検査を行う手法が無駄な173
哩を省て点で有利である。
いても検査することになり、スタック操作命令に全く関
係を有さない無駄な検査を行ってしまうことになる。し
たがって、前記のような検査を行う場合、プログラムの
実行順に命令を読取って検査を行う手法が無駄な173
哩を省て点で有利である。
このため本実施例では、第4表の属性欄における順下が
りフラグを設定するようにした。このlli下がりフラ
グは、前述したように、ある命令か次の行番号の命令と
実行順序に関して連続した命令であるか否かを識別する
フラグである。このj′旧下がりフラグを前述の実施例
において説明した逆上りフラグと同様な手法にて用いる
ことにより、被解析プログラムを順下がりの経路にて読
取って解析を行うことができる。これにより無駄な処理
は省かれ、処理の高速化と高効率1ヒとを図ることがで
きる。
りフラグを設定するようにした。このlli下がりフラ
グは、前述したように、ある命令か次の行番号の命令と
実行順序に関して連続した命令であるか否かを識別する
フラグである。このj′旧下がりフラグを前述の実施例
において説明した逆上りフラグと同様な手法にて用いる
ことにより、被解析プログラムを順下がりの経路にて読
取って解析を行うことができる。これにより無駄な処理
は省かれ、処理の高速化と高効率1ヒとを図ることがで
きる。
前述の第4表のプログラム例において、サブルーチンプ
ロゲラA Aに対し、複数のCALL命令が配置される
場合、同表の分岐元間および属性欄は、CALL命令の
数だけ設定されることになる。
ロゲラA Aに対し、複数のCALL命令が配置される
場合、同表の分岐元間および属性欄は、CALL命令の
数だけ設定されることになる。
このようなサブルーチンプログラムがその中でスタック
の1”]容を変化させないならば、異なるCALL命令
によって呼出された場合でも実行内容は同一であり、こ
のような場合には後述するように分岐元間および属性欄
に割りあてられるメモリの容量を削減することができる
。
の1”]容を変化させないならば、異なるCALL命令
によって呼出された場合でも実行内容は同一であり、こ
のような場合には後述するように分岐元間および属性欄
に割りあてられるメモリの容量を削減することができる
。
このような本実施例の動作例を、下記第5表のプログラ
ム例に1イー1って説明する。
ム例に1イー1って説明する。
(以下余白)
上記の第5表の分岐元間および属性間のデータは、上記
第4表を参照して説明したデータの設定方法に基づいて
設定されている。ここで前述したように、分岐元間およ
び属性間に割りあてられるメモリの容量を削減するため
に、第5表のプロゲラl、閏に基づいて下記第6表のよ
うな分岐元間および属性間を作成する。
第4表を参照して説明したデータの設定方法に基づいて
設定されている。ここで前述したように、分岐元間およ
び属性間に割りあてられるメモリの容量を削減するため
に、第5表のプロゲラl、閏に基づいて下記第6表のよ
うな分岐元間および属性間を作成する。
第 6 表
上記第5表と第6表とでは、
下線を1+rしたデー
タが変更されている。すなわち、行番号3のCALL命
令とこれより分岐した行番号8〜10の命令列、および
リターン命令RETによりさらに分岐した行番号4に関
する分岐元間や属性間の決定に関しては、上記第5表と
同様に設定される。引続き行番号6を読取ったとき、行
番号8に分岐する。
令とこれより分岐した行番号8〜10の命令列、および
リターン命令RETによりさらに分岐した行番号4に関
する分岐元間や属性間の決定に関しては、上記第5表と
同様に設定される。引続き行番号6を読取ったとき、行
番号8に分岐する。
第4表の例では新たな分岐元憫2および属性間2が設定
されるが、本実施例は同一のザフルーチンブログラムを
解析するため、このようむ分岐元間および属性間の増加
を行わ〕′、分岐元間1の行番号8において、行番号デ
ータNO=「O」と設定し、また行番号4の属性データ
fr=’O」と設定する。さらに、行番号8の属性1i
to−’0」と設定する。このようなデータ「0」を用
いて、行番号6のCA L L命令に基づく行番号8〜
lOのサブルーチンプログラムの解析を終了したことを
表示する。
されるが、本実施例は同一のザフルーチンブログラムを
解析するため、このようむ分岐元間および属性間の増加
を行わ〕′、分岐元間1の行番号8において、行番号デ
ータNO=「O」と設定し、また行番号4の属性データ
fr=’O」と設定する。さらに、行番号8の属性1i
to−’0」と設定する。このようなデータ「0」を用
いて、行番号6のCA L L命令に基づく行番号8〜
lOのサブルーチンプログラムの解析を終了したことを
表示する。
このとき、属性欄乙同様に、行番号1−2→3→8−9
→10→4→5までの解析が終了した段階では、第5表
の属性間1のようなデータが設定されるが、行番号6以
降の前述のような処理によ一ンて属性!112を増設せ
ず、第6表の属性間(のようなデータが設定される。
→10→4→5までの解析が終了した段階では、第5表
の属性間1のようなデータが設定されるが、行番号6以
降の前述のような処理によ一ンて属性!112を増設せ
ず、第6表の属性間(のようなデータが設定される。
逆上り処理にあたって、行番号8の分岐元間1の行番号
データNoが参照されるとこれは「0」であるため、分
岐元行番号が不明となる。したがって、前述した分岐元
111才3よび属性間を作成する処理において、行番号
8に分岐する分岐元命令の行番号の次の行番号、すなわ
ち第5喪の例では行計号5.7をファーストインラスト
アウI−(FIL O)形のメモリに記憶する。したが
って、逆上り解析時において、分岐元間で行番号データ
「O」のデータが参照された場合には、前記行番号を記
憶したFILO形メモヅメモリータを読出して逆上り処
理における分岐先行番号とする。
データNoが参照されるとこれは「0」であるため、分
岐元行番号が不明となる。したがって、前述した分岐元
111才3よび属性間を作成する処理において、行番号
8に分岐する分岐元命令の行番号の次の行番号、すなわ
ち第5喪の例では行計号5.7をファーストインラスト
アウI−(FIL O)形のメモリに記憶する。したが
って、逆上り解析時において、分岐元間で行番号データ
「O」のデータが参照された場合には、前記行番号を記
憶したFILO形メモヅメモリータを読出して逆上り処
理における分岐先行番号とする。
このようにすることによって、流れ制御ファイル記憶部
12において、分岐元間および属性間に割当てられるメ
モリの容量を削減することができる。
12において、分岐元間および属性間に割当てられるメ
モリの容量を削減することができる。
前記第一1表のプログラム例における実行内容は、行番
号3,5.11などの分岐命令やスタックの内容を操作
する命令などによって変1ヒするスタックの記憶内容に
大きく作用されることが知られている。このようなスタ
ックク)内容を予め属性間のデータとしてまとめておく
と、プログラムの解析上便利である。とりわけ前記第4
表の行番号5のP S H命令や、これと対を戊すP
U L L 命令などのようにスタックの内容を変化さ
せる命令が含まれる場合には、プログラムの実行状態の
変化が明瞭になり、プログラム解析経路の特定が容易に
なる。
号3,5.11などの分岐命令やスタックの内容を操作
する命令などによって変1ヒするスタックの記憶内容に
大きく作用されることが知られている。このようなスタ
ックク)内容を予め属性間のデータとしてまとめておく
と、プログラムの解析上便利である。とりわけ前記第4
表の行番号5のP S H命令や、これと対を戊すP
U L L 命令などのようにスタックの内容を変化さ
せる命令が含まれる場合には、プログラムの実行状態の
変化が明瞭になり、プログラム解析経路の特定が容易に
なる。
上記第4表と同一の10グラl\例に!3いて、当該プ
ログラムの各命令毎に下記第7表のようなアドレスが設
定される場合を想定して説明する。
ログラムの各命令毎に下記第7表のようなアドレスが設
定される場合を想定して説明する。
(以下余白)
本実施例では、分岐斤量および属性面のデータは第4表
のデータを用いるが、これに加えスタックの内容が変化
する命令がある場合には、その命令により変化したスタ
ックの内容をデータとするスタックデータV A L
(7)1mを設ける。これによれば、行番号3で行番号
9/\分岐するが、このときスタックにはデータ#FO
O7が格納される。したがって、行番号9〜11のVA
L欄には、当該アドレス#FOO7の上位パイ1〜およ
び下位バイトを転換したデータVAL−r07FOjか
そtしぞれ設定される。
のデータを用いるが、これに加えスタックの内容が変化
する命令がある場合には、その命令により変化したスタ
ックの内容をデータとするスタックデータV A L
(7)1mを設ける。これによれば、行番号3で行番号
9/\分岐するが、このときスタックにはデータ#FO
O7が格納される。したがって、行番号9〜11のVA
L欄には、当該アドレス#FOO7の上位パイ1〜およ
び下位バイトを転換したデータVAL−r07FOjか
そtしぞれ設定される。
行番号11から行番号4へ処理が戻り、次に行番号5に
t3いてスタックの記憶内容が行番号17)アドレス#
FOOOに変更される。したがって。
t3いてスタックの記憶内容が行番号17)アドレス#
FOOOに変更される。したがって。
これ以降の行番号4〜8の属性11711にわいては、
スタックデータVAL= roOFO」が設定される。
スタックデータVAL= roOFO」が設定される。
行番号8にて、新たな属性面2が設定され、引続きスタ
ックデータVAL−rOOFO」が設定される。
ックデータVAL−rOOFO」が設定される。
以上のようにして本実施例によれば、属性面にスタック
のデータを設定するようにしたので、たとえばサブルー
チン命令のメインルーチンへの復J1命令RETから逆
上り処理を行う場合、前記メインルーチンへの復帰先は
、スタックデータVALを参照すれば判明し、各命令を
逆上って順次的に解析して検知する必要が解消される。
のデータを設定するようにしたので、たとえばサブルー
チン命令のメインルーチンへの復J1命令RETから逆
上り処理を行う場合、前記メインルーチンへの復帰先は
、スタックデータVALを参照すれば判明し、各命令を
逆上って順次的に解析して検知する必要が解消される。
これにより処理の高速化が図られる。また、前記スタッ
クデータVALを用いれば、各命令毎に設定される属性
の種類および処理経路等の属性の識別が格段に容易とな
る。
クデータVALを用いれば、各命令毎に設定される属性
の種類および処理経路等の属性の識別が格段に容易とな
る。
第8図ステップd9において、分岐条件を合成して第1
図に示すフローチャー1・作成手段19や実行内容解析
結果出力手段20などから、当該得られた結果を論理式
の結合した形式としてフローチャートやPAD図の形式
で出力したつ、または実行内容を印字出力したりする場
合、被解析プログラムが長くなるほどその出力量が膨大
となる。
図に示すフローチャー1・作成手段19や実行内容解析
結果出力手段20などから、当該得られた結果を論理式
の結合した形式としてフローチャートやPAD図の形式
で出力したつ、または実行内容を印字出力したりする場
合、被解析プログラムが長くなるほどその出力量が膨大
となる。
したがって、これらの論理式で記述される出力をプール
代数を用いて簡易な形に整理する技術が必要となる。
代数を用いて簡易な形に整理する技術が必要となる。
第14[2Iは、このような実施例を説明ずろフローチ
ャートである。フローチャー1〜作成手段]9や実行内
容解析結果出力手段20からの出力かたとえば下式、 F2 = C(A+(A−B)) −(C1A B)
+ A r’(〈15) のような論理記号の結合した論理式として与えられてい
るt%音、これを簡約化するには以下のyt4 F+!
!を行う。二の簡約化処理の基本方針は下記の第16式
と第17式とである。
ャートである。フローチャー1〜作成手段]9や実行内
容解析結果出力手段20からの出力かたとえば下式、 F2 = C(A+(A−B)) −(C1A B)
+ A r’(〈15) のような論理記号の結合した論理式として与えられてい
るt%音、これを簡約化するには以下のyt4 F+!
!を行う。二の簡約化処理の基本方針は下記の第16式
と第17式とである。
A + A = U (
16)A+A−g=A+g ・〈
17)U;全体集合 A、Uの部分集合 A、Aの補集合 g;単項 ・:論理積演算 +;論理和演算 第15[]は、上記第16式と第17式の内容を説明す
るペン図である。上記第16式は、全体qコ合Uに」づ
いて、部分束A Aとその補集きAとの和集合が常に全
体集合となる意味である。また、上記第17式は部分集
合Aと単項gとが互いに素であるならば、補集合Aと単
項gとの積集キと集金人とは集合Aと単項gとの和集合
になる意味である。
16)A+A−g=A+g ・〈
17)U;全体集合 A、Uの部分集合 A、Aの補集合 g;単項 ・:論理積演算 +;論理和演算 第15[]は、上記第16式と第17式の内容を説明す
るペン図である。上記第16式は、全体qコ合Uに」づ
いて、部分束A Aとその補集きAとの和集合が常に全
体集合となる意味である。また、上記第17式は部分集
合Aと単項gとが互いに素であるならば、補集合Aと単
項gとの積集キと集金人とは集合Aと単項gとの和集合
になる意味である。
このような上記第16式および第17式の基本方式に基
づいて、上記第15式を簡約化する手順について第17
図のフローチャートを9照して説明する。第17(2I
ステツプs1にわいて、各項を分解する。これにより上
記第1式は下記第18式に変化される。
づいて、上記第15式を簡約化する手順について第17
図のフローチャートを9照して説明する。第17(2I
ステツプs1にわいて、各項を分解する。これにより上
記第1式は下記第18式に変化される。
F = C−A +C−A−B +C−A + C−A
−n + AB・・(18) 次にステップS2にて共通項があるか否かが判断される
。先ず第18式の第1項および第2項について、共通項
Cがあることが判断され、ステップs3で0でくくられ
、下記第19式が得られる。
−n + AB・・(18) 次にステップS2にて共通項があるか否かが判断される
。先ず第18式の第1項および第2項について、共通項
Cがあることが判断され、ステップs3で0でくくられ
、下記第19式が得られる。
C(A+AB)
−(+9)次にステップs4では、前記第16式およ
び第17式に基づく合成パターンがあるか否かが判断さ
れる。第19式の0内では、第17式に基づく構成が可
能であり、判断が肯定となり、ステップS5に移り、下
記第20式のように合成される。
−(+9)次にステップs4では、前記第16式およ
び第17式に基づく合成パターンがあるか否かが判断さ
れる。第19式の0内では、第17式に基づく構成が可
能であり、判断が肯定となり、ステップS5に移り、下
記第20式のように合成される。
前記ステップs4で合成パターンがないことが判断され
ると、ステップs6に移り、他に0でくくれる同−項が
あるか否かが判11fiされ、なければステップs3に
移る。下記第20式の州では、0内でこれ以上の合成バ
ク−〉がす<、処理はステップslに戻され、()が分
解され、下記第21式が得られる。
ると、ステップs6に移り、他に0でくくれる同−項が
あるか否かが判11fiされ、なければステップs3に
移る。下記第20式の州では、0内でこれ以上の合成バ
ク−〉がす<、処理はステップslに戻され、()が分
解され、下記第21式が得られる。
C(A十B)
−<20)C−A +CB
・(21)次に第21式第1項と第18式第4項とに関
して、前記ステップs2.ステップS3の処理が適用さ
れ、下記第22式が得られる。
−<20)C−A +CB
・(21)次に第21式第1項と第18式第4項とに関
して、前記ステップs2.ステップS3の処理が適用さ
れ、下記第22式が得られる。
CA −ト CA −A (C十C)
(22〉次のス
テップs4.s5にて上記第16式の基本方針が適用さ
れ、下記第23式がマ)られる。
(22〉次のス
テップs4.s5にて上記第16式の基本方針が適用さ
れ、下記第23式がマ)られる。
A・ (C+C) −A
〈23)次に第21式第2項と第18式第
4項とに関して、同様な処理が行わh、下記第24式の
結果が(号られる。
〈23)次に第21式第2項と第18式第
4項とに関して、同様な処理が行わh、下記第24式の
結果が(号られる。
CB l−C−A−B = B・ (C十C・A)=
I3C+BA(24) 次に第21式第1辺の第2項と、第18式第5項との間
で同様な処理が行われ、下記第25式が得られる。
I3C+BA(24) 次に第21式第1辺の第2項と、第18式第5項との間
で同様な処理が行われ、下記第25式が得られる。
[A + A、B = A・(B+B) = A
−(25)したがって第23式、第21式第1辺第
1項わ上び第25式より下記第26式が記/′)れる。
−(25)したがって第23式、第21式第1辺第
1項わ上び第25式より下記第26式が記/′)れる。
A十BC+A−BCCu2(J ・(26)このよ
うにして上記第16式および第17式に示す基本方針の
元で、第17図に示す処理手順に基づいて上記第15式
に示す論理式が全体集合Uに簡約化されることが確認さ
れた。このようにして第8図ステップdつで分岐条件を
合成する処理を行うにあたって、前述したようにプール
代数を用いて論理式を論理演算にて簡略化して表現する
。
うにして上記第16式および第17式に示す基本方針の
元で、第17図に示す処理手順に基づいて上記第15式
に示す論理式が全体集合Uに簡約化されることが確認さ
れた。このようにして第8図ステップdつで分岐条件を
合成する処理を行うにあたって、前述したようにプール
代数を用いて論理式を論理演算にて簡略化して表現する
。
これによりフローチャート作成手段19てフローチャー
トを作成して出力したり、または実行11容解析結果出
力手段20にて実行内容を論理式にて印字出力する場合
にあたって、実行内容を上り内容の把握が客語な形式に
て表現することかて、き、本件プログラム内容解析装置
をプロゲラl\のデバッグなどに用いる場合にきわめて
効率的である。
トを作成して出力したり、または実行11容解析結果出
力手段20にて実行内容を論理式にて印字出力する場合
にあたって、実行内容を上り内容の把握が客語な形式に
て表現することかて、き、本件プログラム内容解析装置
をプロゲラl\のデバッグなどに用いる場合にきわめて
効率的である。
発明の効果
本発明に従えば、実行内容出力手段では、前記実行内容
記憶手段に記憶された命令毎の論理式の結合された論理
式に論理演算を施し、簡約1ヒして出力する。これによ
りプログラム解析処理が効べ“1ヒされ、またこのよう
な解析処理における過誤の発生を防止することができる
。
記憶手段に記憶された命令毎の論理式の結合された論理
式に論理演算を施し、簡約1ヒして出力する。これによ
りプログラム解析処理が効べ“1ヒされ、またこのよう
な解析処理における過誤の発生を防止することができる
。
第1図は解析装置1の構成を示すブロック図、第2図は
解析準備処理手段5の動作を説明するフローチャート、
第3図は彼解析プログラム例の動作の流れ仝示すフロー
チャート、第4図は流れ構造解析手殴1■の動作を説明
するフローチャート第5図は流れ制御ファイル記憶部■
2の構成を示ず図、第6図は分岐元ファイル記f合部2
1の構成を示す図、第7図は属性ファイル記憶部22の
構成を示す図、第8(2Iは分岐条件解析手段13の動
作を説明するフローチャート、第9図は本実施例の逆上
りフラグを説明するフローチャー1へ、第1O図逆上り
処理における逆上り判断を説明する)1つ−チャー1−
、第11[2Iは逆−L l’)処理におけるデータ
設定処理を説明するフローチャート、第12図は逆上り
処理の逆上り分岐処理を説明するフローチャート、第1
3図は逆上り処理の未解析ルー]・処理の動作を説明す
るフローチャー1〜、第14図はデータ書込み処理を説
明するフローチャート、第15図は被解析プログラム例
の動作の流れを説明するフローチャート、第16図はス
タックの状態を説明する図、第17図は論理式のプール
代数を用いる簡約化処理を説明するフローチャート、第
18図は本実施例を説明するペン図、第19図はプログ
ラム例の流れを示すフローチャートである。
解析準備処理手段5の動作を説明するフローチャート、
第3図は彼解析プログラム例の動作の流れ仝示すフロー
チャート、第4図は流れ構造解析手殴1■の動作を説明
するフローチャート第5図は流れ制御ファイル記憶部■
2の構成を示ず図、第6図は分岐元ファイル記f合部2
1の構成を示す図、第7図は属性ファイル記憶部22の
構成を示す図、第8(2Iは分岐条件解析手段13の動
作を説明するフローチャート、第9図は本実施例の逆上
りフラグを説明するフローチャー1へ、第1O図逆上り
処理における逆上り判断を説明する)1つ−チャー1−
、第11[2Iは逆−L l’)処理におけるデータ
設定処理を説明するフローチャート、第12図は逆上り
処理の逆上り分岐処理を説明するフローチャート、第1
3図は逆上り処理の未解析ルー]・処理の動作を説明す
るフローチャー1〜、第14図はデータ書込み処理を説
明するフローチャート、第15図は被解析プログラム例
の動作の流れを説明するフローチャート、第16図はス
タックの状態を説明する図、第17図は論理式のプール
代数を用いる簡約化処理を説明するフローチャート、第
18図は本実施例を説明するペン図、第19図はプログ
ラム例の流れを示すフローチャートである。
Claims (1)
- 【特許請求の範囲】 複数の命令から成るプログラムの各命令を配列順とは逆
に逆上つて読取り、その内容を解析する装置において、 プログラムを逆上つて各命令の実行内容を読取る読取手
段と、 読取られた各命令の実行内容を、命令毎の実行内容に対
応する論理式の結合した論理式として記憶する実行内容
記憶手段と、 実行内容記憶手段に記憶された命令毎の論理式の結合さ
れた論理式に論理演算を施し、簡約化して出力する実行
内容出力手段とを含むことを特徴とするプログラム内容
解析装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1319451A JPH0775003B2 (ja) | 1989-12-07 | 1989-12-07 | プログラム内容解析装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1319451A JPH0775003B2 (ja) | 1989-12-07 | 1989-12-07 | プログラム内容解析装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH03179537A true JPH03179537A (ja) | 1991-08-05 |
| JPH0775003B2 JPH0775003B2 (ja) | 1995-08-09 |
Family
ID=18110349
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1319451A Expired - Fee Related JPH0775003B2 (ja) | 1989-12-07 | 1989-12-07 | プログラム内容解析装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0775003B2 (ja) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62166445A (ja) * | 1986-01-20 | 1987-07-22 | Nec Corp | デバツグ支援装置 |
| JPS63244239A (ja) * | 1987-03-31 | 1988-10-11 | Hitachi Ltd | プログラム実行経路検証方法 |
| JPS63317848A (ja) * | 1987-06-20 | 1988-12-26 | Fujitsu Ten Ltd | プログラム内容解析装置 |
| JPS63317853A (ja) * | 1987-06-20 | 1988-12-26 | Fujitsu Ten Ltd | プログラム内容解析装置 |
| JPS63317844A (ja) * | 1987-06-20 | 1988-12-26 | Fujitsu Ten Ltd | プログラム内容解析装置 |
-
1989
- 1989-12-07 JP JP1319451A patent/JPH0775003B2/ja not_active Expired - Fee Related
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62166445A (ja) * | 1986-01-20 | 1987-07-22 | Nec Corp | デバツグ支援装置 |
| JPS63244239A (ja) * | 1987-03-31 | 1988-10-11 | Hitachi Ltd | プログラム実行経路検証方法 |
| JPS63317848A (ja) * | 1987-06-20 | 1988-12-26 | Fujitsu Ten Ltd | プログラム内容解析装置 |
| JPS63317853A (ja) * | 1987-06-20 | 1988-12-26 | Fujitsu Ten Ltd | プログラム内容解析装置 |
| JPS63317844A (ja) * | 1987-06-20 | 1988-12-26 | Fujitsu Ten Ltd | プログラム内容解析装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0775003B2 (ja) | 1995-08-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2694122B2 (ja) | ソフトウェア・アプリケーションの自動テスト方法 | |
| JPH02109127A (ja) | 仕様処理方法 | |
| JPS6081641A (ja) | レジスタトレース方法 | |
| JPH11306203A (ja) | インデックス作成方法及び文書検索処理方法 | |
| CN111708572B (zh) | 一种基于Clang程序结构的控制流程图自动生成方法 | |
| WO2005015430A1 (en) | A method of processing data for a system model | |
| JPS63317848A (ja) | プログラム内容解析装置 | |
| JPH0820973B2 (ja) | プログラム内容解析装置 | |
| JPH0769856B2 (ja) | プログラム内容解析装置 | |
| JPH0769855B2 (ja) | プログラム内容解析装置 | |
| JPS63317844A (ja) | プログラム内容解析装置 | |
| CN113001538A (zh) | 一种命令解析方法及系统 | |
| JPH0775003B2 (ja) | プログラム内容解析装置 | |
| JPH0772873B2 (ja) | プログラム内容解析装置 | |
| JP2912359B1 (ja) | シミュレーション方法及びそのプログラムを記録した記録媒体 | |
| JPS6274130A (ja) | プログラム構造資料作成処理装置 | |
| JPS63138427A (ja) | 配列に対する命令のスケジユ−リング処理方式 | |
| JPH05265731A (ja) | グローバルジョブネットワーク図作成装置 | |
| JP2005107828A (ja) | ジョブフロー作成システム及びプログラム | |
| JPS63317851A (ja) | プログラム内容解析装置 | |
| JPH03177940A (ja) | プログラム内容解析装置 | |
| JPS62267842A (ja) | プログラムチエツク方式 | |
| JPH05265721A (ja) | 差分コンパイル方法および装置 | |
| JPH086993A (ja) | 工数管理システムに於ける部品番号入力及び表示方法 | |
| JPH03176737A (ja) | 各種情報ファイル作成方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |