JPH0351926A - プログラム内容解析方法 - Google Patents
プログラム内容解析方法Info
- Publication number
- JPH0351926A JPH0351926A JP1187716A JP18771689A JPH0351926A JP H0351926 A JPH0351926 A JP H0351926A JP 1187716 A JP1187716 A JP 1187716A JP 18771689 A JP18771689 A JP 18771689A JP H0351926 A JPH0351926 A JP H0351926A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- program
- flag
- instructions
- 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
- 238000000034 method Methods 0.000 title description 22
- 230000000694 effects Effects 0.000 claims description 4
- 238000004220 aggregation Methods 0.000 description 10
- 230000002776 aggregation Effects 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 101100325756 Arabidopsis thaliana BAM5 gene Proteins 0.000 description 4
- 101150046378 RAM1 gene Proteins 0.000 description 4
- 101100476489 Rattus norvegicus Slc20a2 gene Proteins 0.000 description 4
- 230000004931 aggregating effect Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
産業上の利用分野
本発明は、たとえばアセンブラ言語で記述されたプログ
ラムの内容を解析するための方法に関する。
ラムの内容を解析するための方法に関する。
従来の技術
プログラムの内容を解析するために、従来から、FOR
TRANあるいはC言語といった高級言語で記述された
プログラムを、フローチャートとして表示する装置が実
用化されている。このような高級言語では、1つの命令
で、ある程度まとまりのある実行内容が表現されるので
、そのプログラムを図形的に表現することは比較的容易
である。
TRANあるいはC言語といった高級言語で記述された
プログラムを、フローチャートとして表示する装置が実
用化されている。このような高級言語では、1つの命令
で、ある程度まとまりのある実行内容が表現されるので
、そのプログラムを図形的に表現することは比較的容易
である。
このようなフローチャートはPAD図、あるいはYAC
図などと称され、プログラムの内容を解析するために有
用である。
図などと称され、プログラムの内容を解析するために有
用である。
一方、アセンブラ言語と称され、その命令が機械語にお
ける命令と1対1に対応している言語では、1つの命令
は基本的な動作のみを表現しているので、1つのまとま
りのある実行動作は複数の命令で表現することになる。
ける命令と1対1に対応している言語では、1つの命令
は基本的な動作のみを表現しているので、1つのまとま
りのある実行動作は複数の命令で表現することになる。
たとえば、入出力ボートPORTIから入力゛された8
ビットのデータの下位7ビットが$70(「$」は16
進表示であることを表す)以上であるときにはボー1−
P O R T 1の値をストア領域RA M 1に
格納し、ボートPORTIの値が$70未満であるとき
にはボートPORTIの下位7ビソトの値とボートPO
RT2の下位4ビットの値との和をストア領域RAM
1に格納する・・・というような1口グラムをアセンブ
ラ言語で表示した場bには、第1表に示されるように複
数の命令によってそのプログラムが表現される。
ビットのデータの下位7ビットが$70(「$」は16
進表示であることを表す)以上であるときにはボー1−
P O R T 1の値をストア領域RA M 1に
格納し、ボートPORTIの値が$70未満であるとき
にはボートPORTIの下位7ビソトの値とボートPO
RT2の下位4ビットの値との和をストア領域RAM
1に格納する・・・というような1口グラムをアセンブ
ラ言語で表示した場bには、第1表に示されるように複
数の命令によってそのプログラムが表現される。
(以下余白)
第
1
表
したがって、
従来技術のアセンブラ言語のフロ
ーチャート表示装置によって、たとえば第1表のプログ
ラムの9行目までを図形的に表した場合には、第7図に
示されるフローチャートが表示されることになる。
ラムの9行目までを図形的に表した場合には、第7図に
示されるフローチャートが表示されることになる。
発明が解決しようとする課題
第7図に示されるフローチャートでは、アセンブラ言語
の1つの命令が1つの処理ステップに対応しており、各
処理ステップにおける実行内容にはまとまりがない。こ
こで処理ステップとは、フローチャートにおいて罫線で
囲まれる実行内容に相当する。したがってプログラム作
成者などにとって、このようなフローチャートではプロ
グラムを理解することが非常に困難であり、アセンブラ
警語で記述されたブ口グラムの解析には、比較的長時間
を要する. したがって本発明の目的は、上記技術的課題を解決し、
たとえばアセンブラ言語で記述されたプログラムの解析
方法を合理化し、解析時間を短縮することができるプロ
グラム内容解析方法を提供することである。
の1つの命令が1つの処理ステップに対応しており、各
処理ステップにおける実行内容にはまとまりがない。こ
こで処理ステップとは、フローチャートにおいて罫線で
囲まれる実行内容に相当する。したがってプログラム作
成者などにとって、このようなフローチャートではプロ
グラムを理解することが非常に困難であり、アセンブラ
警語で記述されたブ口グラムの解析には、比較的長時間
を要する. したがって本発明の目的は、上記技術的課題を解決し、
たとえばアセンブラ言語で記述されたプログラムの解析
方法を合理化し、解析時間を短縮することができるプロ
グラム内容解析方法を提供することである。
課題を解決するための手段
本発明は、全ての命令について、その命令を実行したと
きに与える影響を表すフラグを予めストアしておき、 分岐命令またはストア命令を検出し、 検出された前記命令に必要な情報のフラグを検出し、 その命令から1つ逆上った命令のフラグにおいて、前記
必要な情報のフラグが立っているか否かを判断し、そう
であるときにはそのフラグをリセットし、さらに新たな
条件が発生するか否かを判断し、そうであるときにはそ
の条件に対応する情報のフラグをセットして、 以降、新たな条件が発生しなくなるまで同様の動作を繰
返すことを特徴とするプログラム内容解析方法である。
きに与える影響を表すフラグを予めストアしておき、 分岐命令またはストア命令を検出し、 検出された前記命令に必要な情報のフラグを検出し、 その命令から1つ逆上った命令のフラグにおいて、前記
必要な情報のフラグが立っているか否かを判断し、そう
であるときにはそのフラグをリセットし、さらに新たな
条件が発生するか否かを判断し、そうであるときにはそ
の条件に対応する情報のフラグをセットして、 以降、新たな条件が発生しなくなるまで同様の動作を繰
返すことを特徴とするプログラム内容解析方法である。
作 用
本発明に従えば、分岐命令またはストア命令が検出され
ると、その命令からプログラムが逆上って検索され、1
つの処理ステップとして集約化される。全ての命令には
、その命令を実行したときに与える影響を表すフラグが
予めストアされている。前記検索に当たっては、このフ
ラグから必要な情報のフラグを検出し、そのフラグに対
応するフラグが立っている命令まで検索される.またこ
の検索中に新たな条件が発生した場合には、その条件に
対応するフラグをセットし、該フラグがリセットされて
新たな条件が発生しなくなるまで同様の動作を繰返し、
このようにして複数の命令が集約化されて区分される。
ると、その命令からプログラムが逆上って検索され、1
つの処理ステップとして集約化される。全ての命令には
、その命令を実行したときに与える影響を表すフラグが
予めストアされている。前記検索に当たっては、このフ
ラグから必要な情報のフラグを検出し、そのフラグに対
応するフラグが立っている命令まで検索される.またこ
の検索中に新たな条件が発生した場合には、その条件に
対応するフラグをセットし、該フラグがリセットされて
新たな条件が発生しなくなるまで同様の動作を繰返し、
このようにして複数の命令が集約化されて区分される。
このようにプログラムの内容を解析するに当た−)て、
分岐命令またはストア命令の実行内容に影響を与える実
行命令を抽出し、集約化することによって、プログラム
の内容を容易に理解することができるとともに、解析を
効率的に行うことができる。
分岐命令またはストア命令の実行内容に影響を与える実
行命令を抽出し、集約化することによって、プログラム
の内容を容易に理解することができるとともに、解析を
効率的に行うことができる。
実施例
第1図は、本発明の一実施例のフローチャート表示装M
1の構成を示すブロック図である.フローチャート表示
装置lは、ソースプログラムを記憶するための外部記憶
装置2と、外部記憶装置2に記憶されたソースプログラ
ムを読出して各種演算処理を施すための演算部3と、た
とえば陰極線管(CRT)や液晶表示装置などで実現さ
れる表示装置4と、たとえばプリンタやプロツタなどの
印字装置5とを含んで構或され、表示装置4または印字
装置5は表示手段を構成している。
1の構成を示すブロック図である.フローチャート表示
装置lは、ソースプログラムを記憶するための外部記憶
装置2と、外部記憶装置2に記憶されたソースプログラ
ムを読出して各種演算処理を施すための演算部3と、た
とえば陰極線管(CRT)や液晶表示装置などで実現さ
れる表示装置4と、たとえばプリンタやプロツタなどの
印字装置5とを含んで構或され、表示装置4または印字
装置5は表示手段を構成している。
演算部3は、インタフエイス6と、中央処理回路7とを
含む。前述した外部記憶装置2は、たとえば固定式磁気
ディスク装置であって、ソースプログラムを記憶してい
る。このソースプログラムは、アセンブラ言語で記述さ
れて才3り、インクフエイス6を介して中央処理回路7
によって読出される。
含む。前述した外部記憶装置2は、たとえば固定式磁気
ディスク装置であって、ソースプログラムを記憶してい
る。このソースプログラムは、アセンブラ言語で記述さ
れて才3り、インクフエイス6を介して中央処理回路7
によって読出される。
中央処理回路7は、たとえばマイクロコンピュータおよ
びメモリなどを含む楕或で実現され、命令解析部9、プ
ログラム構造記憶部10.命令種類記憶部11、実行内
容記憶部12、分岐条件記憶部13および作業領域14
などを含んで横成される。
びメモリなどを含む楕或で実現され、命令解析部9、プ
ログラム構造記憶部10.命令種類記憶部11、実行内
容記憶部12、分岐条件記憶部13および作業領域14
などを含んで横成される。
熟
以下、第2図のフローチャートを併せて参照して、フロ
ーチャート表示装置1の基本的な動作について説明する
。ステップa1において、外部記憶装置2に記憶されて
いるソースプログラムは、演算部3の中央処理回路7に
よって読出される。
ーチャート表示装置1の基本的な動作について説明する
。ステップa1において、外部記憶装置2に記憶されて
いるソースプログラムは、演算部3の中央処理回路7に
よって読出される。
このソースプログラムは、たとえば中央処理回路7の作
業領域14にストアされる.引続きステップa2におい
て、各命令には、一連番号(以下、行番号と称する〉が
付与される。
業領域14にストアされる.引続きステップa2におい
て、各命令には、一連番号(以下、行番号と称する〉が
付与される。
このとき各命令は、後述するように、たとえばストア命
令、入出力命令、分岐命令、あるいは演算命令などのよ
うに、その種類によって分類される。前記命令種類記憶
部11には、アセンブラ言語の全種類の命令に個別的に
対応して命令の種類が記憶されており、これが参照され
て上記分類が行われる。
令、入出力命令、分岐命令、あるいは演算命令などのよ
うに、その種類によって分類される。前記命令種類記憶
部11には、アセンブラ言語の全種類の命令に個別的に
対応して命令の種類が記憶されており、これが参照され
て上記分類が行われる。
ステップa3においては、ストアされたソースプログラ
ムから分岐命令だけが抽出され、この分岐命令に対して
一連番号(以下、分岐番号と称する)が付与される。同
様に、ステップa4ではストア領域への転送命令(スト
ア命令)が抽出され、ストア命令に対する一連番号〈以
下、ストア番号と称する〉が付与される。
ムから分岐命令だけが抽出され、この分岐命令に対して
一連番号(以下、分岐番号と称する)が付与される。同
様に、ステップa4ではストア領域への転送命令(スト
ア命令)が抽出され、ストア命令に対する一連番号〈以
下、ストア番号と称する〉が付与される。
この後、ステップs5において、抽出された分岐命令の
分岐先が演算され、その分岐先の命令に対応する行番号
(以下、分岐先番号と称する)が分岐命令行に付与され
る。また、分岐先命令行には、そこへ分岐する分岐命令
行番号(以下、分岐元番号と称する)が付与される。こ
の段階で求められたグログラム実行の流れに関する情報
(分岐先番号、分岐元番号)は、プログラム構造記憶部
10に格納される。
分岐先が演算され、その分岐先の命令に対応する行番号
(以下、分岐先番号と称する)が分岐命令行に付与され
る。また、分岐先命令行には、そこへ分岐する分岐命令
行番号(以下、分岐元番号と称する)が付与される。こ
の段階で求められたグログラム実行の流れに関する情報
(分岐先番号、分岐元番号)は、プログラム構造記憶部
10に格納される。
続いて、以下のようにしてプログラムのブロック分けが
行われる。このブロック分けとは、プログラムの実行上
、同一条件下で実行されるとみなされる命令行の集まり
を区分する作業を言い、分岐命令の次の行から分岐命令
まで、または分岐命令の次の行から分岐先命令行の直前
行まで、もしくは分岐先命令行から分岐命令行まで、ま
たは分岐先命令行から分岐先命令行の直前行までを区分
する。こうして区分された命令行では、プログラムの流
れは1つで連続している。特例として、サブルーチンコ
ール命令行は1行で独立したブロックとみなす。
行われる。このブロック分けとは、プログラムの実行上
、同一条件下で実行されるとみなされる命令行の集まり
を区分する作業を言い、分岐命令の次の行から分岐命令
まで、または分岐命令の次の行から分岐先命令行の直前
行まで、もしくは分岐先命令行から分岐命令行まで、ま
たは分岐先命令行から分岐先命令行の直前行までを区分
する。こうして区分された命令行では、プログラムの流
れは1つで連続している。特例として、サブルーチンコ
ール命令行は1行で独立したブロックとみなす。
各ブロックには、第2表で示すように、一連のブロック
番号が付与され、各行毎にそのブロック番号が記憶され
る. (以下余白〉 第 2 表 ステップa6では、前記分岐番号が付与されている各分
岐命令海に、前記第2表で示されるような、その分岐条
件を表すデータが作成される。すなわち、命令種類記憶
部11には、第3表で示されるように、全種類の分岐命
令に対して、たとえばどのフラグの値が分岐判定条件と
なっているかなどのデータが記憶されており、このデー
タを参照することによって、分岐判断するための分岐条
件を表すデータが作成される. この第3表を参照して、たとえば従来の技術において説
明した第1表のプログラムの行番号「4」の命令rBc
cJは、フラグCの値が「0」であるときに、ラベルL
BLIが付された行番号「8Jに分岐するので、その分
岐条件はフラグCとなる。
番号が付与され、各行毎にそのブロック番号が記憶され
る. (以下余白〉 第 2 表 ステップa6では、前記分岐番号が付与されている各分
岐命令海に、前記第2表で示されるような、その分岐条
件を表すデータが作成される。すなわち、命令種類記憶
部11には、第3表で示されるように、全種類の分岐命
令に対して、たとえばどのフラグの値が分岐判定条件と
なっているかなどのデータが記憶されており、このデー
タを参照することによって、分岐判断するための分岐条
件を表すデータが作成される. この第3表を参照して、たとえば従来の技術において説
明した第1表のプログラムの行番号「4」の命令rBc
cJは、フラグCの値が「0」であるときに、ラベルL
BLIが付された行番号「8Jに分岐するので、その分
岐条件はフラグCとなる。
さらにこのステップa6では、後述するように、たとえ
ばこのフラグCに影響を及ぼす命令または命令列が、行
番号を逆上って検索される。その結果、逆上った命令ま
たは命令列が集約的に表現されるべきであるときには、
集約的な表現内容が作成され、分岐条件記憶部13に格
納される。
ばこのフラグCに影響を及ぼす命令または命令列が、行
番号を逆上って検索される。その結果、逆上った命令ま
たは命令列が集約的に表現されるべきであるときには、
集約的な表現内容が作成され、分岐条件記憶部13に格
納される。
この後ステップa7では、後述するように各ストア命令
に対応して、前述した分岐命令と同様に、行番号が付さ
れた命令が逆上って処理され、前記第2表で示されるよ
うなストア条件を表すデータが作戒されるとともに、や
はり集約的な表現内容の作成が行われ、実行内容記憶部
12に格納される。
に対応して、前述した分岐命令と同様に、行番号が付さ
れた命令が逆上って処理され、前記第2表で示されるよ
うなストア条件を表すデータが作戒されるとともに、や
はり集約的な表現内容の作成が行われ、実行内容記憶部
12に格納される。
ステップa8においては、上記処理によって集約された
命令列は、1つの処理ステップとして、各処理ステップ
における罫線の座標データなどが計算される。中央処理
回路7は、この座標データに基づいて表示装置4または
印字装置5を制御し、これによってステップa9でフロ
ーチャートの作成が行われる。
命令列は、1つの処理ステップとして、各処理ステップ
における罫線の座標データなどが計算される。中央処理
回路7は、この座標データに基づいて表示装置4または
印字装置5を制御し、これによってステップa9でフロ
ーチャートの作成が行われる。
以下、ステップa6における分岐条件の集約動作を、第
3図のフローチャートに基づいて詳細に説明する。まず
ステップb1において、パラメータiの値がrlJに初
期設定される.ステップb2では、行番号iの命令が存
在するか否かが判断され、存在しない場合には、最終行
までの処理を終えたものとして処理動作が終了する.行
番号iの命令が存在する場合にはステップb3に進んで
、行番号iに分岐番号Siが存在するか否かが判断され
る。分岐番号Siが存在しない場合には、行番号iの命
令が分岐命令ではないと判断され、ステップb4でパラ
メータiが+1インクリメントされて、前述したステッ
プb2に戻り、次行についての処理が行われる.またス
テップb3において分岐番号Stが存在している場合に
は、ステップb5に進む。
3図のフローチャートに基づいて詳細に説明する。まず
ステップb1において、パラメータiの値がrlJに初
期設定される.ステップb2では、行番号iの命令が存
在するか否かが判断され、存在しない場合には、最終行
までの処理を終えたものとして処理動作が終了する.行
番号iの命令が存在する場合にはステップb3に進んで
、行番号iに分岐番号Siが存在するか否かが判断され
る。分岐番号Siが存在しない場合には、行番号iの命
令が分岐命令ではないと判断され、ステップb4でパラ
メータiが+1インクリメントされて、前述したステッ
プb2に戻り、次行についての処理が行われる.またス
テップb3において分岐番号Stが存在している場合に
は、ステップb5に進む。
したがって5たとえば前記第1表に示されるプログラム
の場合には、ステップb4において順次+1インクリメ
ントされる行番号iが4になったときに、第2表で示さ
れるように、分岐番号rljが存在するのでステップb
5に進む。
の場合には、ステップb4において順次+1インクリメ
ントされる行番号iが4になったときに、第2表で示さ
れるように、分岐番号rljが存在するのでステップb
5に進む。
ステップb5では、行番号iの分岐命令の分岐条件が前
記命令種類記憶部11の記憶内容から参照され、これに
よって行番号iの分岐命令の直接分岐条件となるデータ
が求まる。たとえば上述したプログラムでは、行番号「
4」の分岐命令「BCC」の分岐条件は第3表に示され
るように、フラグCである。
記命令種類記憶部11の記憶内容から参照され、これに
よって行番号iの分岐命令の直接分岐条件となるデータ
が求まる。たとえば上述したプログラムでは、行番号「
4」の分岐命令「BCC」の分岐条件は第3表に示され
るように、フラグCである。
さらにステップb6では、行番号Njの命令の実行内容
が命令種類記憶部11から参照され、分岐条件との関係
が判断され、分岐条件に関係していればステップb7で
分岐条件に関与している情報フラグをセットし、ステッ
プb8でその行番号がメモリに記憶される。ステップb
9では必要情報フラグ中のそのフラグがクリアされ、ス
テップblOでは新たに発生する必要情報フラグがセッ
トされる。
が命令種類記憶部11から参照され、分岐条件との関係
が判断され、分岐条件に関係していればステップb7で
分岐条件に関与している情報フラグをセットし、ステッ
プb8でその行番号がメモリに記憶される。ステップb
9では必要情報フラグ中のそのフラグがクリアされ、ス
テップblOでは新たに発生する必要情報フラグがセッ
トされる。
ここでljは、i行目の命令実行以前に実行されるj命
令前の命令行を表す。プログラムの実行は、通常、分岐
命令以外では命令行順に実行されるが、分岐命令行では
実行順が変えられる.したがってある命令の実行以前の
命令行を、プログラムの実行順の逆を辿るには、単純に
行番号順に従って辿るのではなく、分岐命令によって実
行順がどう変化されているかを判断しながら辿ってゆく
必要がある。
令前の命令行を表す。プログラムの実行は、通常、分岐
命令以外では命令行順に実行されるが、分岐命令行では
実行順が変えられる.したがってある命令の実行以前の
命令行を、プログラムの実行順の逆を辿るには、単純に
行番号順に従って辿るのではなく、分岐命令によって実
行順がどう変化されているかを判断しながら辿ってゆく
必要がある。
第1図のプログラム構造記憶部10には、前記第2表の
ようなプログラムの実行順に関する情報(次の行を実行
する命令か否か、前の行から引続き実行される命令か否
か、分岐する命令行であるか否か、さらには分岐してく
る分岐命令のある行であるか否かなど)が記憶されてお
り、この情報を参照することによって、1つ1つの命令
行を実行順の逆に辿ることが容易にできる. 前記第1表および第2表を参照して、たとえば行番号1
6の分岐命令の条件を求めるには、行番号9まで辿る必
要があるが、行番号l5の前行の14行目の命令は無条
件分岐であり、プログラムの流れとしては行番号12か
ら分岐して来る流れのみである,したがって行番号15
の前の行は行番号12となる。このとき、行番号15の
流れフラグはrQ,であり、これは直前の行から流れて
来ていないことを表し、分岐元行番号から、行番号12
がプログラム上の直前命令行であると判llIrできる
。これに対して、流れフラグがrl,であるときには、
プログラムは直前の行から流れて来ていることを表す。
ようなプログラムの実行順に関する情報(次の行を実行
する命令か否か、前の行から引続き実行される命令か否
か、分岐する命令行であるか否か、さらには分岐してく
る分岐命令のある行であるか否かなど)が記憶されてお
り、この情報を参照することによって、1つ1つの命令
行を実行順の逆に辿ることが容易にできる. 前記第1表および第2表を参照して、たとえば行番号1
6の分岐命令の条件を求めるには、行番号9まで辿る必
要があるが、行番号l5の前行の14行目の命令は無条
件分岐であり、プログラムの流れとしては行番号12か
ら分岐して来る流れのみである,したがって行番号15
の前の行は行番号12となる。このとき、行番号15の
流れフラグはrQ,であり、これは直前の行から流れて
来ていないことを表し、分岐元行番号から、行番号12
がプログラム上の直前命令行であると判llIrできる
。これに対して、流れフラグがrl,であるときには、
プログラムは直前の行から流れて来ていることを表す。
ステツ7bllでは、分岐条件が全て求められたか否か
が判断され、すなわち前述した処理動作によって、行番
号1jにおける分岐条件に関する命令列は全て収集され
たか否かが判断され、そうであるときにはステップbl
2に移る。
が判断され、すなわち前述した処理動作によって、行番
号1jにおける分岐条件に関する命令列は全て収集され
たか否かが判断され、そうであるときにはステップbl
2に移る。
ステップbl2では、行番号lj〜行番号11の命令が
集約化される。この後、ステップbl3で、パラメータ
Iの値が+1インクリメントされるとともに、パラメー
タJの値が「0」に初期設定され、前述したステップb
2に戻って同様の動作が繰返される。
集約化される。この後、ステップbl3で、パラメータ
Iの値が+1インクリメントされるとともに、パラメー
タJの値が「0」に初期設定され、前述したステップb
2に戻って同様の動作が繰返される。
ステップbllで分岐条件に関する命令が全て収集され
ていないとき、およびステップb6で行番号1jの命令
の実行内容が分岐条件に関係していないときにはステッ
プbl4に移って、パラメータJの値が+1インクリメ
ントされ、分岐条件に関する命令が全て求められるまで
同様の処理がh!返さ・れる。
ていないとき、およびステップb6で行番号1jの命令
の実行内容が分岐条件に関係していないときにはステッ
プbl4に移って、パラメータJの値が+1インクリメ
ントされ、分岐条件に関する命令が全て求められるまで
同様の処理がh!返さ・れる。
以下、第4表を参照して前記ステップb5〜ステップb
l3における動作を詳述する。
l3における動作を詳述する。
第 4 表
前記第1表で示されるプログラムにおいて、第3図で示
される動作によって最初のブロックではi=4とされて
おり、ステップb5で、逆上りフラグである必要情報フ
ラグ中のCフラグがセットされ、j−1とされて逆上り
が開始される。ステップb6では、ステッグ数jだけ前
の行、すなわち行番号「3」の実行内容が参照される。
される動作によって最初のブロックではi=4とされて
おり、ステップb5で、逆上りフラグである必要情報フ
ラグ中のCフラグがセットされ、j−1とされて逆上り
が開始される。ステップb6では、ステッグ数jだけ前
の行、すなわち行番号「3」の実行内容が参照される。
この実行内容は前記Cフラグに影響を与えるのでステッ
プb7に移り、分岐条件関与フラグがセットされ、ステ
ップb8で行番号「3」が記憶される。ステップb9で
は必要情報フラグ中のCフラグがクリアされ、ステップ
bloでは新たにAレジスタが必要情報としてセットさ
れる。ステップbllでは、lt要情報フラグにAレジ
スタのフラグがセットされているので、ステップbl4
に移り、jj+1としてステップb6に戻る。
プb7に移り、分岐条件関与フラグがセットされ、ステ
ップb8で行番号「3」が記憶される。ステップb9で
は必要情報フラグ中のCフラグがクリアされ、ステップ
bloでは新たにAレジスタが必要情報としてセットさ
れる。ステップbllでは、lt要情報フラグにAレジ
スタのフラグがセットされているので、ステップbl4
に移り、jj+1としてステップb6に戻る。
再びステップb6ではj=2すなわち行番号「2」の命
令を参照し、必要情報フラグのAレジスタに関与するか
否かが判断される。本実施例ではAレジスタに影響があ
るため、ステツ7b7〜b9へと進む.ステップb9で
は一旦Aレジスタのフラグがクリアされるが、ステップ
bloではAレジスタが条件となるレジスタと判断され
、再びAレジスタのフラグがセットされ、ステップb1
1..bl4を経て再びステップb6に戻る。
令を参照し、必要情報フラグのAレジスタに関与するか
否かが判断される。本実施例ではAレジスタに影響があ
るため、ステツ7b7〜b9へと進む.ステップb9で
は一旦Aレジスタのフラグがクリアされるが、ステップ
bloではAレジスタが条件となるレジスタと判断され
、再びAレジスタのフラグがセットされ、ステップb1
1..bl4を経て再びステップb6に戻る。
行番号「1」はAレジスタに影響するので、ステップb
7,b8を経てb9でフラグがクリアされる。なお、ス
テップb8〜b9間において、ステップb8aでは、こ
の行に分岐して来る命令があるか否かが判断される。す
なわち、前記第2表で示されるように、分岐元個数が1
以上の場合、分岐して来る命令があると判断し、ステッ
プb8bで分岐元個数およびこのときのステップ数jが
記憶される。ステップblOでは新たに発生する条件が
ないため、フラグのセットは行われず、ステップbll
では全ての情報が求められたと判断されてプログラムの
逆上りが停止され、ステップLJ12へ移り集約化が行
われる。
7,b8を経てb9でフラグがクリアされる。なお、ス
テップb8〜b9間において、ステップb8aでは、こ
の行に分岐して来る命令があるか否かが判断される。す
なわち、前記第2表で示されるように、分岐元個数が1
以上の場合、分岐して来る命令があると判断し、ステッ
プb8bで分岐元個数およびこのときのステップ数jが
記憶される。ステップblOでは新たに発生する条件が
ないため、フラグのセットは行われず、ステップbll
では全ての情報が求められたと判断されてプログラムの
逆上りが停止され、ステップLJ12へ移り集約化が行
われる。
この集約化処理はまた、第5表に示される。
(以下余白)
第
5
表
すなわち行番号「4」と行番号「3」とを集約化して表
現すると、 A≧$70 となり、さらに行番号「2」を集約すると、上記式のr
A JにrA AND $7F,が代入され、A
AND $7F≧$70 となる。さらに行番号「1」を集約すると上記式の「A
」にPORTIが代入され、 PORTI AND $7F≧$70となる。この
ようにして、行番号「4」の分岐命令の分岐条件に基づ
いて、行番号「1」〜行番号「4」の命令列が集約され
る。ステップbl2aでは、すべての道筋について集約
が行われたか否かが判断され、前記ステップb8aで記
憶された行jmが残っている場合は他の道筋があると判
断してステップbl2bを経て前記ステップb6に戻り
、ステップ数jmまで戻って再び集約のための作業が繰
返される。
現すると、 A≧$70 となり、さらに行番号「2」を集約すると、上記式のr
A JにrA AND $7F,が代入され、A
AND $7F≧$70 となる。さらに行番号「1」を集約すると上記式の「A
」にPORTIが代入され、 PORTI AND $7F≧$70となる。この
ようにして、行番号「4」の分岐命令の分岐条件に基づ
いて、行番号「1」〜行番号「4」の命令列が集約され
る。ステップbl2aでは、すべての道筋について集約
が行われたか否かが判断され、前記ステップb8aで記
憶された行jmが残っている場合は他の道筋があると判
断してステップbl2bを経て前記ステップb6に戻り
、ステップ数jmまで戻って再び集約のための作業が繰
返される。
この後、ステップbl3からステップb2に戻り、他に
分岐番号Siの付与されている行についても同様の処理
を行い、最終行まで到達したところで集約処理が終了す
ることになる.この集約処理結果は、第6表で示される
ような分岐条件ファイルとして、分岐条件記憶部l3に
記憶される.また、前記ステップa7におけるストア条
件に基づく集約処理は、上述の分岐条件に基づく集約処
理と同様の動作によって達成される。すなわち前記第5
表に示されるように、まず行番号’8ノの命令の内容と
行番号「7」の命令の内容とを集約すると、式RAM1
=Aの右辺のrAuにA一A −1− Bが代入され
て、 RAM1=A+B となる。さらに行番号「6」が集約されると、上式rB
,にB=B・#$OFが代入されて、RAM1=A+B
・#$OF と集約化される。このようにして行番号「8→7→6→
5→4→3→2→1」と辿り集約化すると、RAMl=
PORTl・#$7F+PORT2・#$OFとなる。
分岐番号Siの付与されている行についても同様の処理
を行い、最終行まで到達したところで集約処理が終了す
ることになる.この集約処理結果は、第6表で示される
ような分岐条件ファイルとして、分岐条件記憶部l3に
記憶される.また、前記ステップa7におけるストア条
件に基づく集約処理は、上述の分岐条件に基づく集約処
理と同様の動作によって達成される。すなわち前記第5
表に示されるように、まず行番号’8ノの命令の内容と
行番号「7」の命令の内容とを集約すると、式RAM1
=Aの右辺のrAuにA一A −1− Bが代入され
て、 RAM1=A+B となる。さらに行番号「6」が集約されると、上式rB
,にB=B・#$OFが代入されて、RAM1=A+B
・#$OF と集約化される。このようにして行番号「8→7→6→
5→4→3→2→1」と辿り集約化すると、RAMl=
PORTl・#$7F+PORT2・#$OFとなる。
この集約処理結果は、第7表で示されるようなストア内
容ファイルとして、実行内容記憶部12に記憶される。
容ファイルとして、実行内容記憶部12に記憶される。
また本実施例では他に、行番号「8→4−3−→2→1
」と辿る道筋があり、 RAM1=PORT1 #$7F と集約され、 同様に実行内容記憶部1 2に記憶さ れる。
」と辿る道筋があり、 RAM1=PORT1 #$7F と集約され、 同様に実行内容記憶部1 2に記憶さ れる。
上述のようにしてブロックの集約化が行われると、以下
のようにしてフローチャートが作成される。まず、フロ
ーチャートブロック情報が作或される。前述のようにプ
ログラム構造記憶部10に記憶されているプログラムの
流れに関する情報から、各ブロックの先頭および分岐命
令行が抽出される。フローチャートブロックでは、分岐
命令(サブルーチンコール、リターン命令をきむ〉は、
独立したブロックとして扱われる。こうして分割された
ブロック毎に、第8表で示されるように、その先頭行番
号が抜出される。
のようにしてフローチャートが作成される。まず、フロ
ーチャートブロック情報が作或される。前述のようにプ
ログラム構造記憶部10に記憶されているプログラムの
流れに関する情報から、各ブロックの先頭および分岐命
令行が抽出される。フローチャートブロックでは、分岐
命令(サブルーチンコール、リターン命令をきむ〉は、
独立したブロックとして扱われる。こうして分割された
ブロック毎に、第8表で示されるように、その先頭行番
号が抜出される。
第
8
表
このとき、各ブロック毎の種別(1:実行、2:条件分
岐、3;無条件分岐、4:リターン、5:サブルーチン
〉が分類され、条件分岐2および無条件分岐3の場合は
、分岐先行番号およびブロック内容ファイルの分岐条件
が記録されている箇所のレコード番号(前記分岐番号と
同一)が書込まれる。さらにこの行に分岐先があれば、
その個数が書込まれ、ストア命令があればストア内容レ
コード番号が書込まれる。
岐、3;無条件分岐、4:リターン、5:サブルーチン
〉が分類され、条件分岐2および無条件分岐3の場合は
、分岐先行番号およびブロック内容ファイルの分岐条件
が記録されている箇所のレコード番号(前記分岐番号と
同一)が書込まれる。さらにこの行に分岐先があれば、
その個数が書込まれ、ストア命令があればストア内容レ
コード番号が書込まれる。
次に、各ブロック毎に、ストア条件に間する命令のみが
抽出され、内容が集約される。本実施例では、前記第1
表で示されるプログラムは第9表で示されるように集約
される。
抽出され、内容が集約される。本実施例では、前記第1
表で示されるプログラムは第9表で示されるように集約
される。
(以下余白)
第
9
表
こめよ
うにして、
前記第6表および第9表で示
されるように、各ブロック内の命令の集約化が行われる
と、第4図で示されるように、まず開始を示すブロック
を配置した後、前記第8表で示される種別に応じたブロ
ック図形が配置される。このとき、各ブロック図形の高
さ、すなわち流れ方向の間隔は、ブロックの内容や分岐
条件のレコード数に応じて決定される。ただし無条件分
岐やリターン命令のブロックの外形は一定である.また
第4図において破線で示される、すなわち行番号rl5
.17Jは、書出すべき情報がなく、ブロックは作成さ
れない。これは、このブロック内の命令が全て分岐命令
に関与しているため、その内容が次の分岐ブロックで表
されており、しかもこのブロック内にはストアに関係し
た命令がないことを表す.したがってこれらは省略され
て、最終的には第5図で示されるフローチャートが完戒
する. このようにしてブロック図形が作或されると、次に各ブ
ロック内には、前記第6表および第9表で示されるファ
イルから呼出された内容が書込まれてゆく. また本実施例においては、各命令毎にその命令に対する
影響度を表す必要情報フラグをセットするようにしたの
で、プログラムを逆上って集約してゆくときには、この
必要情報フラグがクリアされる命令まで逆上ることによ
って、分岐命令またはストア命令の実行内容に影響を与
える命令を容易に抽出することができる。これによって
プログラム内容の解析を合理的に行うことができ、解析
時間を短縮することができる。
と、第4図で示されるように、まず開始を示すブロック
を配置した後、前記第8表で示される種別に応じたブロ
ック図形が配置される。このとき、各ブロック図形の高
さ、すなわち流れ方向の間隔は、ブロックの内容や分岐
条件のレコード数に応じて決定される。ただし無条件分
岐やリターン命令のブロックの外形は一定である.また
第4図において破線で示される、すなわち行番号rl5
.17Jは、書出すべき情報がなく、ブロックは作成さ
れない。これは、このブロック内の命令が全て分岐命令
に関与しているため、その内容が次の分岐ブロックで表
されており、しかもこのブロック内にはストアに関係し
た命令がないことを表す.したがってこれらは省略され
て、最終的には第5図で示されるフローチャートが完戒
する. このようにしてブロック図形が作或されると、次に各ブ
ロック内には、前記第6表および第9表で示されるファ
イルから呼出された内容が書込まれてゆく. また本実施例においては、各命令毎にその命令に対する
影響度を表す必要情報フラグをセットするようにしたの
で、プログラムを逆上って集約してゆくときには、この
必要情報フラグがクリアされる命令まで逆上ることによ
って、分岐命令またはストア命令の実行内容に影響を与
える命令を容易に抽出することができる。これによって
プログラム内容の解析を合理的に行うことができ、解析
時間を短縮することができる。
このようにして表現された各命令の実行内容は、各処理
ステップとして表示すべき座標データが演算され、表示
装置4または印字装W5において表示される。なお、第
5図の参照符30で示される処理ステップにおいては、
コメント文として実行内容記憶部12に記憶されている
、該当する内容を表示するようにしてもよい。
ステップとして表示すべき座標データが演算され、表示
装置4または印字装W5において表示される。なお、第
5図の参照符30で示される処理ステップにおいては、
コメント文として実行内容記憶部12に記憶されている
、該当する内容を表示するようにしてもよい。
また、サブルーチンなどの読出し命令がある場合には第
6図に示されるように、この読出し命令は1つの処理ス
テップとして表現される。この第6図は、ラベルLBL
5にサブルーチンがある場合を示している。このサブル
ーチン自体は、別途にプログラム解析し、フローチャー
ト化される.このように本実施例においては、アセンブ
ラ言語の1つの命令を1つの処理ステップとして表現す
るのではなく、一定の処理動作を行う複数の命令を集約
して1つのステップとして表現するので、プログラム全
体の流れを容易に理解することが可能なフローチャート
を表示することができる.したがって、アセンブラ言語
で記述されたプログラムの内容を容易に理解することが
できるようになる。
6図に示されるように、この読出し命令は1つの処理ス
テップとして表現される。この第6図は、ラベルLBL
5にサブルーチンがある場合を示している。このサブル
ーチン自体は、別途にプログラム解析し、フローチャー
ト化される.このように本実施例においては、アセンブ
ラ言語の1つの命令を1つの処理ステップとして表現す
るのではなく、一定の処理動作を行う複数の命令を集約
して1つのステップとして表現するので、プログラム全
体の流れを容易に理解することが可能なフローチャート
を表示することができる.したがって、アセンブラ言語
で記述されたプログラムの内容を容易に理解することが
できるようになる。
本実施例においては、アセンブラ言語をフローチャート
として表現する場合について説明したけれども、アセン
ブラ言語の命令と1対1関係にある機械語に対してフロ
ーチャート化する場合について本発明を実施することも
できる. 発明の効果 以上のように本発明によれば、複数の各命令にはその命
令を実行したときに影響を表すフラグを予めストアして
おき、このフラグがクリアされる命令まで逆上って、命
令を集約化するようにしたので、たとえばアセンブラ言
語で記述されたプログラムを理解し易いように集約化す
ることができるとともに、プログラムの内容の解析を効
率的に行うことができ、解析時間を短縮することができ
る.
として表現する場合について説明したけれども、アセン
ブラ言語の命令と1対1関係にある機械語に対してフロ
ーチャート化する場合について本発明を実施することも
できる. 発明の効果 以上のように本発明によれば、複数の各命令にはその命
令を実行したときに影響を表すフラグを予めストアして
おき、このフラグがクリアされる命令まで逆上って、命
令を集約化するようにしたので、たとえばアセンブラ言
語で記述されたプログラムを理解し易いように集約化す
ることができるとともに、プログラムの内容の解析を効
率的に行うことができ、解析時間を短縮することができ
る.
第1図は本発明の一実施例のフローチャート表示装置1
の構成を示すブロック図、第2図はフローチャート表示
装WIの基本的動作を説明するためのフローチャート、
第3図は第2図中のステップa6における処理動作を説
明するためのフローチャート、第4図および第5図は本
発明に従うフローチャート表示装置1における表示例を
示す図、第6図はサブルーチン読出し命令がある場合の
フローチャートにおける表示例を示す図、第7図は先行
技術によって作成されたフローチャートの表示例を示す
図である. 1・・・フローチャート表示装置、2・・・外部記憶装
置、3・・・演算部、4・・・表示装置、5・・・印字
装置、7・・・中央処理回路、9・・・命令解析部、1
0・・・プログラム構造記憶部、1l・・・命令種類記
憶部、12・・・実行内容記憶部、13・・・分岐条件
記憶部、14・・・作業頭域
の構成を示すブロック図、第2図はフローチャート表示
装WIの基本的動作を説明するためのフローチャート、
第3図は第2図中のステップa6における処理動作を説
明するためのフローチャート、第4図および第5図は本
発明に従うフローチャート表示装置1における表示例を
示す図、第6図はサブルーチン読出し命令がある場合の
フローチャートにおける表示例を示す図、第7図は先行
技術によって作成されたフローチャートの表示例を示す
図である. 1・・・フローチャート表示装置、2・・・外部記憶装
置、3・・・演算部、4・・・表示装置、5・・・印字
装置、7・・・中央処理回路、9・・・命令解析部、1
0・・・プログラム構造記憶部、1l・・・命令種類記
憶部、12・・・実行内容記憶部、13・・・分岐条件
記憶部、14・・・作業頭域
Claims (1)
- 【特許請求の範囲】 全ての命令について、その命令を実行したときに与える
影響を表すフラグを予めストアしておき、分岐命令また
はストア命令を検出し、 検出された前記命令に必要な情報のフラグを検
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1187716A JPH0658625B2 (ja) | 1989-07-19 | 1989-07-19 | プログラム内容解析方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1187716A JPH0658625B2 (ja) | 1989-07-19 | 1989-07-19 | プログラム内容解析方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH0351926A true JPH0351926A (ja) | 1991-03-06 |
| JPH0658625B2 JPH0658625B2 (ja) | 1994-08-03 |
Family
ID=16210927
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1187716A Expired - Fee Related JPH0658625B2 (ja) | 1989-07-19 | 1989-07-19 | プログラム内容解析方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0658625B2 (ja) |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63317852A (ja) * | 1987-06-20 | 1988-12-26 | Fujitsu Ten Ltd | プログラム内容解析装置 |
-
1989
- 1989-07-19 JP JP1187716A patent/JPH0658625B2/ja not_active Expired - Fee Related
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS63317852A (ja) * | 1987-06-20 | 1988-12-26 | Fujitsu Ten Ltd | プログラム内容解析装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0658625B2 (ja) | 1994-08-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5327568A (en) | Apparatus for supporting graphic data driven program development and for displaying instruction execution results superimposed on the graphic program | |
| EP0538883A2 (en) | Method for creating accounting programs and processing accounting data | |
| JP3755165B2 (ja) | 並列処理手続き選定装置及び方法 | |
| CN111241447A (zh) | 一种网页数据采集方法、系统及存储介质 | |
| JP6244274B2 (ja) | 相関ルール分析装置および相関ルール分析方法 | |
| CN106339496A (zh) | 用于对照片进行清理的方法和装置 | |
| JPS60163156A (ja) | 文書作成編集方法 | |
| JPH0351926A (ja) | プログラム内容解析方法 | |
| US20170091969A1 (en) | WHATIF ONE-PAGE MULTI-Y AXIS GRAPHING SYSTEM for automated optimization and sensitivity analysis | |
| JPH11224186A (ja) | ソフトウェア解析装置及びソフトウェア解析方法 | |
| JP2006302135A (ja) | アプリケーション資産分析プログラム、アプリケーション資産分析方法およびアプリケーション資産分析装置 | |
| JPH11120040A (ja) | 並列処理手続きの効果予測方法とそのための記録媒体 | |
| JPH0335320A (ja) | フローチヤート表示装置 | |
| JPH0887417A (ja) | コンパイラ装置 | |
| US20060287977A1 (en) | Method of processing data for a system model | |
| JPH0628377A (ja) | 帳票出力装置 | |
| JPH09292985A (ja) | プログラム再利用部品生成方法 | |
| JPH04274519A (ja) | プログラム高速化自動実行方式 | |
| JP2007188187A (ja) | 帳票作成支援装置、帳票作成支援方法、および帳票作成支援プログラム | |
| JPH05274190A (ja) | ワークステーション稼働情報分析システム | |
| CN117608556A (zh) | 一种数据处理方法、装置、设备及介质 | |
| CN120010829A (zh) | 基于图形化的健康管理算法融合方法、系统和介质 | |
| JP2500385B2 (ja) | 入力デ―タ管理方式 | |
| CN112037065A (zh) | 证券交易费用源数据表的处理方法及装置 | |
| JPS5810248A (ja) | 状態履歴記憶方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |