JPS63317843A - プログラム内容解析装置 - Google Patents
プログラム内容解析装置Info
- Publication number
- JPS63317843A JPS63317843A JP62154051A JP15405187A JPS63317843A JP S63317843 A JPS63317843 A JP S63317843A JP 62154051 A JP62154051 A JP 62154051A JP 15405187 A JP15405187 A JP 15405187A JP S63317843 A JPS63317843 A JP S63317843A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- program
- block
- branch
- condition
- 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
- 230000008859 change Effects 0.000 claims description 16
- 238000000034 method Methods 0.000 description 95
- 230000008569 process Effects 0.000 description 89
- 230000000903 blocking effect Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 12
- 238000000605 extraction Methods 0.000 description 6
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000008676 import Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 101100510615 Caenorhabditis elegans lag-2 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
産業上の利用分野
本発明は、マイクロフンピユータなどを作動するために
用いられるプログラムの内容を解析するvt置に関する
。
用いられるプログラムの内容を解析するvt置に関する
。
従来技術
マイクロコンピュータ用などに設計されたプログラムの
点検は、以下のように行なわれる。まずシンタックスエ
ラーなどの基本的なバグを取除いた後、プリントアウト
されたプログラムリストに基づいて、人手によって、該
プログラムの構造と、該プログラムに基づ(各種入出力
装置の動作とを把握し、これを仕様書の記載内容と照合
する。さらに該プログラムが用いられるバーPウェアに
実際に組込み、プログラムの大行によって要′fcされ
る各種入力条件を入力して、シミュレーションさせ、プ
ログラムの動作状態を確認する。
点検は、以下のように行なわれる。まずシンタックスエ
ラーなどの基本的なバグを取除いた後、プリントアウト
されたプログラムリストに基づいて、人手によって、該
プログラムの構造と、該プログラムに基づ(各種入出力
装置の動作とを把握し、これを仕様書の記載内容と照合
する。さらに該プログラムが用いられるバーPウェアに
実際に組込み、プログラムの大行によって要′fcされ
る各種入力条件を入力して、シミュレーションさせ、プ
ログラムの動作状態を確認する。
発明が解決しようとする問題点
しかしながら実際のプログラムは膨大なステップ敗に及
」ζことがあり、その中にはやはり膨大な分岐命令が含
まれている。したがってこれらの分岐命令に基づく処理
の流れの敗はやはり膨大な数となり、上記人手に上る内
容把握作業では実現が困難である。したがって前述した
ようなシミュレーションまたはエミュレーションによる
チェックが行なわれがちになり、仕様書の内容の遺漏や
バグなどを完全に解消するには、むやみに時間を要して
いた。また、前述したようなシミュレーションやエミュ
レーションを行なうには、実際のプログラム作動時にお
いて必要とされる入力要求をすべて充足させねばならず
、繁雑な手間を要していた。
」ζことがあり、その中にはやはり膨大な分岐命令が含
まれている。したがってこれらの分岐命令に基づく処理
の流れの敗はやはり膨大な数となり、上記人手に上る内
容把握作業では実現が困難である。したがって前述した
ようなシミュレーションまたはエミュレーションによる
チェックが行なわれがちになり、仕様書の内容の遺漏や
バグなどを完全に解消するには、むやみに時間を要して
いた。また、前述したようなシミュレーションやエミュ
レーションを行なうには、実際のプログラム作動時にお
いて必要とされる入力要求をすべて充足させねばならず
、繁雑な手間を要していた。
本発明の目的は、上述の問題点を解決し、仕様書など、
プログラム内容のチェックの基準となる物との照合が穿
易な形態にプログラム内容を解析できるとともに、チェ
ック対象となる該プログラムを実行することなく、プロ
グラム内容の解析を行なうようにできるプログラム内容
解析装置を提供することである。
プログラム内容のチェックの基準となる物との照合が穿
易な形態にプログラム内容を解析できるとともに、チェ
ック対象となる該プログラムを実行することなく、プロ
グラム内容の解析を行なうようにできるプログラム内容
解析装置を提供することである。
問題点を解決するための手段
本発明は、機能語のみまたは機能語とオペランドとの組
合せなどの命令列を記憶手段から順次読出して分岐命令
を検出し、分岐先命令を検出し、該分岐命令および分岐
先命令のプログラム中における配置位置をそれぞれ特定
する情報の対を記憶するようにしたことを特徴とするプ
ログラム内容解析装置である。
合せなどの命令列を記憶手段から順次読出して分岐命令
を検出し、分岐先命令を検出し、該分岐命令および分岐
先命令のプログラム中における配置位置をそれぞれ特定
する情報の対を記憶するようにしたことを特徴とするプ
ログラム内容解析装置である。
好ましい実施態様では、上記分岐命令を検出したとき、
命令列の配列方向と反対方向に各命令を読取り、分岐命
令に指定されるフラグを変化させ得る命令を検出し、 検出された命令において、上記フラグの変化を規定する
要素を検出し、 上記反対方向に沿って、上記要素に関する入力命令を検
出し、 入力命令以降分岐命令までの実行内容をオペランドを用
いて表わし、 分岐命令の分岐条件を上記オペランドによる実行内容の
形式で記憶するようにしたことをvfaとする。
命令列の配列方向と反対方向に各命令を読取り、分岐命
令に指定されるフラグを変化させ得る命令を検出し、 検出された命令において、上記フラグの変化を規定する
要素を検出し、 上記反対方向に沿って、上記要素に関する入力命令を検
出し、 入力命令以降分岐命令までの実行内容をオペランドを用
いて表わし、 分岐命令の分岐条件を上記オペランドによる実行内容の
形式で記憶するようにしたことをvfaとする。
作 用
機能語のみまたは機能語とオペランドとの組合せなどの
命令列から成る被解析プログラムを準備する。このプロ
グラムに対して本発明のプログラム内容解析v装置は、
先頭命令から順次読出して分岐命令と当該分岐命令に対
応する分岐先命令とを検出する。このような分岐命令お
よび分岐先命令のプログラム中における配置位置をそれ
ぞれ特定する情報の対を記憶する。このような情報の対
によって、プログラムの処理の流れの経路を容易にa!
識することができる。
命令列から成る被解析プログラムを準備する。このプロ
グラムに対して本発明のプログラム内容解析v装置は、
先頭命令から順次読出して分岐命令と当該分岐命令に対
応する分岐先命令とを検出する。このような分岐命令お
よび分岐先命令のプログラム中における配置位置をそれ
ぞれ特定する情報の対を記憶する。このような情報の対
によって、プログラムの処理の流れの経路を容易にa!
識することができる。
実施例
tj41図は本発明の一実施例のプログラム内容解析装
置(以下、解析装置と称する)1の構成を示すブロック
図である。第1図を参照して、解析装置1は、従来技術
の項で述べたようなチェックが行なわれる被解析プログ
ラムが、シーケンシャルな形式で記憶されている磁気テ
ープ記録/再生装置く以下、磁気テープ装置nと称する
)2と、ランダムな記憶が行なわれる磁気ディスクv装
置3と、たとえばランダムアクセスメモリ(RA M
)などによって実現される内部記憶装置4と、たとえば
CRT(陰極M fF )i r!1や液晶表示装置な
どによって実現される表示装r!15と、インパクト形
または非インパクト形などの印字装置6と、各種キーや
スイッチ類などによって実現されるキー人力VcrII
7と、これらによって入力される情報を処理し、またこ
のような情報の入力/出力動作を制御するマイクロプロ
セッサなどを含んで構成される処理装fff 8とを含
む。
置(以下、解析装置と称する)1の構成を示すブロック
図である。第1図を参照して、解析装置1は、従来技術
の項で述べたようなチェックが行なわれる被解析プログ
ラムが、シーケンシャルな形式で記憶されている磁気テ
ープ記録/再生装置く以下、磁気テープ装置nと称する
)2と、ランダムな記憶が行なわれる磁気ディスクv装
置3と、たとえばランダムアクセスメモリ(RA M
)などによって実現される内部記憶装置4と、たとえば
CRT(陰極M fF )i r!1や液晶表示装置な
どによって実現される表示装r!15と、インパクト形
または非インパクト形などの印字装置6と、各種キーや
スイッチ類などによって実現されるキー人力VcrII
7と、これらによって入力される情報を処理し、またこ
のような情報の入力/出力動作を制御するマイクロプロ
セッサなどを含んで構成される処理装fff 8とを含
む。
仕様書の内容に従って作成されたプログラムは、従来技
術の項で述べたように、まずシンタックスエラーなどの
基本的なバグを取除いた後、磁気テープ装置2に記憶さ
れろ。磁気テープ装rf12の被解析プログラムは、解
析装置1の内部記憶装置4へ転送され、後述するような
チェック処理が行なわれる。その結果は再び磁気テープ
装置2へ記憶され、または磁気ディスク装置3へ記憶さ
れる。
術の項で述べたように、まずシンタックスエラーなどの
基本的なバグを取除いた後、磁気テープ装置2に記憶さ
れろ。磁気テープ装rf12の被解析プログラムは、解
析装置1の内部記憶装置4へ転送され、後述するような
チェック処理が行なわれる。その結果は再び磁気テープ
装置2へ記憶され、または磁気ディスク装置3へ記憶さ
れる。
またこのような記憶処理とともに、表示装置5へ表示出
力され、また印字装置6によって印字出力される。
力され、また印字装置6によって印字出力される。
第2図は磁気テープ装置2や磁気ディスク装置3などの
記憶装置の記録状態を示す系統図である。
記憶装置の記録状態を示す系統図である。
処理装置8にバス9などを介して接続された磁気テープ
装置2の記憶領域10は、前記被解析プログラムの実行
′NXとなるたとえばマイクロコンピュータに関するア
ーキテクチャが記憶されるアーキテクチャ記憶領域10
aや、この被解析プログラムによる制御の対象となる人
力/出力に用いられるアナログ信号をデジタル信号に変
換する際の比較電圧値など、このようなアナログ/デジ
タル変換器の諸元などを記憶するA/D変換器諸元記憶
領域10t+や、本被解析プログラムの実行対象となる
マイクロコンピュータの有する各端子の信号の出力状態
と、この端子に接続される各人力/出力装置の動作状想
との関係の定a(たとえばマイクロコンピュータの成る
ビンがらハイレベルの信号が導出されると、LED(発
光ダイオード)が点灯する、などの定義)が、記%Lさ
れろ定義記憶領域10eなどを含んで構成される。
装置2の記憶領域10は、前記被解析プログラムの実行
′NXとなるたとえばマイクロコンピュータに関するア
ーキテクチャが記憶されるアーキテクチャ記憶領域10
aや、この被解析プログラムによる制御の対象となる人
力/出力に用いられるアナログ信号をデジタル信号に変
換する際の比較電圧値など、このようなアナログ/デジ
タル変換器の諸元などを記憶するA/D変換器諸元記憶
領域10t+や、本被解析プログラムの実行対象となる
マイクロコンピュータの有する各端子の信号の出力状態
と、この端子に接続される各人力/出力装置の動作状想
との関係の定a(たとえばマイクロコンピュータの成る
ビンがらハイレベルの信号が導出されると、LED(発
光ダイオード)が点灯する、などの定義)が、記%Lさ
れろ定義記憶領域10eなどを含んで構成される。
第3図は第1図示の解析1置1の基本的動作を説明する
70−チャートであり、第4図は解析装置1の表示装置
n5の表示例を示す図である。11図〜fjSA図を参
照して、解析装置1の基本的動作について説明する。
Ml/ft装置1の電源が投入されると第3図ステップ
111 以降の処理が11始され、表示装置5」二に
各種入力要求を表示する。ステップ112 では、こ
のような入力要求に対応して、解析されるプログラムの
実行対象となるマイクロコンピュータの名称を入力する
。この様子は14図(1)に示される。
70−チャートであり、第4図は解析装置1の表示装置
n5の表示例を示す図である。11図〜fjSA図を参
照して、解析装置1の基本的動作について説明する。
Ml/ft装置1の電源が投入されると第3図ステップ
111 以降の処理が11始され、表示装置5」二に
各種入力要求を表示する。ステップ112 では、こ
のような入力要求に対応して、解析されるプログラムの
実行対象となるマイクロコンピュータの名称を入力する
。この様子は14図(1)に示される。
続くステップn3 では、入力された名称のマイクロ
コンピュータのアーキテクチャが、アーキテクチャ領域
10aに存在するがどうかを判断する。
コンピュータのアーキテクチャが、アーキテクチャ領域
10aに存在するがどうかを判断する。
存在していればステップn 4で当該アーキテクチャを
呼出し、たとえば内部記憶4に転送し、ス、テップn5
でアナログ/デジタル変換器の名称を入力する。一
方、前記ステップn3 の判断が否定であれば処理は
ステップ116 に移り、解析装置1は、入力された
名称に対応するアーキテクチャが記憶されていないこと
を表示し、新規登録を要求する。
呼出し、たとえば内部記憶4に転送し、ス、テップn5
でアナログ/デジタル変換器の名称を入力する。一
方、前記ステップn3 の判断が否定であれば処理は
ステップ116 に移り、解析装置1は、入力された
名称に対応するアーキテクチャが記憶されていないこと
を表示し、新規登録を要求する。
この後、処理はステップn 5 へ移る。
ステップn5 のアナログ/デジタル変換器の名称入
力の様子は、PtrJ4図(1)に示される。続くステ
ップn7 では、解析されるプログラムが動作対策と
するマイクロコンピュータに設定される各ボートの状態
と外部状態との関係を、第4図(2)に示すように人力
する。たとえばL)ORT17がハイレベルとなれば、
スタートスイッチがオン状態に切換わり、PORTlG
がハイレベルになるとサーモスイッチがオン状態に切換
わる。ステップn8 では、前記マイクロコンピュー
タの割込み端子の状態と、外部状態との関係の入力が、
表示装置5上で要求される。またアナログ/デジタル変
換器チャンネル用ボートについては、キー人力装置7に
よって所定の゛バ項を入力し、第4図(3)に示すよう
に所定のデータ項口を入力して各ボートを定義する。
力の様子は、PtrJ4図(1)に示される。続くステ
ップn7 では、解析されるプログラムが動作対策と
するマイクロコンピュータに設定される各ボートの状態
と外部状態との関係を、第4図(2)に示すように人力
する。たとえばL)ORT17がハイレベルとなれば、
スタートスイッチがオン状態に切換わり、PORTlG
がハイレベルになるとサーモスイッチがオン状態に切換
わる。ステップn8 では、前記マイクロコンピュー
タの割込み端子の状態と、外部状態との関係の入力が、
表示装置5上で要求される。またアナログ/デジタル変
換器チャンネル用ボートについては、キー人力装置7に
よって所定の゛バ項を入力し、第4図(3)に示すよう
に所定のデータ項口を入力して各ボートを定義する。
ステップn9では、ステップn7.n8での各種入力が
正しく実行されたがどうかを1!41Iiする。判断結
果が否定であれば処理はステップn7 に戻り、上記入
力されたデータを訂正する。を1断結果が+?定であれ
ばステップnlOに移り、たとえば磁気テープ装置n2
に記憶されている被解析プログラムを内部記憶装置4に
転送して読取る。ステップn11では、後述するような
被解析プログラムを解析し、ステップn12 で解析
結果を出力して処理を終了する。
正しく実行されたがどうかを1!41Iiする。判断結
果が否定であれば処理はステップn7 に戻り、上記入
力されたデータを訂正する。を1断結果が+?定であれ
ばステップnlOに移り、たとえば磁気テープ装置n2
に記憶されている被解析プログラムを内部記憶装置4に
転送して読取る。ステップn11では、後述するような
被解析プログラムを解析し、ステップn12 で解析
結果を出力して処理を終了する。
第5図はPIS3図のステップnil のプログラム
の解析処理の内容を説明するフローチャートである。第
5図を併せて参照して、解析装r111の繰作について
説明する。上述したように本発明は、たとえばマイクロ
コンピュータ用にたとえばアセンブラ言語によって作成
されたプログラムの内容を解析する装置に関する。被解
析プログラムは、解JfrHrfl 1の磁気テープ装
置2に記憶されており、第3図ステップ1110 で
説明したように、このようなプログラムは磁気テープ装
置2からたとえば内部記憶装置4へ転送される。
の解析処理の内容を説明するフローチャートである。第
5図を併せて参照して、解析装r111の繰作について
説明する。上述したように本発明は、たとえばマイクロ
コンピュータ用にたとえばアセンブラ言語によって作成
されたプログラムの内容を解析する装置に関する。被解
析プログラムは、解JfrHrfl 1の磁気テープ装
置2に記憶されており、第3図ステップ1110 で
説明したように、このようなプログラムは磁気テープ装
置2からたとえば内部記憶装置4へ転送される。
本実施例では、被解析プログラムを以下の第1表に示す
プログラムと想定して説明する。
プログラムと想定して説明する。
(以下余白)
第 1 表(プログラムリスト)
上記第1表のプログラムの内容は、tjSG図および第
7図の70−チャートに示される。第6図および17図
のステップ番号al 、a2 、・・・!a21は1上
記第1表のプログラムリストの行番号に対応している。
7図の70−チャートに示される。第6図および17図
のステップ番号al 、a2 、・・・!a21は1上
記第1表のプログラムリストの行番号に対応している。
また、第isの全21行の各命令の実行に関する各7ラ
グの状態を示すコンディションコードレジスタ (以下
、CCRと称する)は、下記第2表に示される。ここで
は、符号7ラグN1ゼロ7ラグZ、オーバ70−7ラグ
■およびキャリ7ラグCの状態を示す。
グの状態を示すコンディションコードレジスタ (以下
、CCRと称する)は、下記第2表に示される。ここで
は、符号7ラグN1ゼロ7ラグZ、オーバ70−7ラグ
■およびキャリ7ラグCの状態を示す。
(以下余白)
第2表
(注1)第2表中、記号rtJJ・」汀RJ、rS J
はそれぞれ「結果によってセットまたはリセットされる
」、 「変化しない」、「リセット(クリア)される」
および「セットされる」を表わす。
はそれぞれ「結果によってセットまたはリセットされる
」、 「変化しない」、「リセット(クリア)される」
および「セットされる」を表わす。
(注2)上記プログラムには、レジスタ名称の定義、割
込み制御レジスタの設定、ボート入出力方向の設定、割
込みベクトルの設定等は省略されているが、割込みはC
APT 1のみ許可、その割込みアドレス(ラベル)は
CAP 1’とする。
込み制御レジスタの設定、ボート入出力方向の設定、割
込みベクトルの設定等は省略されているが、割込みはC
APT 1のみ許可、その割込みアドレス(ラベル)は
CAP 1’とする。
上記第1表のプログラムリストで、
(1)入カニPORT1の第6ビツトにスイッチ入力(
スイッチONでハイレベルに変化): PORT2の第
Oビットに可変周波信号入力 および、 (2)出カニ PORTIの第7ビツトから発光ダイオ
ード出力 (出力ハイレベルで発光グイオード点灯)の
入出力操作が行なわれる、と定義しておく。
スイッチONでハイレベルに変化): PORT2の第
Oビットに可変周波信号入力 および、 (2)出カニ PORTIの第7ビツトから発光ダイオ
ード出力 (出力ハイレベルで発光グイオード点灯)の
入出力操作が行なわれる、と定義しておく。
これは第3図ステップn 7で行なわれる。
」ユ記第1表のプログラムリストが読込まれた解析装r
f11では、fjIJ5図ステップwA1 でプログ
ラムの流れvt造の解析が行なわれる。
f11では、fjIJ5図ステップwA1 でプログ
ラムの流れvt造の解析が行なわれる。
上述したように、第1表に示すプログラムリストは、第
6図および第7図に示す動作内容を有している。しかし
ながら、第1表のプログラムリストから第6図およびt
jS7図示の70−チャートを得るには、人手によって
、各命令が単なる処理命令か条件文による分岐命令かを
把握する作業と、分岐命令の場合にはその分岐先の検出
作業などが含まれ、これらの作業に基づいて上記70−
チャートが作成される。
6図および第7図に示す動作内容を有している。しかし
ながら、第1表のプログラムリストから第6図およびt
jS7図示の70−チャートを得るには、人手によって
、各命令が単なる処理命令か条件文による分岐命令かを
把握する作業と、分岐命令の場合にはその分岐先の検出
作業などが含まれ、これらの作業に基づいて上記70−
チャートが作成される。
本発明の眼目の1つは、任意のプログラムリストから、
該プログラムの分岐命令と、該分岐命令によって定めら
れる分岐先命令とを把握した後、該プログラムの処理の
流れの構造の把握を人間の頭脳による作業を介すること
なく、解析装置によって自動的に行なうことができるよ
うにしたことである。またこれによって、後述するよう
に上記70−チャートと類似の形態の出力を得ることが
できる。
該プログラムの分岐命令と、該分岐命令によって定めら
れる分岐先命令とを把握した後、該プログラムの処理の
流れの構造の把握を人間の頭脳による作業を介すること
なく、解析装置によって自動的に行なうことができるよ
うにしたことである。またこれによって、後述するよう
に上記70−チャートと類似の形態の出力を得ることが
できる。
このような流れの構造を把握する処理を、第8図の70
−チャートにおいて示す。第8図ステップ+11では、
命令行番号を示すパラメータkを[1]に初期化し、ス
テップb2で第に命令(第1表における行番号にの命令
)の読取りを行なう、続くステップ1)3では、この読
取られた第に命令が分岐命令であるかどうかを判断する
。このf4断はたとえば、第1表における命令を構成す
る二一モニックを読取ればよい。すなわち上述したよう
に、所望のマイクロコンピュータのアーキテクチャを呼
出した段階で、解析Hrvllの内部記憶4には、当該
マイクロコンピュータに用いられるアセンブラ言語のコ
マンドや、コマンドに関連するフラグなどのテーブルが
別途記憶され、これを参照することによって、第1表の
各命令が分岐命令であるか否かを容易にtV断できるか
らである。
−チャートにおいて示す。第8図ステップ+11では、
命令行番号を示すパラメータkを[1]に初期化し、ス
テップb2で第に命令(第1表における行番号にの命令
)の読取りを行なう、続くステップ1)3では、この読
取られた第に命令が分岐命令であるかどうかを判断する
。このf4断はたとえば、第1表における命令を構成す
る二一モニックを読取ればよい。すなわち上述したよう
に、所望のマイクロコンピュータのアーキテクチャを呼
出した段階で、解析Hrvllの内部記憶4には、当該
マイクロコンピュータに用いられるアセンブラ言語のコ
マンドや、コマンドに関連するフラグなどのテーブルが
別途記憶され、これを参照することによって、第1表の
各命令が分岐命令であるか否かを容易にtV断できるか
らである。
上記ステップb3 の判断結果が否定であれば、ステ
ップ1〕4でパラメータkを+1インクリメントし、処
理をステップ1】2 に戻し、上述の説明と同様な処
理を行なう、このとき第1表のプログラムリストに従え
ば、第4命令を読取ったとき、アーキテクチャが参照さ
れ、この第4命令がゼロ7ラグZの状!!(rlJまた
は「0」)を条件とする分岐命令であることが把握され
る。したがって、第8図の処理において第4命令が読取
られたときステップl+3の判断は肯定となり、処理は
ステップb5に移る。
ップ1〕4でパラメータkを+1インクリメントし、処
理をステップ1】2 に戻し、上述の説明と同様な処
理を行なう、このとき第1表のプログラムリストに従え
ば、第4命令を読取ったとき、アーキテクチャが参照さ
れ、この第4命令がゼロ7ラグZの状!!(rlJまた
は「0」)を条件とする分岐命令であることが把握され
る。したがって、第8図の処理において第4命令が読取
られたときステップl+3の判断は肯定となり、処理は
ステップb5に移る。
ステップl+5 では、第1表の第4命令のオペラン
ド1−LOOPJと対応するラベル名を検索する。
ド1−LOOPJと対応するラベル名を検索する。
第1表のプログラムリストでは、第2命令に上記オペラ
ンドと同一のラベルが付されており、したがって第4I
fir令の分岐先は、第2命令であることが理解される
。ステップb6 では、一般に分岐命令の行番号にと
、これに対応する分岐先命令行番号−との対(以下、ブ
ロック化情報と称する)(ktm)を、内部記憶装fi
4に記憶する。この後、処理はステップb4 に移り
、行番号を+1インクリメントして次の行へ処理を進め
る。
ンドと同一のラベルが付されており、したがって第4I
fir令の分岐先は、第2命令であることが理解される
。ステップb6 では、一般に分岐命令の行番号にと
、これに対応する分岐先命令行番号−との対(以下、ブ
ロック化情報と称する)(ktm)を、内部記憶装fi
4に記憶する。この後、処理はステップb4 に移り
、行番号を+1インクリメントして次の行へ処理を進め
る。
このような処理を行なうことによって、第1212のプ
ログラムリストにおける分岐命令と分岐先命令との行番
号の対(k、(至))に関して、下記第3表のような結
果が得られる。
ログラムリストにおける分岐命令と分岐先命令との行番
号の対(k、(至))に関して、下記第3表のような結
果が得られる。
第 3 表
この段階で解析装置1は、第1表に示すプログラムリス
トの流れ#R造が把握できたことになる。すなわち第3
表として得られた結果を揉作者が容易に理解できる形式
に出力する場合、たとえば第1表のプログラムリストの
行番号1〜21を第9図に示すように一列に配列し、上
記第3表に基づいて、行番号kから行番号−へ向かう分
岐矢符をこれに付すことによって、プログラムリストの
流れ構造として第9図示のような出力が得られる。これ
によって揉作者も、第1表のプログラムリストの流れ構
造を容易に把握することができる。こうして第5図ステ
ップ鰺1 の処理は終了する。
トの流れ#R造が把握できたことになる。すなわち第3
表として得られた結果を揉作者が容易に理解できる形式
に出力する場合、たとえば第1表のプログラムリストの
行番号1〜21を第9図に示すように一列に配列し、上
記第3表に基づいて、行番号kから行番号−へ向かう分
岐矢符をこれに付すことによって、プログラムリストの
流れ構造として第9図示のような出力が得られる。これ
によって揉作者も、第1表のプログラムリストの流れ構
造を容易に把握することができる。こうして第5図ステ
ップ鰺1 の処理は終了する。
次に第5図ステップ謙2では、ステップ輸1で得られた
被解析プログラムの流れ構造の認識に基づいて、該プロ
グラムをブロックに区分する処理を行なう。このような
ブロック化処理には、以下のような利点がある。本発明
のプログラム内容解析処理が行なわれる被解析プログラ
ムは、一般にはたとえば数百ステップのような場合もあ
り、このようなプログラムには、各種分岐命令も大量に
含まれている。したがって、このような分岐命令の条件
の成立の是非に関する組合わせの数が膨大な数になるこ
とは、容易に想定される。このような膨大な組合わせ数
のプログラムの系統を逐次的に考察の対象とし、各系統
ごとに全命令のコンディションコードレジスタ(CCR
)を記憶するのは、極めて繁雑であるとともに膨大な記
憶容量が要求される。
被解析プログラムの流れ構造の認識に基づいて、該プロ
グラムをブロックに区分する処理を行なう。このような
ブロック化処理には、以下のような利点がある。本発明
のプログラム内容解析処理が行なわれる被解析プログラ
ムは、一般にはたとえば数百ステップのような場合もあ
り、このようなプログラムには、各種分岐命令も大量に
含まれている。したがって、このような分岐命令の条件
の成立の是非に関する組合わせの数が膨大な数になるこ
とは、容易に想定される。このような膨大な組合わせ数
のプログラムの系統を逐次的に考察の対象とし、各系統
ごとに全命令のコンディションコードレジスタ(CCR
)を記憶するのは、極めて繁雑であるとともに膨大な記
憶容量が要求される。
したがって本発明の眼目の1つは、被解析プログラムを
後述するような条件の下で、複数のブロックに区分し、
各ブロックに対して第5図ステップlll3 の分岐
条件摘出処理、ステップ論4 の書込み命令単位の入出
力結合処理、およびステップ15のパイルの結合処理な
どから成る同一内容の処理を施すようにしたことである
。このようなブロックの区分点は、プログラムにおける
分岐命令行か分岐先命令行であり、1ブロツクは分岐命
令行または分岐先命令行で始まり、これらのいずれかで
終了し、かつその間にはこれら分岐命令*たは分岐先命
令行を含まないように選よ。
後述するような条件の下で、複数のブロックに区分し、
各ブロックに対して第5図ステップlll3 の分岐
条件摘出処理、ステップ論4 の書込み命令単位の入出
力結合処理、およびステップ15のパイルの結合処理な
どから成る同一内容の処理を施すようにしたことである
。このようなブロックの区分点は、プログラムにおける
分岐命令行か分岐先命令行であり、1ブロツクは分岐命
令行または分岐先命令行で始まり、これらのいずれかで
終了し、かつその間にはこれら分岐命令*たは分岐先命
令行を含まないように選よ。
すなわち全プログラムは、このような複数のブロックの
結合として表現され、同一ブロック内のプログラムの異
なる流れのamも極めて少数となる。これにより各ブロ
ックごとの内容解析を格段に容易に行なえるようになり
、全プログラムの内容解析は、ブロックごとに得られた
内容解析結果の結合として示される。
結合として表現され、同一ブロック内のプログラムの異
なる流れのamも極めて少数となる。これにより各ブロ
ックごとの内容解析を格段に容易に行なえるようになり
、全プログラムの内容解析は、ブロックごとに得られた
内容解析結果の結合として示される。
このようなブロック分は処理は、第10図の70−チャ
ートに示される。このとき、前記fIS8図を参照して
一説明した第5図ステップ帷1 の流れ構造の解析処理
によって得られたブロック化情報対(k、m)について
、第1表の全プログラムについて行なうことによって、
PJJ3表に示したような結果が得られる。すなわち、
このようなブロック化情報対(kl =al )−(k
2 、*2 )、・・・、(ks、論S) (本実施例
では5=4)が、第1図示の内部記憶装置4に記憶され
ている。以下に説明する第10図の処理には、このブロ
ック化情報対列を用いる。なお上記ブロック化情報列の
各数値kl 、に2 、・・・wks:m 11曽2.
・・・。
ートに示される。このとき、前記fIS8図を参照して
一説明した第5図ステップ帷1 の流れ構造の解析処理
によって得られたブロック化情報対(k、m)について
、第1表の全プログラムについて行なうことによって、
PJJ3表に示したような結果が得られる。すなわち、
このようなブロック化情報対(kl =al )−(k
2 、*2 )、・・・、(ks、論S) (本実施例
では5=4)が、第1図示の内部記憶装置4に記憶され
ている。以下に説明する第10図の処理には、このブロ
ック化情報対列を用いる。なお上記ブロック化情報列の
各数値kl 、に2 、・・・wks:m 11曽2.
・・・。
輪Sについて総称する場合には、それぞれ記号に、−を
用いて示す。
用いて示す。
第10図ステップC1では、第1表のプログラムの行番
号を示すパラメータiを「1」tこ初〕υ1化する。ス
テップC2では上記行番号iに関して、この行番号iに
等しい上記ブロック化情報kまたはブロック化情報論が
存在するか否かをtg断する。この判断が肯定であれば
、ステップC3でブロック化情報に、 mによるブロッ
ク化処理を行なう。
号を示すパラメータiを「1」tこ初〕υ1化する。ス
テップC2では上記行番号iに関して、この行番号iに
等しい上記ブロック化情報kまたはブロック化情報論が
存在するか否かをtg断する。この判断が肯定であれば
、ステップC3でブロック化情報に、 mによるブロッ
ク化処理を行なう。
このブロック化処理は、以下のように行なわれる。まず
ステップC3において、判断がYr定となるブロック化
情報に、論が記憶される。次にステップc4で行番号i
が+1インクリメントされ、ステップc5では行番号i
がこのような行番号の最終値すなわちMAX(i)を超
えたかどうかの判断を行なう。
ステップC3において、判断がYr定となるブロック化
情報に、論が記憶される。次にステップc4で行番号i
が+1インクリメントされ、ステップc5では行番号i
がこのような行番号の最終値すなわちMAX(i)を超
えたかどうかの判断を行なう。
判断結果が否定であれば、第10図に示すブロック化処
理は被解析プログラムの最終行まで到達していないこと
になり、ステップC2に戻る。以下、同様の処理が繰り
返し行なわれ、ステップC2のtq断が1〒定となるブ
ロック化情報に、 mがあった場合、直間ステップC2
のtq断を17定としたブロック化情報に、lを呼び出
し、これらを組み合わせてブロック情報対(a+β)と
して記憶する。以下、このような処理がプログラムの最
終行まで繰り返し行なわれる。
理は被解析プログラムの最終行まで到達していないこと
になり、ステップC2に戻る。以下、同様の処理が繰り
返し行なわれ、ステップC2のtq断が1〒定となるブ
ロック化情報に、 mがあった場合、直間ステップC2
のtq断を17定としたブロック化情報に、lを呼び出
し、これらを組み合わせてブロック情報対(a+β)と
して記憶する。以下、このような処理がプログラムの最
終行まで繰り返し行なわれる。
上記ステップc1〜C5で行なわれる処理は、たとえば
第1表のプログラムの第1行から第21行までをM8に
たどって、その中でブロック化情報(k、m)として示
される分岐命令行および分岐先命令行に関して、行番号
の増加方向において隣接する命令列の組をブロック情報
(a、β)として記憶する処理である。
第1表のプログラムの第1行から第21行までをM8に
たどって、その中でブロック化情報(k、m)として示
される分岐命令行および分岐先命令行に関して、行番号
の増加方向において隣接する命令列の組をブロック情報
(a、β)として記憶する処理である。
上記ステップC5の判断が肯定となれば、処理はステッ
プc6 に移り、上記ブロック化情報列(kjemj)
・・・(
1)j=1.2.・・・、S によるブロック化処理を行なう。
プc6 に移り、上記ブロック化情報列(kjemj)
・・・(
1)j=1.2.・・・、S によるブロック化処理を行なう。
このブロック化処理は、第1表のプログラムリストにお
いて、分岐処理を実現するブロックを決定する処理とな
る。すなわち第3表のブロック化情報(k、論)におい
て、たとえばブロック化情報対(4,2)は、第4命令
から第2命令へ処理が分岐する系統を規定している。し
たがって、これらのブロック化情報対(k、 m)を、
前記ブロック情報対(α、β)と異なる内容をなす分岐
ブロック情報対(α、β)brとして再定義することに
より、第1表のプログラムリストに関して、分岐を行な
う系統を網m’t’きる。ステップC6による分岐ブロ
ック化処理が終了すると、第11図に示すブロック分は
結果が得られる。
いて、分岐処理を実現するブロックを決定する処理とな
る。すなわち第3表のブロック化情報(k、論)におい
て、たとえばブロック化情報対(4,2)は、第4命令
から第2命令へ処理が分岐する系統を規定している。し
たがって、これらのブロック化情報対(k、 m)を、
前記ブロック情報対(α、β)と異なる内容をなす分岐
ブロック情報対(α、β)brとして再定義することに
より、第1表のプログラムリストに関して、分岐を行な
う系統を網m’t’きる。ステップC6による分岐ブロ
ック化処理が終了すると、第11図に示すブロック分は
結果が得られる。
また上述のように、ブロック情報対(α、β)と、分岐
ブロック情報対(α、β)brとを定義することにより
、第1表のプログラムリストのたとえば第9命令、第1
0命令および第11命令からなるブロックと、第9命令
と第11命令とからなる分岐ブロックとを明瞭に区分で
きる。このようなブロック情報対(α、β)および分岐
ブロック情報対(’ytβ)brを、下記の第4表に示
す。
ブロック情報対(α、β)brとを定義することにより
、第1表のプログラムリストのたとえば第9命令、第1
0命令および第11命令からなるブロックと、第9命令
と第11命令とからなる分岐ブロックとを明瞭に区分で
きる。このようなブロック情報対(α、β)および分岐
ブロック情報対(’ytβ)brを、下記の第4表に示
す。
以下、得られた各ブロックを示すに際して、第11図に
示すように記号■、■、・・・、■ をもって示す。す
なわちブロック■は、行番号1.2の命令群を示してい
る。このような記法に従い、第1表のプログラムは第1
2図および第13図で示されるように表現される。ここ
で、第1表のプログラムを第12図および第13図の2
つの図に区分したのは、第12図は行番号1〜12のメ
イン処理ルーチンを表わし、第13図は行番号13〜2
1の後述するような割込み処理ルーチンを表わし、これ
らは相互間に亘って分岐関係が存在しない独立な内容だ
からである。このようにして、第5図ステップm2
のブロック分は処理が終了する。
示すように記号■、■、・・・、■ をもって示す。す
なわちブロック■は、行番号1.2の命令群を示してい
る。このような記法に従い、第1表のプログラムは第1
2図および第13図で示されるように表現される。ここ
で、第1表のプログラムを第12図および第13図の2
つの図に区分したのは、第12図は行番号1〜12のメ
イン処理ルーチンを表わし、第13図は行番号13〜2
1の後述するような割込み処理ルーチンを表わし、これ
らは相互間に亘って分岐関係が存在しない独立な内容だ
からである。このようにして、第5図ステップm2
のブロック分は処理が終了する。
第5図ステップ鴫3 では、分岐条件摘出処理が行なわ
れる。このような分岐条件摘出処理は、第14図の70
−チャートに示される。第5図ステップd1 では、
上述したようなブロック化処理を行ない、各ブロック情
報対(α、β)、(α、β)11「を得る。ステップd
2では変敗jを「1]に初期化する。ステップd3
以降の処理では、分岐条件として第1ブロツク■、第2
ブロツク■、第3ブロツク■、・・・、第13ブロツク
■を処理が通過する条件を求めることになる。
れる。このような分岐条件摘出処理は、第14図の70
−チャートに示される。第5図ステップd1 では、
上述したようなブロック化処理を行ない、各ブロック情
報対(α、β)、(α、β)11「を得る。ステップd
2では変敗jを「1]に初期化する。ステップd3
以降の処理では、分岐条件として第1ブロツク■、第2
ブロツク■、第3ブロツク■、・・・、第13ブロツク
■を処理が通過する条件を求めることになる。
(1)第1ブロツク■を通る条件
第1ブロツク■は第6図に明らかなように、第12命令
の無条件ジャンプ命令によって処理が無条件に通過する
ブロックである。
の無条件ジャンプ命令によって処理が無条件に通過する
ブロックである。
(2)第2ブロツク■を通る条件
第14図ステップd3 では、第3表を参照して第j
番目(現時点ではj=1)のブロック化情報対(k。
番目(現時点ではj=1)のブロック化情報対(k。
輸)を参照する。ステップd4では、ステップd3にお
けるブロック化情報対(k、m)において、第に命令の
分岐条件を支配するフラグを検出する。第4表によれば
、j=1のときに=4であり、第1表のプログラムの第
k(= 4 )命令rnNE、Jの分岐条件を支配する
フラグの検出を行なう、これはアーキテクチャによって
、各命令それ自体に規定される条件となる。すなわち上
記第4命令の場合には、ゼロ7ラグZである。
けるブロック化情報対(k、m)において、第に命令の
分岐条件を支配するフラグを検出する。第4表によれば
、j=1のときに=4であり、第1表のプログラムの第
k(= 4 )命令rnNE、Jの分岐条件を支配する
フラグの検出を行なう、これはアーキテクチャによって
、各命令それ自体に規定される条件となる。すなわち上
記第4命令の場合には、ゼロ7ラグZである。
ステップd5 では、命令列の配列方向と反対方向に
一命令を読取る。この命令が上記フラグ(ゼロ7ラグZ
)を変化させる命令であるかどうかのステップd6
における判断が否定であれば、ステップds、dGを繰
り返す、j#定であればステ゛ツブd7 に移り、フ
ラグを変化させる命令を記憶する。
一命令を読取る。この命令が上記フラグ(ゼロ7ラグZ
)を変化させる命令であるかどうかのステップd6
における判断が否定であれば、ステップds、dGを繰
り返す、j#定であればステ゛ツブd7 に移り、フ
ラグを変化させる命令を記憶する。
第1表のプログラムリストと第2表のCCRとを参照す
れば、この命令は第3命令rCMPA C0UNTJ
であり、ゼロ7ラグZを変化させる命令であることが判
断される。ステップd8 では、第1表のプログラム
リストを参照して、ゼロ7ラグ2に関する当該第3命令
中のパラメータを検出する。すなわち第3命令は7キユ
ムレータAに関する命令であり、パラメータとしてアキ
ュムレータAが検出される。
れば、この命令は第3命令rCMPA C0UNTJ
であり、ゼロ7ラグZを変化させる命令であることが判
断される。ステップd8 では、第1表のプログラム
リストを参照して、ゼロ7ラグ2に関する当該第3命令
中のパラメータを検出する。すなわち第3命令は7キユ
ムレータAに関する命令であり、パラメータとしてアキ
ュムレータAが検出される。
ステップd9 では、該命令が該パラメータを変化さ
せる命令か否かを判断する。この判断は前記アーキテク
チャに含まれる前記CCRを参照して行なわれる6判断
が1〒定であれば、ステップd10に移り当該命令が記
憶され、ステップdll に移る。第3命令[CMP
AJはアキュムレータAの内容を変化せず、′ステップ
d9 の判断が否定となり、ステップd10を経るこ
となくステップd11に移る。
せる命令か否かを判断する。この判断は前記アーキテク
チャに含まれる前記CCRを参照して行なわれる6判断
が1〒定であれば、ステップd10に移り当該命令が記
憶され、ステップdll に移る。第3命令[CMP
AJはアキュムレータAの内容を変化せず、′ステップ
d9 の判断が否定となり、ステップd10を経るこ
となくステップd11に移る。
ステップd11 では、現在検討中のブロックが第1
表のプログラムリスト中でループを構成するブロックか
どうかを判断する。現時点では、解析装filは第4命
令および第3命令しか認識しておらず、この判断は否定
となり、処理はステップd12に移り、ステップdlO
で記憶した命令が、前記パラメータの入力命令であるか
どうかを判断する。このf1断が肯定であれば、ステッ
プtJ15に移る。一方、上記ステップdi 1 の
判断が肯定であれば、ステップd14 で分岐条件に
後述するようなループ要素を追加し、処理はステップd
15に移る。
表のプログラムリスト中でループを構成するブロックか
どうかを判断する。現時点では、解析装filは第4命
令および第3命令しか認識しておらず、この判断は否定
となり、処理はステップd12に移り、ステップdlO
で記憶した命令が、前記パラメータの入力命令であるか
どうかを判断する。このf1断が肯定であれば、ステッ
プtJ15に移る。一方、上記ステップdi 1 の
判断が肯定であれば、ステップd14 で分岐条件に
後述するようなループ要素を追加し、処理はステップd
15に移る。
ステップd15 では、当該分岐命令が第9図に示す
ような本実施例における被解析プログラムの構造におい
て、ネスティング構造に含まれるものであるかどうかを
判断する。判断結果が肯定ならば、ステップd16
で後述するようなネスティング要素を追加し、ステップ
d13 で記憶したブロック列の種類がすべて終了し
たがどうかを判断し、t1断結果が肯定であればステッ
プd17 で分岐対のパラメータjをプラス1インク
リメントし、処理はステップd3に戻る。前記ステップ
d15の判断が否定であれば、ステップd16 を経る
ことなく、処理はステップd13 に移る。
ような本実施例における被解析プログラムの構造におい
て、ネスティング構造に含まれるものであるかどうかを
判断する。判断結果が肯定ならば、ステップd16
で後述するようなネスティング要素を追加し、ステップ
d13 で記憶したブロック列の種類がすべて終了し
たがどうかを判断し、t1断結果が肯定であればステッ
プd17 で分岐対のパラメータjをプラス1インク
リメントし、処理はステップd3に戻る。前記ステップ
d15の判断が否定であれば、ステップd16 を経る
ことなく、処理はステップd13 に移る。
第3命令[cMPAJについて、前記ステップd12の
?!断は否定となり、処理はステップd19に移り、現
在検討中の命令が当該命令を含むブロックの先頭である
かどうかを判断する。第3命令について判断結果は否定
であり、ステップd20で命令列の配列方向と反対方向
に一命令を読取り、処理はステップd9 に移り、前述
の処理を繰返す。
?!断は否定となり、処理はステップd19に移り、現
在検討中の命令が当該命令を含むブロックの先頭である
かどうかを判断する。第3命令について判断結果は否定
であり、ステップd20で命令列の配列方向と反対方向
に一命令を読取り、処理はステップd9 に移り、前述
の処理を繰返す。
前記ステップd19 で?l判断結果肯定ならば、ス
テップd21 に移り、当該ブロックに処理が到達す
るブロック列の種類を記憶する。すなわち当該ブロック
に至るルートの種類を記憶する。ステップd22 で
は、記憶したブロック列中がら−ブロック列を選択し処
理はステップd20に戻る。
テップd21 に移り、当該ブロックに処理が到達す
るブロック列の種類を記憶する。すなわち当該ブロック
に至るルートの種類を記憶する。ステップd22 で
は、記憶したブロック列中がら−ブロック列を選択し処
理はステップd20に戻る。
第1表のプログラムリストにおいて、m4命令から上述
の処理が繰り返される。このとき、fjS1命令[LD
AAJを解析する段階で、ステップdl。
の処理が繰り返される。このとき、fjS1命令[LD
AAJを解析する段階で、ステップdl。
で記憶されてきた命令は、オペランドで記述すると、
A=T IME−(COUNT+1) ・・・(2
)になる。
)になる。
またステップdi 1 の判断は1′r定となり、@
2式の分岐条件にステップd14 でループ要素が付
加され、下記第3式の分岐条件が得られる。すなわちル
ープを11回繰返せば上記第2式は、A=TIME
(COUNT+n) −(3)と表される。この実
行内容がループを構成する条件は、第4命令で分岐条件
が成立すること、すなわちゼロ7ラグZに関して、 Z=O・・・(4) が成立する場合である。したがって上記ステップdlO
では最終的に、 T I M E (COU N T +n)≠0
・・・(5)の条件が得られる。これは第2ブロツク■
を処理が通過する条件となる。
2式の分岐条件にステップd14 でループ要素が付
加され、下記第3式の分岐条件が得られる。すなわちル
ープを11回繰返せば上記第2式は、A=TIME
(COUNT+n) −(3)と表される。この実
行内容がループを構成する条件は、第4命令で分岐条件
が成立すること、すなわちゼロ7ラグZに関して、 Z=O・・・(4) が成立する場合である。したがって上記ステップdlO
では最終的に、 T I M E (COU N T +n)≠0
・・・(5)の条件が得られる。これは第2ブロツク■
を処理が通過する条件となる。
(3)第3ブロツク■を通る条件
この場合、第1表のプログラムリストにおいて、処理が
第2ブロツク■に進行しない条件、ナなわち、上記第5
式の条件の否定 T I ME−(COUNT+n)=O=−(6)が求
めるべき条件となる。
第2ブロツク■に進行しない条件、ナなわち、上記第5
式の条件の否定 T I ME−(COUNT+n)=O=−(6)が求
めるべき条件となる。
(4)第4ブロツク■を通る条件
ステップd3 では、PttJ4ブロック■の最終行
番号9をブロック化情報にとする対(k 、 111)
が、j=2の場合として、第3表より(8,11)とし
て読出される。この第8命令に対して、上記第2ブロツ
ク■を通る条件を求めた処理と同様な処理が行なわれる
。ステップd4 では、tjIJliのプログラムの
第k(= 8 )命令[13MIJの分岐条件を支配す
るフラグの検出を行なう。すなわち、上記第8命令の場
合には、符号7ラグNである。
番号9をブロック化情報にとする対(k 、 111)
が、j=2の場合として、第3表より(8,11)とし
て読出される。この第8命令に対して、上記第2ブロツ
ク■を通る条件を求めた処理と同様な処理が行なわれる
。ステップd4 では、tjIJliのプログラムの
第k(= 8 )命令[13MIJの分岐条件を支配す
るフラグの検出を行なう。すなわち、上記第8命令の場
合には、符号7ラグNである。
ステップd5.d6では、この符号7ラグNを変化しう
る最近の命令を検索する。上記第1表および第2表を参
照すれば、第7命令[LDAB PORTIJが対応
することが検出される。ステップd8 では、この符
号7ラグN1.:l!iする第7#令中のパラメータを
検出する。すなわち第7命令は7キユムレータBに関す
る命令であり、このアキュムレータBがパラメータとし
て検出される。
る最近の命令を検索する。上記第1表および第2表を参
照すれば、第7命令[LDAB PORTIJが対応
することが検出される。ステップd8 では、この符
号7ラグN1.:l!iする第7#令中のパラメータを
検出する。すなわち第7命令は7キユムレータBに関す
る命令であり、このアキュムレータBがパラメータとし
て検出される。
ステップd12 では、パラメータとしての7キユムレ
ータBの入力命令を検出する。第1表のプログラムリス
トを参照すれば、上記第7命令自身が7キユムレータB
の入力命令であることが検出される。したがってステッ
プd12 の判断は肯定となり、ステップd15
でのネスティング構造判断は否となるため、第3ブロツ
ク■の実行内容をオペランドによって表現すれば、求め
る分岐条件は、 PORT17=O・・・(7) となる。ここで表記rPORT17=OJは、入出カポ
−)PORTIの第7ビツトが[0]となる状態を表現
する。この後、処理はステップd13 に移り判断が
否定となり、前述のような処理を経て処理はステップd
3に戻る。
ータBの入力命令を検出する。第1表のプログラムリス
トを参照すれば、上記第7命令自身が7キユムレータB
の入力命令であることが検出される。したがってステッ
プd12 の判断は肯定となり、ステップd15
でのネスティング構造判断は否となるため、第3ブロツ
ク■の実行内容をオペランドによって表現すれば、求め
る分岐条件は、 PORT17=O・・・(7) となる。ここで表記rPORT17=OJは、入出カポ
−)PORTIの第7ビツトが[0]となる状態を表現
する。この後、処理はステップd13 に移り判断が
否定となり、前述のような処理を経て処理はステップd
3に戻る。
(5)第5ブロツク■を通る条件
ステップd3では、j=3の場合としてブロック化情Y
JIN (k、輸)= (9、11)カミA出% し、
ステップJ4では第k(= 9 >命令rBEQ N
ANNOIJの分岐条件を支配するフラグすなわちゼロ
7ラグZが検出される。続いてステップd5.d6では
、このゼロ7ラグZを変化しうる最近の命令として、第
1表および第2表を参照して、第7命令rLDABJが
検出される。
JIN (k、輸)= (9、11)カミA出% し、
ステップJ4では第k(= 9 >命令rBEQ N
ANNOIJの分岐条件を支配するフラグすなわちゼロ
7ラグZが検出される。続いてステップd5.d6では
、このゼロ7ラグZを変化しうる最近の命令として、第
1表および第2表を参照して、第7命令rLDABJが
検出される。
このロード命令はアキュムレータBに[PORTIJの
内容を読込む内容であり、このアキュムレータBに関す
るゼロ7ラグZの成立の是非が分岐条件となる。したが
って、前述のような処理が繰り返された後、ステップd
lOでは、PORT 1の少なくとも1つのビット=1
・・・(8) が得られる。この後、処理はステップdi 1 に移
り、第5ブロツク■がループ構造の一部をなすかどろか
が判断され、これは否定となる。
内容を読込む内容であり、このアキュムレータBに関す
るゼロ7ラグZの成立の是非が分岐条件となる。したが
って、前述のような処理が繰り返された後、ステップd
lOでは、PORT 1の少なくとも1つのビット=1
・・・(8) が得られる。この後、処理はステップdi 1 に移
り、第5ブロツク■がループ構造の一部をなすかどろか
が判断され、これは否定となる。
続(ステップd12 の判断は肯定となり、ステップ
d15 で第5ブロツク■がネスティング構造の一部
を成すかどうかが判断される。第5ブロツク■は2重の
ネスティング構造を構成しており、ステップdlG
で上記第8式の分岐条件にネステイング要素が付加され
る。
d15 で第5ブロツク■がネスティング構造の一部
を成すかどうかが判断される。第5ブロツク■は2重の
ネスティング構造を構成しており、ステップdlG
で上記第8式の分岐条件にネステイング要素が付加され
る。
すなわち、第12図に明らかなように、第5ブロツク■
は、14ブロツク■を通過しなければ到達しない処理ブ
ロックであり、したがって第5ブロツク■の通過条件は
、第4ブロツク■の通過条件と上記第8式の条件との論
J!+!積となる。すなわち、 PORT17=0 かつ、 PORTIの少なくとも1つのビット=1・・・(9) の分岐条件が得られる。この後、ステップd13におい
て、記憶したブロック列はないので、処理はステップd
3に戻る。
は、14ブロツク■を通過しなければ到達しない処理ブ
ロックであり、したがって第5ブロツク■の通過条件は
、第4ブロツク■の通過条件と上記第8式の条件との論
J!+!積となる。すなわち、 PORT17=0 かつ、 PORTIの少なくとも1つのビット=1・・・(9) の分岐条件が得られる。この後、ステップd13におい
て、記憶したブロック列はないので、処理はステップd
3に戻る。
(6)第6ブロツク■を通る条件
第14図の70−チャートにおいて、ステップd3でj
=4のとき、対応するブロック化情報に、−が、第3表
を参照して存在しないことが判断される。したがって、
本件実施例のプログラム内室解析装置1は、現在のtj
SGブロックの分岐条件を、以前の直鎖ブロックと同−
分岐条件として設定する。すなわち現在の第6ブロツク
■の分岐条件は、以前の直鎖ブロックである第3ブロツ
ク■の分岐条件、すなわち上記第6式の条件として設定
される。この後、処理は前記パラメータjを+1インク
リメントした後に、ステップd3に戻る。
=4のとき、対応するブロック化情報に、−が、第3表
を参照して存在しないことが判断される。したがって、
本件実施例のプログラム内室解析装置1は、現在のtj
SGブロックの分岐条件を、以前の直鎖ブロックと同−
分岐条件として設定する。すなわち現在の第6ブロツク
■の分岐条件は、以前の直鎖ブロックである第3ブロツ
ク■の分岐条件、すなわち上記第6式の条件として設定
される。この後、処理は前記パラメータjを+1インク
リメントした後に、ステップd3に戻る。
(7)第7ブロツク■を通る条件
第7ブロツク■は、上記第2ブロツク■の分岐条件を考
察した段階で、第2ブロツク■と組合されてループ構造
を構成するブロックとして把握されている。したがって
第7ブロツク■の分岐条件は、上記!@3ブロックで挙
げたループ処理の離脱条件の否定の形式の条件である上
記第5式の条件として示される。
察した段階で、第2ブロツク■と組合されてループ構造
を構成するブロックとして把握されている。したがって
第7ブロツク■の分岐条件は、上記!@3ブロックで挙
げたループ処理の離脱条件の否定の形式の条件である上
記第5式の条件として示される。
(8)第8ブロツク■を通る条件
第8ブロツク■は、第3表および第4表に示す分岐ブロ
ック情報対(8=11 )brで示される。したがって
第1表第8命令の分岐条件より、第8ブロツク■を処理
が通る条件は、第4ブロツク■を通る条件の否定、すな
わち、 PORT17=1 ・
・・(10)となる。
ック情報対(8=11 )brで示される。したがって
第1表第8命令の分岐条件より、第8ブロツク■を処理
が通る条件は、第4ブロツク■を通る条件の否定、すな
わち、 PORT17=1 ・
・・(10)となる。
(9)第9ブロツク■を通る条件
第9ブロツク■も、第3表および第4表から分岐ブロッ
ク情11(9−11)brによって規定されるブロック
であり、したがって前記第51aツク■を通る条件を考
察した際に検討した第1表第9命令の分岐条件(第8式
)の否定の条件と、第4ブロツク■を通る条件(第7式
)との論理積となる。すなわち、 PORTIの 全ビット=0 かつ PORTlの第7ビツト=O・・・(11)の条
件が得られる。
ク情11(9−11)brによって規定されるブロック
であり、したがって前記第51aツク■を通る条件を考
察した際に検討した第1表第9命令の分岐条件(第8式
)の否定の条件と、第4ブロツク■を通る条件(第7式
)との論理積となる。すなわち、 PORTIの 全ビット=0 かつ PORTlの第7ビツト=O・・・(11)の条
件が得られる。
(10)第10ブロツク[相]を通る条件第10ブロツ
ク[株]は、第6ブロツク■と分岐命令を介在すること
なく線形に続くブロックであり、したがって第10ブロ
ツク[相]を処理が通る条件は、第6ブロツク■を通る
条件、すなわち第3ブロツク■を通る条件(上記第6式
)と同一になる。
ク[株]は、第6ブロツク■と分岐命令を介在すること
なく線形に続くブロックであり、したがって第10ブロ
ツク[相]を処理が通る条件は、第6ブロツク■を通る
条件、すなわち第3ブロツク■を通る条件(上記第6式
)と同一になる。
(11)第11ブロツク■を通る条件
第1表のフラグラムリストがら明がなように、第13命
令〜第21命令は、第1命令〜第12命令のメインルー
チンに対する割込み処理ルーチンである。その内容から
、上記第2表の欄外に付した入力/出力の定義において
、PORT2の第0ビツトに立ち上がりエツジまたは立
ち下がりエツジの信号が入力された状態を表わす割込み
ベクトルの条件、 IRQ2=0 ・・・
(12)が得られる。
令〜第21命令は、第1命令〜第12命令のメインルー
チンに対する割込み処理ルーチンである。その内容から
、上記第2表の欄外に付した入力/出力の定義において
、PORT2の第0ビツトに立ち上がりエツジまたは立
ち下がりエツジの信号が入力された状態を表わす割込み
ベクトルの条件、 IRQ2=0 ・・・
(12)が得られる。
(12)m 12ブロツク@を通る条件上記第4ブロツ
ク■を通る条件が導出された処理と同様な処理を経て、
第18命令[BNEJでゼロ7ラグZ=1となる条件が
求められればよい。
ク■を通る条件が導出された処理と同様な処理を経て、
第18命令[BNEJでゼロ7ラグZ=1となる条件が
求められればよい。
すなわち第18命令からフラグラムリストをさがのぼり
、当該分岐命令を支配するフラグであるゼロ7ラグZを
変化させる最近の命令を検出する。
、当該分岐命令を支配するフラグであるゼロ7ラグZを
変化させる最近の命令を検出する。
これは第17命令でストア命令jsTAAJが検出され
、パラメータとして7キユムレータAが検出される。ア
キュムレータへの入力命令として、第13命令でロード
命令「LDDJが検出される。したがって第13命令〜
第18命令の実行内容をオペランドで記述すれば、 ICAPTI(D)−ZCAPT(D)lの上位バイト
=0・・・(13) が得られる。
、パラメータとして7キユムレータAが検出される。ア
キュムレータへの入力命令として、第13命令でロード
命令「LDDJが検出される。したがって第13命令〜
第18命令の実行内容をオペランドで記述すれば、 ICAPTI(D)−ZCAPT(D)lの上位バイト
=0・・・(13) が得られる。
(13)第13命令■を通る条件
この場合、第1表のプログラムリストにおいて、第13
命令以降の処理の進行において、処理が第12ブロツク
■に進行しない条件、すなわち上記第13式の条件の否
定、 (CAPTI(D) −ZCAPT(D)lノ上位ハイ
ド≠O・・・(14) が求めるべき条件となる。
命令以降の処理の進行において、処理が第12ブロツク
■に進行しない条件、すなわち上記第13式の条件の否
定、 (CAPTI(D) −ZCAPT(D)lノ上位ハイ
ド≠O・・・(14) が求めるべき条件となる。
このようにして第5図ステップ論3 において摘出され
るべき分岐条件は、各ブロック■〜■を処理が通る条件
として導出された。これ以降、処理は第5図ステップ峻
4に移る。
るべき分岐条件は、各ブロック■〜■を処理が通る条件
として導出された。これ以降、処理は第5図ステップ峻
4に移る。
ステップm4 では、書込み命令単位の入出力結合処
理が行なわれる。ここに言う書込み命令とは、ストア命
令と、オペランドの直接毘作命令(たとえばオペランド
の数値を+1増加させるインクリメント命令jINcJ
なと)とを指す。このような命令の検出は、第1表のプ
ログラムリストにおいて、各命令を読取ることによって
直ちに実現できる。
理が行なわれる。ここに言う書込み命令とは、ストア命
令と、オペランドの直接毘作命令(たとえばオペランド
の数値を+1増加させるインクリメント命令jINcJ
なと)とを指す。このような命令の検出は、第1表のプ
ログラムリストにおいて、各命令を読取ることによって
直ちに実現できる。
このような入出力の結合処理は、第15図の70−チャ
ートに示される。第15図 ステップel。
ートに示される。第15図 ステップel。
C2では、第1表で示されるプログラムに対して、前述
したブロック化処理と分岐条件の生成処理とを行なう、
この後、ステップe3 C′は、第1表に示されるプ
ログラムにおいて、書込命令が検出される。このような
書込み命令としては、第2命令[INcJ、第6命令r
sTAAJ、第11命令「5TAAJ、第16命令「5
TXJ、第17命令「5TAAJおよび第20命令「5
TAA」が、後述するように検出される。
したブロック化処理と分岐条件の生成処理とを行なう、
この後、ステップe3 C′は、第1表に示されるプ
ログラムにおいて、書込命令が検出される。このような
書込み命令としては、第2命令[INcJ、第6命令r
sTAAJ、第11命令「5TAAJ、第16命令「5
TXJ、第17命令「5TAAJおよび第20命令「5
TAA」が、後述するように検出される。
(1)第2命令[INcJについて
第15図ステップe4 では、当該命令に関するパラ
メータを検出する。上述した残余の書込命令、たとえば
第6命令rSTAAJでは、このようなパラメータとし
てたとえば7キユムレータAが検出されるが、第5命令
のようなメモリの直接繰作命令では、本ステップを行な
うことなく、ステップe5 で当該命令がその命令の
所属するブロックの先頭であるかどうかを判断する。否
定であれば、ステップe6 に移って、命令列の配列
方向と反対方向に一命令を検出する。肯定であればステ
ップe7 で、当該ブロックに至るブロック列の種類、
すなわち当該ブロックに至る処理の系統の種類を記憶す
る。
メータを検出する。上述した残余の書込命令、たとえば
第6命令rSTAAJでは、このようなパラメータとし
てたとえば7キユムレータAが検出されるが、第5命令
のようなメモリの直接繰作命令では、本ステップを行な
うことなく、ステップe5 で当該命令がその命令の
所属するブロックの先頭であるかどうかを判断する。否
定であれば、ステップe6 に移って、命令列の配列
方向と反対方向に一命令を検出する。肯定であればステ
ップe7 で、当該ブロックに至るブロック列の種類、
すなわち当該ブロックに至る処理の系統の種類を記憶す
る。
第2命令に関しては、tjS2命令を含む第2ブロツク
■に至るブロックは、上記ブロック化処理から得られた
第12図および第13図の処理の流れ図に示されるよう
に、第1ブロツク■および第7ブロツク■である。ステ
ップe8 では、このような記憶したブロック列中か
ら−ブロック (たとえば第7ブロツク■)を選択し、
処理はステップe6に移る。
■に至るブロックは、上記ブロック化処理から得られた
第12図および第13図の処理の流れ図に示されるよう
に、第1ブロツク■および第7ブロツク■である。ステ
ップe8 では、このような記憶したブロック列中か
ら−ブロック (たとえば第7ブロツク■)を選択し、
処理はステップe6に移る。
ステップe6 では、選択されたブロックにおいて、
命令列の配列方向と反対方向に一命令を検出し、現時点
では第4命令[BNEJを検出する。これによりステッ
プe9.el 1 、 el 2の21断は、それぞれ
すべて否定であり、したがって処理はステップe5
に戻る。このようにして上述した処理を繰り返し行ない
、ステップe6 で第2命令が読取られたとさ、ステ
ップel 1 でループになったことが判断され、ス
テップe13 でループ要素が追加される。すなわち
第2命令の実行内容は、C0UNT←C0UNT+1
・・・(15)であるが、この処理がループ構
造にしたがってn回実行される場合を想定すると、 C0UNT4−C0UNT4n −(16)と
なる、これが第2命令の実行内容の一般形である。
命令列の配列方向と反対方向に一命令を検出し、現時点
では第4命令[BNEJを検出する。これによりステッ
プe9.el 1 、 el 2の21断は、それぞれ
すべて否定であり、したがって処理はステップe5
に戻る。このようにして上述した処理を繰り返し行ない
、ステップe6 で第2命令が読取られたとさ、ステ
ップel 1 でループになったことが判断され、ス
テップe13 でループ要素が追加される。すなわち
第2命令の実行内容は、C0UNT←C0UNT+1
・・・(15)であるが、この処理がループ構
造にしたがってn回実行される場合を想定すると、 C0UNT4−C0UNT4n −(16)と
なる、これが第2命令の実行内容の一般形である。
このときの実行条件は、上記第7ブロツク■を通る条件
、すなわち上記第5式の条件となる。したがって第2命
令に関しては、 if TIME−(n+ C0tlNT)≠0th
en C0UNT4−C0UNT+I+
−(17)となる。
、すなわち上記第5式の条件となる。したがって第2命
令に関しては、 if TIME−(n+ C0tlNT)≠0th
en C0UNT4−C0UNT+I+
−(17)となる。
(2)第6命令について
ステップe3 では、次の書込命令である第6命令を
検出し、ステップe4 で第6命令に関するパラメー
タすなわちアキュムレータ八を検出する。
検出し、ステップe4 で第6命令に関するパラメー
タすなわちアキュムレータ八を検出する。
ステップe5の判断は否定となり、ステップe6でtj
S5命令1−CLRAJを検出する。
S5命令1−CLRAJを検出する。
ステップe9 では、この#tJ5命令が上記パラメ
ータであるアキュレータAを変化させる命令であること
が判断され、ステップelo で第5命令が記憶され
る。ステップall では、当該第5命令がループ構
造に含まれないことが判断され、ステップe12 で
は、第5命令が7キユムレータへの入力命令であること
が↑畷断される。この後、ステップe14 の判断で
1′r定となり、処理はステップe15に移る。
ータであるアキュレータAを変化させる命令であること
が判断され、ステップelo で第5命令が記憶され
る。ステップall では、当該第5命令がループ構
造に含まれないことが判断され、ステップe12 で
は、第5命令が7キユムレータへの入力命令であること
が↑畷断される。この後、ステップe14 の判断で
1′r定となり、処理はステップe15に移る。
したがって実行内容は、
C0UNT←0 ・・・(18)と
なり、実行条件は、処理が第3ブロツク■を通る条件、
すなわち上記第6式で示される条件と同一になり、これ
らを整理すれば、 if TIME −(n+C0INT)= Otl
+en C0UNT ←O・=(19)め結果が得ら
れる。
なり、実行条件は、処理が第3ブロツク■を通る条件、
すなわち上記第6式で示される条件と同一になり、これ
らを整理すれば、 if TIME −(n+C0INT)= Otl
+en C0UNT ←O・=(19)め結果が得ら
れる。
く3)第11命令について
第11命令については、第15図に示されるステップe
3 で当該命令が検出された後、ステップe4 で
パラメータとしてアキュムレータAが検出される。ステ
ップe5 では、上記第3表および第4表を参照して
、第11命令が第6ブロツク■の先頭であることが↑曜
断され、処理はステップe7に移る。この判断によって
、第1表のプログラムリストにおいて、第11命令に到
達するにはtpJ5ブロック■、第9ブロツク■および
第8ブロツク■をそれぞれ通る3つの経路が存在するこ
とが認識される。以下、後述する実行内容の検出と実行
条件の検出とを各経路毎に行ない、それらの結果が論理
和として出力される。
3 で当該命令が検出された後、ステップe4 で
パラメータとしてアキュムレータAが検出される。ステ
ップe5 では、上記第3表および第4表を参照して
、第11命令が第6ブロツク■の先頭であることが↑曜
断され、処理はステップe7に移る。この判断によって
、第1表のプログラムリストにおいて、第11命令に到
達するにはtpJ5ブロック■、第9ブロツク■および
第8ブロツク■をそれぞれ通る3つの経路が存在するこ
とが認識される。以下、後述する実行内容の検出と実行
条件の検出とを各経路毎に行ない、それらの結果が論理
和として出力される。
(7)第5ブロツク■を通る経路の場合ステップe4
でパラメータであるアキュムレータAを検出し、プロ
グラムをさかのぼると、第10命令で7キユムレータA
に関するロード命令が検出される。ここで第11命令は
、入出力ポートへの書込み命令であり、論理演算として
扱う、したがって第10命令および第11命令による実
行内容は、第1表のプログラムリスト上の表現では、P
ORTI←¥80 ・・・(20)と表
現されるが、論理演算の結果としては、上記第10式と
同等な PORT17←1 ・・・(10)な
る論理式が得られる。
でパラメータであるアキュムレータAを検出し、プロ
グラムをさかのぼると、第10命令で7キユムレータA
に関するロード命令が検出される。ここで第11命令は
、入出力ポートへの書込み命令であり、論理演算として
扱う、したがって第10命令および第11命令による実
行内容は、第1表のプログラムリスト上の表現では、P
ORTI←¥80 ・・・(20)と表
現されるが、論理演算の結果としては、上記第10式と
同等な PORT17←1 ・・・(10)な
る論理式が得られる。
このときの実行条件は、第5ブロツク■を処理が通る条
件(上記第9式)と、第2ブロツク■および第7ブロツ
ク■からなるループを処理が離脱する条件、すなわち処
理がPt53ブロツク■を通る条件(上記第6式)との
w71理積となる。したがって、if TIME−
(n+ C0UNT)= 0and PORT17”
FO and FORT1p!¥00 LI+en PORT17+1
・=(21)なる論理式出力が得られる。
件(上記第9式)と、第2ブロツク■および第7ブロツ
ク■からなるループを処理が離脱する条件、すなわち処
理がPt53ブロツク■を通る条件(上記第6式)との
w71理積となる。したがって、if TIME−
(n+ C0UNT)= 0and PORT17”
FO and FORT1p!¥00 LI+en PORT17+1
・=(21)なる論理式出力が得られる。
(イ)第8ブロツク■を通る場合
ステップe6 でプログラムをさかのぼると、第6命令
でストア命令[5TAAJが検出される。したがって求
める実行内容は、前述の第6命令の場合と同様にして、
PORTI←¥00が求められる。
でストア命令[5TAAJが検出される。したがって求
める実行内容は、前述の第6命令の場合と同様にして、
PORTI←¥00が求められる。
また実行条件は、前述したループの離脱条件すなわち第
3ブロツク■を通る条件(第6式)と、第8ブロツク■
を処理が通る条rト(第10式)との論J!!!積であ
る。したがってこれらをまとめて、if TIME
(n+C0UNT)= 0and PORT17
=1 tben PORT1←¥00
・(22)の論理式出力が得られる。
3ブロツク■を通る条件(第6式)と、第8ブロツク■
を処理が通る条rト(第10式)との論J!!!積であ
る。したがってこれらをまとめて、if TIME
(n+C0UNT)= 0and PORT17
=1 tben PORT1←¥00
・(22)の論理式出力が得られる。
(つ)第9ブロツク■を通る場合
ステップe4 で検出されるパラメータは、アキュム
レータAであり、第9ブロツク■を通ってプログラムを
さかのぼると第6命令を検出する。したがってこの場合
の実行内容は、上記第22式と同一であり、実行条件は
ループの離脱条件すなわち第3ブロツク■を通る条件(
第6式)と、第4ブロツク■を通る条件(第7式)と、
第9ブロツク■を通る条件(第11式)との論理積であ
る。したがってこれらをまとめて、 if TIME −(n+ C0IJNT)= 0
and PORT17: 0 and (r’0RT17=o and r’0RT
1=¥00)耽ben PORTI= ¥ 00
−(23)の出
力が得られる。
レータAであり、第9ブロツク■を通ってプログラムを
さかのぼると第6命令を検出する。したがってこの場合
の実行内容は、上記第22式と同一であり、実行条件は
ループの離脱条件すなわち第3ブロツク■を通る条件(
第6式)と、第4ブロツク■を通る条件(第7式)と、
第9ブロツク■を通る条件(第11式)との論理積であ
る。したがってこれらをまとめて、 if TIME −(n+ C0IJNT)= 0
and PORT17: 0 and (r’0RT17=o and r’0RT
1=¥00)耽ben PORTI= ¥ 00
−(23)の出
力が得られる。
このようにして、第11命令に関する入出力条件の結合
処理が実現された。
処理が実現された。
(4)第16命令について
第1表のプログラムリストにおいて、行番号13〜21
は割込みルーチンであり、行番号1〜12のメイン処理
ルーチンとは独立の内容となっている。したがって第1
5図ステップe4 で第16命令1”5TXJが検出
される。第16命令に関して検出されるパラメータは、
インデックスレジスタXであり、ステップe6 でプ
ログラムをさかのぼると第15命令でロード命令が検出
される。したかって第16命令に関する入出力結合結果
は、if IRQ2=1 tben ZCAPT4−CAPT 1 ・=
(24)の論理式出力が得られる。
は割込みルーチンであり、行番号1〜12のメイン処理
ルーチンとは独立の内容となっている。したがって第1
5図ステップe4 で第16命令1”5TXJが検出
される。第16命令に関して検出されるパラメータは、
インデックスレジスタXであり、ステップe6 でプ
ログラムをさかのぼると第15命令でロード命令が検出
される。したかって第16命令に関する入出力結合結果
は、if IRQ2=1 tben ZCAPT4−CAPT 1 ・=
(24)の論理式出力が得られる。
(5)第17命令「5TAAJについて第16命令と同
様にステップe4 で、パラメータとして7キユムレー
タ八を検出する。ステップe6 でプログラムをさか
のぼると、fpJ13命令でロード命令[LDDJが検
出される。したがって第17命令でオペランド[TIM
EJにストアされるのは、オペランド[cAPTIJお
上りオペランド「ZcAPTJの各上位バイト情報であ
る。また実行条件は第16命令と同一である。したがっ
てこれらを整理して、 if IRQ2=1 then TIHE−(CAPTI(D)−ZCAP
T(D))(ll)・・・(25) 注:第25式の右辺末尾の(H)は、右辺のオペランド
の上位バイトであることを示す。
様にステップe4 で、パラメータとして7キユムレー
タ八を検出する。ステップe6 でプログラムをさか
のぼると、fpJ13命令でロード命令[LDDJが検
出される。したがって第17命令でオペランド[TIM
EJにストアされるのは、オペランド[cAPTIJお
上りオペランド「ZcAPTJの各上位バイト情報であ
る。また実行条件は第16命令と同一である。したがっ
てこれらを整理して、 if IRQ2=1 then TIHE−(CAPTI(D)−ZCAP
T(D))(ll)・・・(25) 注:第25式の右辺末尾の(H)は、右辺のオペランド
の上位バイトであることを示す。
(6)第20命令[5TAAJについて第20命令の場
合には、第15図ステップe4で、当該命令に関するパ
ラメータすなわちアキュムレータAを検出する。このパ
ラメータを決定する最新の命令をプログラムをさかのぼ
ってステップe6 で検索すると、Pt519命令でア
キュムレータAに関する操作命令rDECAJが検出さ
れる。
合には、第15図ステップe4で、当該命令に関するパ
ラメータすなわちアキュムレータAを検出する。このパ
ラメータを決定する最新の命令をプログラムをさかのぼ
ってステップe6 で検索すると、Pt519命令でア
キュムレータAに関する操作命令rDECAJが検出さ
れる。
したがって第20命令の実行内容は、
C0UNT、−A−1・・・(26)
となる。
ここで第19命令は、第18命令の分岐命令でゼロ7ラ
グZ=1の場合であることを考慮すると、上記pA2S
式において、 TIME=7キユムレータA=O・・・(27)の場合
に相当する。したがって上記第26式において、アキュ
ムレータA=0であり、 C0UNT←¥FF ・・・(28)
が結論される。
グZ=1の場合であることを考慮すると、上記pA2S
式において、 TIME=7キユムレータA=O・・・(27)の場合
に相当する。したがって上記第26式において、アキュ
ムレータA=0であり、 C0UNT←¥FF ・・・(28)
が結論される。
その実行条件は、第11ブロツク■および第12ブロツ
ク0を処理が通る条件、すなわち上記第12式お上V第
13式で示される各条件の論理積となる。したがってこ
れらをまとめれば、if IRQ2=1 and (CAPT 1 (D)−ZCAPT(D)
)(II)= 0tben COυNT−¥FF
・(29)が得られ、これでtj%1表
のプログラムリストに関して第5図ステップ曽4 の書
込み命令単位の入出力結合処理が行なわれる。
ク0を処理が通る条件、すなわち上記第12式お上V第
13式で示される各条件の論理積となる。したがってこ
れらをまとめれば、if IRQ2=1 and (CAPT 1 (D)−ZCAPT(D)
)(II)= 0tben COυNT−¥FF
・(29)が得られ、これでtj%1表
のプログラムリストに関して第5図ステップ曽4 の書
込み命令単位の入出力結合処理が行なわれる。
続いて、第5図ステップ鵠5 で後述するようなパイル
の結合処理が行なわれる。ここに言)パイルとは、プロ
グラムリスト中におけるオペランドの直接操作命令を含
むたとえば上記第29式のような書込み命令が実行され
るための実行条件と実行内容との結合表記を指す、その
具体的処理内容は第16図の70−チャートに示される
。
の結合処理が行なわれる。ここに言)パイルとは、プロ
グラムリスト中におけるオペランドの直接操作命令を含
むたとえば上記第29式のような書込み命令が実行され
るための実行条件と実行内容との結合表記を指す、その
具体的処理内容は第16図の70−チャートに示される
。
上述したように、PAi表のプログラムリストには6個
の書込み命令があり、第3命令には第17式のパイルD
7、第6命令には第19式のパイルD6、第4命令には
第21式〜第23式のパイルD 3 、D 2 、D
1、第15命令には第24式のパイルD5、Pt%17
命令には第25式のパイルD4、第20命令には第29
式のD8がそれぞれ作成される。
の書込み命令があり、第3命令には第17式のパイルD
7、第6命令には第19式のパイルD6、第4命令には
第21式〜第23式のパイルD 3 、D 2 、D
1、第15命令には第24式のパイルD5、Pt%17
命令には第25式のパイルD4、第20命令には第29
式のD8がそれぞれ作成される。
以下、第16図を参照して、パイル結合処理について説
明する。ステップ「1 では、ボートへの書込み命令が
ある外部出力命令パイルDI、D2゜D3を検出する。
明する。ステップ「1 では、ボートへの書込み命令が
ある外部出力命令パイルDI、D2゜D3を検出する。
ステップf2 では、たとえばパイルD1中の未決定
パラメータを決定するパイルを検出する。すなわち、パ
イルD1の実行条件に関して、パラメータ1’TIME
J、l”C0UNTJが未決定である。
パラメータを決定するパイルを検出する。すなわち、パ
イルD1の実行条件に関して、パラメータ1’TIME
J、l”C0UNTJが未決定である。
また、残余の外部出力命令パイルD2.D3についても
、それぞれ実行内容は異なるものの、未決定パラメータ
はパイルD1と同一のものが検出される。
、それぞれ実行内容は異なるものの、未決定パラメータ
はパイルD1と同一のものが検出される。
以下、このようなパラメータを決定するパイルを検出す
る。パラメータ[TIMEJについてはパイルD4が検
出され、続くステップr3 では該パイルD4に含ま
れる全てのパラメータが決定されているかどうかを判断
する。現時点では判断結果は否定であり、処理はステッ
プf2.に戻り、パラメータrCAI)T I J、r
ZcAPTJを決定するパイルを検出する。このとき第
5パイルD5が選ばれる。このときステップf3 で
は、全パラメータが決定されたことがtq断され、処理
はステップf4に移り、外部出力命令パイルが終了した
かどうかをtl断する。現時点では外部出力命令パイル
D1のみを検討しており、判断結果は否定となり、処理
はステップr1 に戻る。
る。パラメータ[TIMEJについてはパイルD4が検
出され、続くステップr3 では該パイルD4に含ま
れる全てのパラメータが決定されているかどうかを判断
する。現時点では判断結果は否定であり、処理はステッ
プf2.に戻り、パラメータrCAI)T I J、r
ZcAPTJを決定するパイルを検出する。このとき第
5パイルD5が選ばれる。このときステップf3 で
は、全パラメータが決定されたことがtq断され、処理
はステップf4に移り、外部出力命令パイルが終了した
かどうかをtl断する。現時点では外部出力命令パイル
D1のみを検討しており、判断結果は否定となり、処理
はステップr1 に戻る。
これ以降、パイルD2.D3が外部出力命令パイルとし
て検出され、それぞれについて前述の場合と同様な処理
が行なわれる。パイルD1〜D3では、未決定のパラメ
ータは共通であり、したがってステップf2 では同
一内容の処理が行なわれる。このようにしてパイルD3
に対するパイル結合が終了した後、ステップr4 で
は判断結果が1′r定となり、ステップf5に移って第
17図(1−1)〜(3−3)のパイル結合結果が出力
される。このようにして第5図ステップ−5のパイルの
結合処理が終了する。
て検出され、それぞれについて前述の場合と同様な処理
が行なわれる。パイルD1〜D3では、未決定のパラメ
ータは共通であり、したがってステップf2 では同
一内容の処理が行なわれる。このようにしてパイルD3
に対するパイル結合が終了した後、ステップr4 で
は判断結果が1′r定となり、ステップf5に移って第
17図(1−1)〜(3−3)のパイル結合結果が出力
される。このようにして第5図ステップ−5のパイルの
結合処理が終了する。
以上のように本実施例では、第5図ステップ輸3以降の
分岐条件摘出処理などを行なうに先だって、第5図ステ
ップm1 の流れ構造の解析処理を行なうようにした
。したがってプログラム中の分岐命令や分岐先命令が事
前に明らかとなり、CC1くなどの制御情報は、これら
の命令に関してのみ記憶すればよい、したがって被解析
プログラムの動作内容を分析するに当り、たとえばCC
Rを全命令にわたって記憶する必要がなく、装置に要求
される記憶容量を格段に削減できる。
分岐条件摘出処理などを行なうに先だって、第5図ステ
ップm1 の流れ構造の解析処理を行なうようにした
。したがってプログラム中の分岐命令や分岐先命令が事
前に明らかとなり、CC1くなどの制御情報は、これら
の命令に関してのみ記憶すればよい、したがって被解析
プログラムの動作内容を分析するに当り、たとえばCC
Rを全命令にわたって記憶する必要がなく、装置に要求
される記憶容量を格段に削減できる。
一方、本発明の他の実施例として、第8図示の流れ構造
の解析処理においてブロック化情報(k、m)を記憶す
る動作とともに、検出された各分岐命令に関して分岐条
件の摘出処理を同時に行なうようにしてもよい、すなわ
ち上述したような流れ構造の解析を行なう処理は、分岐
命令と分岐先命令とのたとえば行番号を検出するのみで
あり、分岐条件自身を把握する処理は伴ってはいない、
ここで上記第8図の70−チャートに示すような処理に
おいて、ステップb6 の後段に第18図示の処理を
追加することによって、流れ構造の解析と平行して、分
岐条件の摘出処理を行なうようにできる。
の解析処理においてブロック化情報(k、m)を記憶す
る動作とともに、検出された各分岐命令に関して分岐条
件の摘出処理を同時に行なうようにしてもよい、すなわ
ち上述したような流れ構造の解析を行なう処理は、分岐
命令と分岐先命令とのたとえば行番号を検出するのみで
あり、分岐条件自身を把握する処理は伴ってはいない、
ここで上記第8図の70−チャートに示すような処理に
おいて、ステップb6 の後段に第18図示の処理を
追加することによって、流れ構造の解析と平行して、分
岐条件の摘出処理を行なうようにできる。
以下、第18図をあわせて参照して、上記流れ構造の解
析処理の他の実施例について説明する。
析処理の他の実施例について説明する。
第18図のステップb7 では、検出された分岐命令
(以下、第1表の第4命令を想定して説明する)に指定
されたフラグを検出する。すなわち第4命令はrBNE
LOOPJであり、これは第6図の70−チャート
におけるステップa4 に示すように、ゼロ7ラグZの
状態によって分岐の実行/非叉行を選択する命令である
。すなわちステップb7 では、ゼロ7ラグZが考察
対象として検出される。
(以下、第1表の第4命令を想定して説明する)に指定
されたフラグを検出する。すなわち第4命令はrBNE
LOOPJであり、これは第6図の70−チャート
におけるステップa4 に示すように、ゼロ7ラグZの
状態によって分岐の実行/非叉行を選択する命令である
。すなわちステップb7 では、ゼロ7ラグZが考察
対象として検出される。
続くステップ+38では、検出された7ラグ(たとえば
ゼロ7ラグZ)に関して、第4行命令以前の行番号1〜
3の命令において、行番号4に最も近い行番号で、この
検出されたフラグの状態を変化させ得る命令と、その変
化を規定するパラメータとを検出する。
ゼロ7ラグZ)に関して、第4行命令以前の行番号1〜
3の命令において、行番号4に最も近い行番号で、この
検出されたフラグの状態を変化させ得る命令と、その変
化を規定するパラメータとを検出する。
すなわち第1表のプログラムリストにおいて第4命令か
らさかのぼると、第2表からあきらがなようにゼロ7ラ
グZは第3命令でその状態が変化し得ることが理解され
る。またゼロ7ラグZの状態を規定するパラメータは、
アキュムレータAであることが埋Mされる。
らさかのぼると、第2表からあきらがなようにゼロ7ラ
グZは第3命令でその状態が変化し得ることが理解され
る。またゼロ7ラグZの状態を規定するパラメータは、
アキュムレータAであることが埋Mされる。
引続く第18図ステップb9 では、検出されたパラ
メータ(たとえばアキュムレータA)に関する入力命令
を検出する。これは第1命令のロード命令「LDAA
TIMEJである。したがってプログラムリストの第
1行〜第6行の範囲では、第1行〜第4行は処理の流れ
が無条件に通る部分であるが、第5行〜第6行は通らな
いこともあり得る部分である。したがって第5行および
第6行を処理が通る条件は、 TIME (n+cOUNT)=0 ・13o
)n:fjS1行〜第行灯第4行しループ数が成立する
ことである。
メータ(たとえばアキュムレータA)に関する入力命令
を検出する。これは第1命令のロード命令「LDAA
TIMEJである。したがってプログラムリストの第
1行〜第6行の範囲では、第1行〜第4行は処理の流れ
が無条件に通る部分であるが、第5行〜第6行は通らな
いこともあり得る部分である。したがって第5行および
第6行を処理が通る条件は、 TIME (n+cOUNT)=0 ・13o
)n:fjS1行〜第行灯第4行しループ数が成立する
ことである。
すなわち前記ステップb10 では、上記第30式のよ
うな分岐条件を記憶する。この後、処理は第8図ステッ
プb4 に移り、引続く行の処理がなわれる。
うな分岐条件を記憶する。この後、処理は第8図ステッ
プb4 に移り、引続く行の処理がなわれる。
上記第8図の70−チャートまたは、第8図および第1
8図の70−チャートに基づく処理を、第1表に示す全
プログラムに対して行なうことにより、該プログラムの
流れ構造の解析を、第9図示のように行なうことができ
る。こうして第5図ステップ鯵1 の処理は終了する。
8図の70−チャートに基づく処理を、第1表に示す全
プログラムに対して行なうことにより、該プログラムの
流れ構造の解析を、第9図示のように行なうことができ
る。こうして第5図ステップ鯵1 の処理は終了する。
効 果
以上のように本発明に従えば、被解析プログラムの各命
令を読取って、たとえば書込み命令単位の入力動作と出
力動作とを結合する処理などを行なうに先だって、プロ
グラム全体の処理の流れの構造を認識するようにした。
令を読取って、たとえば書込み命令単位の入力動作と出
力動作とを結合する処理などを行なうに先だって、プロ
グラム全体の処理の流れの構造を認識するようにした。
したがって全命令にわたってコンディションコードレジ
スタなどの制御情報をすべて記憶する必要がな(、処理
に必要な記憶容量を格段に削減できるとともに、動作内
容の解析処理を格段に効率化できる。
スタなどの制御情報をすべて記憶する必要がな(、処理
に必要な記憶容量を格段に削減できるとともに、動作内
容の解析処理を格段に効率化できる。
第1図は本発明の一実施例のプログラム内容解析装r1
11の構成を示すブロック図、第2図は解析装(l!1
の記憶領域10の構成を示すブロック図、第3図はプロ
グラム内容解析装置1の基本的動作を示す70−チャー
ト、第4図は表示装置5の表示例を示す図、第5図は解
析装置?!1のプログラム内容解析処理手順を示すフロ
ーチャート、第6図お上びPtS7図は被解析プログラ
ム例の動作内容を示す70−チャート、第8図は流れ構
造の解析処理手順を示す70−チャート、t59図は流
れ構造の解析処理結果を示す系統図、第10図はブロッ
ク化処理手順を示すフローチャート、第11図はブロッ
ク化処理の中間結果を示す系統図、第12図および第1
3図はブロック化処理結果を示す系統図、第14図は分
岐条件摘出処理手順を示す70−チャート、第15図は
入出力結合処理手順を示すフローチャート、第16図は
パイル結合処理手順を示すフローチャート、Pt517
図はパイル結合処理結果を示す系統図、第18図は本発
明の他の実施例の処理手順が示す70−チャートである
。 1・・・プログラム内容解析装置、2・・・磁気テープ
装置、3・・・磁気ディスク装置、4・・・内部記憶装
置、5・・・表示装置、8・・・処理装置、10・・・
記憶領域、10a・・・アーキテクチャ記憶領域 代理人 弁理士 西教 圭一部 第3図 第4図 第 5 図 イでピσ)りγLfi 第 6図 メインルーチンへ 第8図 13−−−− >+込 第10図 第12図 第13図 第16図 第17図 D5 D!:I
O5第18図
11の構成を示すブロック図、第2図は解析装(l!1
の記憶領域10の構成を示すブロック図、第3図はプロ
グラム内容解析装置1の基本的動作を示す70−チャー
ト、第4図は表示装置5の表示例を示す図、第5図は解
析装置?!1のプログラム内容解析処理手順を示すフロ
ーチャート、第6図お上びPtS7図は被解析プログラ
ム例の動作内容を示す70−チャート、第8図は流れ構
造の解析処理手順を示す70−チャート、t59図は流
れ構造の解析処理結果を示す系統図、第10図はブロッ
ク化処理手順を示すフローチャート、第11図はブロッ
ク化処理の中間結果を示す系統図、第12図および第1
3図はブロック化処理結果を示す系統図、第14図は分
岐条件摘出処理手順を示す70−チャート、第15図は
入出力結合処理手順を示すフローチャート、第16図は
パイル結合処理手順を示すフローチャート、Pt517
図はパイル結合処理結果を示す系統図、第18図は本発
明の他の実施例の処理手順が示す70−チャートである
。 1・・・プログラム内容解析装置、2・・・磁気テープ
装置、3・・・磁気ディスク装置、4・・・内部記憶装
置、5・・・表示装置、8・・・処理装置、10・・・
記憶領域、10a・・・アーキテクチャ記憶領域 代理人 弁理士 西教 圭一部 第3図 第4図 第 5 図 イでピσ)りγLfi 第 6図 メインルーチンへ 第8図 13−−−− >+込 第10図 第12図 第13図 第16図 第17図 D5 D!:I
O5第18図
Claims (2)
- (1)機能語のみまたは機能語とオペランドとの組合せ
などの命令列を記憶手段から順次読出して分岐命令を検
出し、分岐先命令を検出し、 該分岐命令および分岐先命令のプログラム中における配
置位置をそれぞれ特定する情報の対を記憶するようにし
たことを特徴とするプログラム内容解析装置。 - (2)上記分岐命令を検出したとき、命令列の配列方向
と反対方向に各命令を読取り、分岐命令に指定されるフ
ラグを変化させ得る命令を検出し、検出された命令にお
いて、上記フラグの変化を規定する要素を検出し、 上記反対方向に沿つて、上記要素に関する入力命令を検
出し、 入力命令以降分岐命令までの実行内容をオペランドを用
いて表わし、 分岐命令の分岐条件を上記オペランドによる実行内容の
形式で記憶するようにしたことを特徴とする特許請求の
範囲第1項記載のプログラム内容解析装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62154051A JPH0820968B2 (ja) | 1987-06-20 | 1987-06-20 | プログラム内容解析装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62154051A JPH0820968B2 (ja) | 1987-06-20 | 1987-06-20 | プログラム内容解析装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS63317843A true JPS63317843A (ja) | 1988-12-26 |
JPH0820968B2 JPH0820968B2 (ja) | 1996-03-04 |
Family
ID=15575839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP62154051A Expired - Fee Related JPH0820968B2 (ja) | 1987-06-20 | 1987-06-20 | プログラム内容解析装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0820968B2 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5854449A (ja) * | 1981-09-28 | 1983-03-31 | Fujitsu Ltd | 分岐命令短縮化処理方式 |
JPS6081641A (ja) * | 1983-10-11 | 1985-05-09 | Matsushita Electric Ind Co Ltd | レジスタトレース方法 |
JPS60107142A (ja) * | 1983-11-16 | 1985-06-12 | Matsushita Electric Ind Co Ltd | プログラム翻訳装置 |
JPS6167131A (ja) * | 1984-09-10 | 1986-04-07 | Fujitsu Ltd | ドキユメント自動出力制御方式 |
-
1987
- 1987-06-20 JP JP62154051A patent/JPH0820968B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5854449A (ja) * | 1981-09-28 | 1983-03-31 | Fujitsu Ltd | 分岐命令短縮化処理方式 |
JPS6081641A (ja) * | 1983-10-11 | 1985-05-09 | Matsushita Electric Ind Co Ltd | レジスタトレース方法 |
JPS60107142A (ja) * | 1983-11-16 | 1985-06-12 | Matsushita Electric Ind Co Ltd | プログラム翻訳装置 |
JPS6167131A (ja) * | 1984-09-10 | 1986-04-07 | Fujitsu Ltd | ドキユメント自動出力制御方式 |
Also Published As
Publication number | Publication date |
---|---|
JPH0820968B2 (ja) | 1996-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9886017B2 (en) | Counter operation in a state machine lattice | |
US5854930A (en) | System, method, and computer program product for script processing | |
Ravi et al. | Hints to accelerate symbolic traversal | |
CN112764809B (zh) | 基于编码特征的sql代码抄袭检测方法及系统 | |
CN106484914A (zh) | 一种快速实现数据挖掘分析的模块组件化方法 | |
US10769099B2 (en) | Devices for time division multiplexing of state machine engine signals | |
JPS63317843A (ja) | プログラム内容解析装置 | |
JPH0820973B2 (ja) | プログラム内容解析装置 | |
JPS63317844A (ja) | プログラム内容解析装置 | |
CN100483402C (zh) | 用于执行高速上下文检索和数据模式特征描述的可编程规则处理设备 | |
JP2548197B2 (ja) | プログラム内容解析装置 | |
JPS63317848A (ja) | プログラム内容解析装置 | |
US20070100825A1 (en) | Process for sorting large lists on a 64-bit computing platform | |
JPS63317852A (ja) | プログラム内容解析装置 | |
JPS63317849A (ja) | プログラム内容解析装置 | |
JPS63317851A (ja) | プログラム内容解析装置 | |
JPS63317845A (ja) | プログラム内容解析装置 | |
JPS63317846A (ja) | プログラム内容解析装置 | |
Langfelder et al. | Package ‘WGCNA’ | |
Healy | A character-oriented context-addressed segment-sequential storage | |
JPH02128240A (ja) | コンピユータプログラムの検査方法 | |
Kasai | Computational complexity of multitape turing machines and random access machines | |
KR20200057207A (ko) | 담화 구조 분석을 기반으로 동일 주제의 여러 문서에 대한 대조 방식의 독해를 보조하는 방법 및 시스템 | |
JPS62121534A (ja) | 入力キ−列構造認定方式 | |
JPH05143351A (ja) | 原始プログラム比較方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |