JPH0820968B2 - プログラム内容解析装置 - Google Patents

プログラム内容解析装置

Info

Publication number
JPH0820968B2
JPH0820968B2 JP62154051A JP15405187A JPH0820968B2 JP H0820968 B2 JPH0820968 B2 JP H0820968B2 JP 62154051 A JP62154051 A JP 62154051A JP 15405187 A JP15405187 A JP 15405187A JP H0820968 B2 JPH0820968 B2 JP H0820968B2
Authority
JP
Japan
Prior art keywords
instruction
branch
condition
block
program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP62154051A
Other languages
English (en)
Other versions
JPS63317843A (ja
Inventor
寿教 安木
稔 高橋
正樹 一津屋
潔 八木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Ten Ltd
Original Assignee
Denso Ten Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Ten Ltd filed Critical Denso Ten Ltd
Priority to JP62154051A priority Critical patent/JPH0820968B2/ja
Publication of JPS63317843A publication Critical patent/JPS63317843A/ja
Publication of JPH0820968B2 publication Critical patent/JPH0820968B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、マイクロコンピユータなどを作動するため
に用いられるプログラムの内容を解析する装置に関す
る。
従来技術 マイクロコンピユータ用などに設計されたプログラム
の点検は、以下のように行なわれる。まずシンタツクス
エラーなどの基本的なバグを取除いた後、プリントアウ
トされたプログラムリストに基づいて、人手によつて、
該プログラムの構造と、該プログラムに基づく各種入出
力装置の動作とを把握し、これを仕様書の記載内容と照
合する。さらに該プログラムが用いられるハードウエア
に実際に組込み、プログラムの実行によつて要求される
各種入力条件を入力して、シミユレーシヨンさせ、プロ
グラムの動作状態を確認する。
発明が解決しようとする問題点 しかしながら実際のプログラムは膨大なステツプ数に
及ぶことがあり、その中にはやはり膨大な分岐命令が含
まれている。したがつてこれらの分岐命令に基づく処理
の流れの数はやはり膨大な数となり、上記人手による内
容把握作業では実現が困難である。したがつて前述した
ようなシミユレーシヨンまたはエミユレーションによる
チエツクが行なわれがちになり、仕様書の内容の遺漏や
バグなどを完全に解消するには、むやみに時間を要して
いた。また、前述したようなシミユレーシヨンやエミユ
レーションを行なうには、実際のプログラム作動時にお
いて必要とされる入力要求をすべて充足させねばなら
ず、繁雑な手間を要していた。
本発明の目的は、上述の問題点を解決し、仕様書な
ど、プログラム内容のチエツクの基準となる物との照合
が容易な形態にプログラム内容を解析できるとともに、
チエツク対象となる該プログラムを実行することなく、
プログラム内容の解析を行なうようにできるプログラム
内容解析装置を提供することである。
問題点を解決するための手段 本発明は、機能語のみまたは機能語とオペランドとの
組合せの命令列を含むプログラムを記憶する記憶手段
と、 その記憶手段から順次読出して分岐命令および分岐先命
令を検出する分岐/分岐先命令検出手段と、 分岐/分岐先命令検出手段の出力に応答し、分岐命令
位置を示す情報と分岐先命令位置を示す情報との対を用
いてプログラムをブロツク化し、この各ブロツク化され
たプログラムは、分岐命令または分岐先命令で始まり、
分岐命令または分岐先命令のいずれかで終了し、かつ分
岐命令および分岐先命令の間にはこれらの分岐命令また
は分岐先命令を含まないブロツク化手段と、 ブロツク化手段の出力に応答し、各ブロツク化された
プログラムを、処理が通過する通過条件を求める分岐条
件摘出手段と、 記憶手段を読出してストア命令およびオペランドを直
接操作する命令から成る書込み命令を検出し、この書込
み命令に関するパラメータの入力命令を検出して実行内
容を検出する実行内容検出手段と、 分岐条件摘出手段の出力に応答し、前記書込み命令と
前記入力命令との間に存在するブロツク化されたプログ
ラムの分岐条件をもとに、前記実行内容の実行条件を求
める実行条件検出手段と、 実行内容検出手段と実行条件検出手段との出力に応答
し、前記実行内容とそれに対応する前記実行条件とか
ら、両者の組合せである対を求める書込み命令単位の入
出力結合手段とを含み、 分岐条件摘出手段は、 ブロツク化手段の出力に応答し、分岐命令を検出した
とき命令列の配列方向と反対方向に各命令を読取り、分
岐命令に指定されるフラグを変化させ得る命令を検出す
る命令検出手段と、 命令検出手段の出力に応答し、検出された命令におい
て、前記フラグの変化を規定するパラメータを検出する
パラメータ検出手段と、 パラメータ検出手段の出力に応答して、前記反対方向
に沿って前記パラメータに関する入力命令を検出する入
力命令検出手段と、 命令検出手段と入力命令検出手段との出力に応答し、
フラグを変化させ得る命令とパラメータに関する入力命
令とから、前記各ブロツク化されたプログラムの分岐条
件を前記通過条件として摘出する手段とを含むことを特
徴とするプログラム内容解析装置である。
作用 本発明に従えば、機能語のみまたは機能語とオペラン
ドとの組合せなどの命令列から成る被解析プログラムを
記憶手段に記憶する。このプログラムに対して本発明の
プログラム内容解析装置は、先頭命令から順次読出して
分岐命令と当該分岐命令に対応する分岐先命令とを検出
する。このような分岐命令および分岐先命令のプログラ
ム中における配置位置をそれぞれ特定する情報の対によ
つて、プログラムの処理の流れの経路を容易に認識する
ことができる。
さらに本発明に従えば、分岐命令位置と分岐先命令位
置とを示す各情報の対を用いてプログラムをブロツク化
し、この各ブロツクされたプログラムは、分岐命令また
は分岐先命令で始まり、それらの命令のいずれかで終了
し、しかもこのブロツクの最初と最後の分岐命令または
分岐先命令の間には、さらに分岐命令または分岐先命令
を含まない構成とする。このような各ブロツク化された
プログラムの処理が通過する通過条件を、後述の第14図
に示される動作によつて求める。また後述の第15図のス
テツプe3〜e12に示されるように、書込み命令を検出し
て、その書込み命令に関するパラメータの入力命令を検
出することによつて、実行内容を検出する。後述の第15
図のステツプe12からステツプe14には、その検出された
実行内容が与えられる。
さらに本発明に従えば、第15図のステツプe14,e15に
示されるように、書込み命令と入力命令との間に存在す
るブロツクの分岐条件をもとに、たとえば各ブロツクの
分岐条件の論理積を演算することによつて、その実行内
容の実行条件を求めて、実行内容と、それに対応する実
行条件との組合せであるパイルと称する対を求めて書込
み命令単位の入出力結合を行う。
特に本発明に従えば、プログラムの各ブロツクの処理
が通過する通過条件を求める分岐条件摘出手段では、フ
ラグを変化させ得る命令を検出するとともに、その検出
された命令におけるフラグの変化を規定するパラメー
タ、たとえばアキユムレータまたはレジスタなどを検出
して、命令列の配列方向とは反対方向に沿つて、パラメ
ータに関する入力命令を検出する。こうして得られたフ
ラグを変化させ得る命令とパラメータに関する入力命令
とから、各ブロツクの分岐条件を、通過条件として摘出
し、実行条件を求めるために用いる。このようにフラグ
を変化させ得る命令およびパラメータに関する入力命令
を検出するにあたり、命令列の配列方向とは反対方向に
沿つて検出を行うようにし、各命令の検出を可能にして
いる。
実施例 第1図は本発明の一実施例のプログラム内容解析装置
(以下、解析装置と称する)1の構成を示すブロツク図
である。第1図を参照して、解析装置1は、従来技術の
項で述べたようなチエツクが行なわれる被解析プログラ
ムが、シーケンシヤルな形式で記憶されている磁気テー
プ記録/再生装置(以下、磁気テープ装置と称する)2
と、ランダムな記憶が行なわれる磁気デイスク装置3
と、たとえばランダムアクセスメモリ(RAM)などによ
つて実現される内部記憶装置4と、たとえばCRT(陰極
線管)装置や液晶表示装置などによつて実現される表示
装置5と、インパクト形または非インパクト形などの印
字装置6と、各種キーやスイツチ類などによつて実現さ
れるキー入力装置7と、これらによつて入力される情報
を処理し、またこのような情報の入力/出力動作を制御
するマイクロプロセツサなどを含んで構成される処理装
置8とを含む。
仕様書の内容に従つて作成されたプログラムは、従来
技術の項で述べたように、まずシンタツクスエラーなど
の基本的なバグを取除いた後、磁気テープ装置2に記憶
される。磁気テープ装置2の被解析プログラムは、解析
装置1の内部記憶装置4へ転送され、後述するようなチ
エツク処理が行なわれる。その結果は再び磁気テープ装
置2へ記憶され、または磁気デイスク装置3へ記憶され
る。またこのような記憶処理とともに、表示装置5へ表
示出力され、また印字装置6によつて印字出力される。
第2図は磁気テープ装置2や磁気デイスク装置3など
の記憶装置の記録状態を示す系統図である。処理装置8
にバス9などを介して接続された磁気テープ装置2の記
憶領域10は、前記被解析プログラムの実行対象となるた
とえばマイクロコンピユータに関するアーキテクチヤが
記憶されるアーキテクチヤ記憶領域10aや、この被解析
プログラムによる制御の対象となる入力/出力に用いら
れるアナログ信号をデジタル信号に変換する際の比較電
圧値など、このようなアナログ/デジタル変換器の諸元
などを記憶するA/D変換器諸元記憶領域10bや、本被解析
プログラムの実行対象となるマイクロコンピユータの有
する各端子の信号の出力状態と、この端子に接続される
各入力/出力装置の動作状態との関係の定義(たとえば
マイクロコンピユータの或るピンからハイレベルの信号
が導出されると、LED(発光ダイオード)が点灯する、
などの定義)が、記憶される定義記憶領域10cなどを含
んで構成される。
第3図は第1図示の解析装置1の基本的動作を説明す
るフローチヤートであり、第4図は解析装置1の表示装
置5の表示例を示す図である。第1図〜第4図を参照し
て、解析装置1の基本的動作について説明する。解析装
置1の電源が投入されると第3図ステツプn1以降の処理
が開始され、表示装置5上に各種入力要求を表示する。
ステツプn2では、このような入力要求に対応して、解析
されるプログラムの実行対象となるマイクロコンピユー
タの名称を入力する。この様子は第4図(1)に示され
る。
続くステツプn3では、入力された名称のマイクロコン
ピユータのアーキテクチヤが、アーキテクチヤ領域10a
に存在するかどうかを判断する。存在していればステツ
プn4で当該アーキテクチヤを呼出し、たとえば内部記憶
4に転送し、ステツプn5でアナログ/デジタル変換器の
名称を入力する。一方、前記ステツプn3の判断が否定で
あれば処理はステツプn6に移り、解析装置1は、入力さ
れた名称に対応するアーキテクチヤが記憶されていない
ことを表示し、新規登録を要求する。この後、処理はス
テツプn5へ移る。
ステツプn5のアナログ/デジタル変換器の名称入力の
様子は、第4図(1)に示される。続くステツプn7で
は、解析されるプログラムが動作対象とするマイクロコ
ンピユータに設定される各ポートの状態と外部状態との
関係を、第4図(2)に示すように入力する。たとえば
PORT17がハイレベルとなれば、スタートスイツチがオン
状態に切換わり、PORT16がハイレベルになるとサーモス
イツチがオン状態に切換わる。ステツプn8では、前記マ
イクロコンピユータの割込み端子の状態と、外部状態と
の関係の入力が、表示装置5上で要求される。またアナ
ログ/デジタル変換器チヤンネル用ポートについては、
キー入力装置7によつて所定の事項を入力し、第4図
(3)に示すように所定のデータ項目を入力して各ポー
トを定義する。
ステツプn9では、ステツプn7,n8での各種入力が正し
く実行されたかどうかを判断する。判断結果が否定であ
れば処理はステツプn7に戻り、上記入力されたデータを
訂正する。判断結果が肯定であればステツプn10に移
り、たとえば磁気テープ装置2に記憶されている被解析
プログラムを内部記憶装置4に転送して読取る。ステツ
プn11では、後述するような被解析プログラムを解析
し、ステツプn12で解析結果を出力して処理を終了す
る。
第5図は第3図のステツプn11のプログラムの解析処
理の内容を説明するフローチャートである。第5図を併
せて参照して、解析装置1の操作について説明する。上
述したように本発明は、たとえばマイクロコンピユータ
用にたとえばアセンブラ言語によつて作成されたプログ
ラムの内容を解析する装置に関する。被解析プログラム
は、解析装置1の磁気テープ装置2に記憶されており、
第3図ステツプn10で説明したように、このようなプロ
グラムは磁気テープ装置2からたとえば内部記憶装置4
へ転送される。
本実施例では、被解析プログラムを以下の第1表に示
すプログラムと想定して説明する。
上記第1表のプログラムの内容は、第6図および第7
図のフローチャートに示される。第6図および第7図の
ステツプ番号a1,a2,…,a21は、上記第1表のプログラム
リストの行番号に対応している。また、第1表の全21行
の各命令の実行に関する各フラグの状態を示すコンデイ
シヨンコードレジスタ(以下、CCRと称する)は、下記
第2表に示される。ここでは、符号フラグN、ゼロフラ
グZ、オーバフローフラグVおよびキヤリフラグCの状
態を示す。
上記第1表のプログラムリストで、 (1)入力:PORT1の第6ビツトにスイツチ入力(スイツ
チONでハイレベルに変化) :PORT2の第0ビツトに可変周波信号入力 および、 (2)出力:PORT1の第7ビツトから発光ダイオード出力
(出力ハイレベルで発光ダイオード点灯)の入出力操作
が行なわれる、と定義しておく。これは第3図ステツプ
n7で行なわれる。
上記第1表のプログラムリストが読込まれた解析装置
1では、第5図ステツプm1でプログラムの流れ構造の解
析が行なわれる。
上述したように、第1表に示すプログラムリストは、
第6図および第7図に示す動作内容を有している。しか
しながら、第1表のプログラムリストから第6図および
第7図示のフローチヤートを得るには、人手によつて、
各命令が単なる処理命令か条件文による分岐命令かを把
握する作業と、分岐命令の場合にはその分岐先の検出作
業などが含まれ、これらの作業に基づいて上記フローチ
ヤートが作成される。
本発明の眼目の1つは、任意のプログラムリストか
ら、該プログラムの分岐命令と、該分岐命令によつて定
められる分岐先命令とを把握した後、該プログラムの処
理の流れの構造の把握を人間の頭脳による作業を介する
ことなく、解析装置によつて自動的に行なうことができ
るようにしたことである。またこれによつて、後述する
ように上記フローチヤートと類似の形態の出力を得るこ
とができる。
このような流れの構造を把握する処理を、第8図のフ
ローチヤートにおいて示す。第8図ステツプb1では、命
令行番号を示すパラメータkを「1」に初期化し、ステ
ツプb2で第k命令(第1表における行番号kの命令)の
読取りを行なう。続くステツプb3では、この読取られた
第k命令が分岐命令であるかどうかを判断する。この判
断はたとえば、第1表における命令を構成するニーモニ
ツクを読取ればよい。すなわち上述したように、所望の
マイクロコンピユータのアーキテクチヤを呼出した段階
で、解析装置1の内部記憶4には、当該マイクロコンピ
ユータに用いられるアセンブラ言語のコマンドや、コマ
ンドに関連するフラグなどのテーブルが別途記憶され、
これを参照することによつて、第1表の各命令が分岐命
令であるか否かを容易に判断できるからである。
上記ステツプb3の判断結果が否定であれば、ステツプ
b4でパラメータkを+1インクリメントし、処理をステ
ツプb2に戻し、上述の説明と同様な処理を行なう。この
とき第1表のプログラムリストに従えば、第4命令を読
取つたとき、アーキテクチヤが参照され、この第4命令
がゼロフラグZの状態(「1」または「0」)を条件と
する分岐命令であることが把握される。したがつて、第
8図の処理において第4命令が読取られたときステツプ
b3の判断は肯定となり、処理はステツプb5に移る。
ステツプb5では、第1表の第4命令のオペランド「LO
OP」と対応するラベル名を検索する。第1表のプログラ
ムリストでは、第2命令に上記オペランドと同一のラベ
ルが付されており、したがつて第4命令の分岐先は、第
2命令であることが理解される。ステツプb6では、一般
に分岐命令の行番号kと、これに対応する分岐先命令行
番号mとの対(以下、ブロツク化情報と称する)(k,
m)を、内部記憶装置4に記憶する。この後、処理はス
テツプb4に移り、行番号を+1インクリメントして次の
行へ処理を進める。
このような処理を行なうことによつて、第1表のプロ
グラムリストにおける分岐命令と分岐先命令との行番号
の対(k,m)に関して、下記第3表のような結果が得ら
れる。
この段階で解析装置1は、第1表に示すプログラムリス
トの流れ構造が把握できたことになる。すなわち第3表
として得られた結果を操作者が容易に理解できる形式に
出力する場合、たとえば第1表のプログラムリストの行
番号1〜21を第9図に示すように一列に配列し、上記第
3表に基づいて、行番号kから行番号mへ向かう分岐矢
符をこれに付すことによつて、プログラムリストの流れ
構造として第9図示のような出力が得られる。これによ
つて操作者も、第1表のプログラムリストの流れ構造を
容易に把握することができる。こうして第5図ステツプ
m1の処理は終了する。
次に第5図ステツプm2では、ステツプm1で得られた被
解析プログラムの流れ構造の認識に基づいて、該プログ
ラムをブロツクに区分する処理を行なう。このようなブ
ロツク化処理には、以下のような利点がある。本発明の
プログラム内容解析処理が行なわれる被解析プログラム
は、一般にはたとえば数万ステツプのような場合もあ
り、このようなプログラムには、各種分岐命令も大量に
含まれている。したがつて、このような分岐命令の条件
の成立の是非に関する組合わせの数が膨大な数になるこ
とは、容易に想定される。このような膨大な組合わせ数
のプログラムの系統を逐次的に考察の対象とし、各系統
ごとに全命令のコンデイシヨンコードレジスタ(CCR)
を記憶するのは、極めて繁雑であるとともに膨大な記憶
容量が要求される。
したがつて本発明の眼目の1つは、被解析プログラム
を後述するような条件の下で、複数のブロツクに区分
し、各ブロツクに対して第5図ステツプm3の分岐条件摘
出処理、ステツプm4の書込み命令単位の入出力結合処
理、およびステツプm5のパイルの結合処理などから成る
同一内容の処理を施すようにしたことである。このよう
なブロツクの区分点は、プログラムにおける分岐命令行
か分岐先命令行であり、1ブロツクは分岐命令行または
分岐先命令行で始まり、これらのいずれかで終了し、か
つその間にはこれら分岐命令または分岐先命令行を含ま
ないように選ぶ。
すなわち全プログラムは、このような複数のブロツク
の結合として表現され、同一ブロツク内のプログラムの
異なる流れの種類も極めて少数となる。これにより各ブ
ロツクごとの内容解析を格段に容易に行なえるようにな
り、全プログラムの内容解析は、ブロツクごとに得られ
た内容解析結果の結合として示される。
このようなブロツク分け処理は、第10図のフローチヤ
ートに示される。このとき、前記第8図を参照して説明
した第5図ステツプm1の流れ構造の解析処理によつて得
られたブロツク化情報対(k,m)について、第1表の全
プログラムについて行なうことによつて、第3表に示し
たような結果が得られる。すなわち、このようなブロツ
ク化情報対(k1,m1),(k2,m2),…,(ks,ms)(本
実施例ではs=4)が、第1図示の内部記憶装置4に記
憶されている。以下に説明する第10図の処理には、この
ブロツク化情報対列を用いる。なお上記ブロツク化情報
列の各数値k1,k2,…,ks;m1,m2,…,msについて総称する
場合には、それぞれ記号k,mを用いて示す。
第10図ステツプc1では、第1表のプログラムの行番号
を示すパラメータiを「1」に初期化する。ステツプc2
では上記行番号iに関して、この行番号iに等しい上記
ブロツク化情報kまたはブロツク化情報mが存在するか
否かを判断する。この判断が肯定であれば、ステツプc3
でブロツク化情報k,mによるブロツク化処理を行なう。
このブロツク化処理は、以下のように行なわれる。ま
ずステツプc3において、判断が肯定となるブロツク化情
報k,mが記憶される。次にステツプc4で行番号iが+1
インクリメントされ、ステツプc5では行番号iがこのよ
うな行番号の最終値すなわちMAX(i)を超えたかどう
かの判断を行なう。
判断結果が否定であれば、第10図に示すブロツク化処
理は被解析プログラムの最終行まで到達していないこと
になり、ステツプc2に戻る。以下、同様の処理が繰り返
し行なわれ、ステツプc2の判断が肯定となるブロツク化
情報k,mがあつた場合、前回ステツプc2の判断を肯定と
したブロツク化情報k,mを呼び出し、これらを組み合わ
せてブロツク情報対(α,β)として記憶する。以下、
このような処理がプログラムの最終行まで繰り返し行な
われる。
情報ステツプc1〜c5で行なわれる処理は、たとえば第
1表のプログラムの第1行から第21行までを順番にたど
つて、その中でブロツク化情報(k,m)として示される
分岐命令行および分岐先命令行に関して、行場号の増加
方向において隣接する命令列の組をブロツク情報(α,
β)として記憶する処理である。
上記ステツプc5の判断が肯定となれば、処理はステツ
プc6に移り、上記ブロツク化情報列(kj,mj) …(1) j=1,2,…,s によるブロツク化処理を行なう。
このブロツク化処理は、第1表のプログラムリストに
おいて、分岐処理を実現するブロツクを決定する処理と
なる。すなわち第3表のブロツク化情報(k,m)におい
て、たとえばブロツク化情報対(4,2)は、第4命令か
ら第2命令へ処理が分岐する系統を規定している。した
がつて、これらのブロツク化情報対(k,m)を、前記ブ
ロツク情報対(α,β)と異なる内容をなす分岐ブロツ
ク情報対(α,β)brとして再定義することにより、第
1表のプログラムリストに関して、分岐を行なう系統を
網羅できる。ステツプc6による分岐ブロツク化処理が終
了すると、第11図に示すブロツク分け結果が得られる。
また上述のように、ブロツク情報対(α,β)と、分
岐ブロツク情報対(α,β)brとを定義することによ
り、第1表のプログラムリストのたとえば第9命令、第
10命令および第11命令からなるブロツクと、第9命令と
第11命令とからなる分岐ブロツクとを明瞭に区分でき
る。このようなブロツク情報対(α,β)および分岐ブ
ロツク情報対(α,β)brを、下記の第4表に示す。
以下、得られた各ブロツクを示すに際して、第11図に
示すように記号,,…,をもつて示す。すなわち
ブロツクは、行番号1,2の命令群を示している。この
ような記法に従い、第1表のプログラムは第12図および
第13図で示されるように表現される。ここで、第1表の
プログラムを第12図および第13図の2つの図に区分した
のは、第12図は行番号1〜12のメイン処理ルーチンを表
わし、第13図は行番号13〜21の後述するような割込み処
理ルーチンを表わし、これらは相互間に亘つて分岐関係
が存在しない独立な内容だからである。このようにし
て、第5図ステツプm2のブロツク分け処理が終了する。
第5図ステツプm3では、分岐条件摘出処理が行なわれ
る。このような分岐条件摘出処理は、第14図のフローチ
ヤートに示される。第14図ステツプd1では、上述したよ
うなブロツク化処理を行ない、各ブロツク情報対(α,
β),(α,β)brを得る。ステツプd2では変数jを
「1」に初期化する。ステツプd3以降の処理では、分岐
条件として第1ブロツク、第2ブロツク、第3ブロ
ツク、…、第13ブロツクを処理が通過する条件を求
めることになる。
(1)第1ブロツクを通る条件 第1ブロツクは第6図に明らかなように、第12命令
の無条件ジヤンプ命令によつて処理が無条件に通過する
ブロツクである。
(2)第2ブロツクを通る条件 第14図ステツプd3では、第3表を参照して第j番目
(現時点ではj=1)のブロツク化情報対(k,m)を参
照する。ステツプd4では、ステツプd3におけるブロツク
化情報対(k,m)において、第k命令の分岐条件を支配
するフラグを検出する。第4表によれば、j=1のとき
k=4であり、第1表のプログラムの第k(=4)命令
「BNE」の分岐条件を支配するフラグの検出を行なう。
これはアーキテクチヤによつて、各命令それ自体に規定
される条件となる。すなわち上記第4命令の場合には、
ゼロフラグZである。
ステツプd5では、命令列の配列方向と反対方向に一命
令を読取る。この命令が上記フラグ(ゼロフラグZ)を
変化させる命令であるかどうかのステツプd6における判
断が否定であれば、ステツプd5,d6を繰り返す。肯定で
あればステツプd7に移り、フラグを変化させる命令を記
憶する。第1表のプログラムリストと第2表のCCRとを
参照すれば、この命令は第3命令「CMPA COUNT」であ
り、ゼロフラグZを変化させる命令であることが判断さ
れる。ステツプd8では、第1表のプログラムリストを参
照して、ゼロフラグZに関する当該第3命令中のパラメ
ータを検出する。すなわち第3命令はアキユムレータA
に関する命令であり、パラメータとしてアキユムレータ
Aが検出される。
ステツプd9では、該命令が該パラメータを変化させる
命令か否かを判断する。この判断は前記アーキテクチヤ
に含まれる前記CCRを参照して行なわれる。判断が肯定
であれば、ステツプd10に移り当該命令が記憶され、ス
テツプd11に移る。第3命令「CMPA」はアキユムレータ
Aの内容を変化せず、ステツプd9の判断が否定となり、
ステツプd10を経ることなくステツプd11に移る。
ステツプd11では、現在検討中のブロツクが第1表の
プログラムリスト中でループを構成するブロツクかどう
かを判断する。現時点では、解析装置1は第4命令およ
び第3命令しか認識しておらず、この判断は否定とな
り、処理はステツプd12に移り、ステツプd10で記憶した
命令が、前記パラメータの入力命令であるかどうかを判
断する。この判断が肯定であれば、ステツプd15に移
る。一方、上記ステツプd11の判断が肯定であれば、ス
テツプd14で分岐条件に後述するようなループ要素を追
加し、処理はステツプd15に移る。
ステツプd15では、当該分岐命令が第9図に示すよう
な本実施例における被解析プログラムの構造において、
ネステイング構造に含まれるものであるかどうかを判断
する。判断結果が肯定ならば、ステツプd16で後述する
ようなネステイング要素を追加し、ステツプd13で記憶
したブロツク列の種類がすべて終了したかどうかを判断
し、判断結果が肯定であればステツプd17で分岐対のパ
ラメータjをプラス1インクリメントし、処理はステツ
プd3に戻る。前記ステツプd15の判断が否定であれば、
ステツプd16を経ることなく、処理はステツプd13に移
る。
第3命令「CMPA」について、前記ステツプd12の判断
は否定となり、処理はステツプd19に移り、現在検討中
の命令が当該命令を含むブロツクの先頭であるかどうか
を判断する。第3命令について判断結果は否定であり、
ステツプd20で命令列の配列方向と反対方向に一命令を
読取り、処理はステツプd9に移り、前述の処理を繰返
す。
前記ステツプd19で判断結果が肯定ならば、ステツプd
21に移り、当該ブロツクに処理が到達するブロツク列の
種類を記憶する。すなわち当該ブロツクに至るルートの
種類を記憶する。ステツプd22では、記憶したブロツク
列中から一ブロツク列を選択し処理はステツプd20に戻
る。
第1表のプログラムリストにおいて、第4命令から上
述の処理が繰り返される。このとき、第1命令「LDAA」
を解析する段階で、ステツプd10で記憶されてきた命令
は、オペランドで記述すると、 A=TIME−(COUNT+1) …(2) になる。
またステツプd11の判断は肯定となり、第2式の分岐
条件にステツプd14でループ要素が付加され、下記第3
式の分岐条件が得られる。すなわちループをn回繰返せ
ば上記第2式は、 A=TIME−(COUNT+n) …(3) と表される。この実行内容がループを構成する条件は、
第4命令で分岐条件が成立すること、すなわちゼロフラ
グZに関して、 Z=0 …(4) が成立する場合である。したがって上記ステツプd10で
は最終的に、 TIME−(COUNT+n)≠0 …(5) の条件が得られる。これは第2ブロツクを処理が通過
する条件となる。
(3)第3ブロツクを通る条件 この場合、第1表のプログラムリストにおいて、処理
が第2ブロツクに進行しない条件、すなわち、上記第
5式の条件の否定 TIME−(COUNT+n)=0 …(6) が求めるべき条件となる。
(4)第4ブロツクを通る条件 ステツプd3では、第4ブロツクの最終行番号9をブ
ロツク化情報kとする対(k,m)が、j=2の場合とし
て、第3表より(8,11)として読出される。この第8命
令に対して、上記第2ブロツクを通る条件を求めた処
理と同様な処理が行なわれる。ステツプd4では、第1表
のプログラムの第k(=8)命令「BMI」の分岐条件を
支配するフラグの検出を行なう。すなわち、上記第8命
令の場合には、符号フラグNである。
ステツプd5,d6では、この符号フラグNを変化しうる
最近の命令を検索する。上記第1表および第2表を参照
すれば、第7命令「LDAB PORT1」が対応することが検出
される。ステツプd8では、この符号フラグNに関する第
7命令中のパラメータを検出する。すなわち第7命令は
アキユムレータBに関する命令であり、このアキユムレ
ータBがパラメータとして検出される。
ステツプd12では、パラメータとしてのアキユムレー
タBの入力命令を検出する。第1表のプログラムリスト
を参照すれば、上記第7命令自身がアキユムレータBの
入力命令であることが検出される。したがつてステツプ
d12の判断は肯定となり、ステツプd15でのネステイング
構造判断は否となるため、第3ブロツクの実行内容を
オペランドによつて表現すれば、求める分岐条件は、 PORT17=0…(7) となる。ここで表記「PORT17=0」は、入出力ポートPO
RT1の第7ビツトが「0」となる状態を表現する。この
後、処理はステツプd13に移り判断が否定となり、前述
のような処理を経て処理はステツプd3に戻る。
(5)第5ブロツクを通る条件 ステツプd3では、j=3の場合としてブロツク化情報
対(k,m)=(9,11)が読出され、ステツプd4では第k
(=9)命令「BEQ NANNO1」の分岐条件を支配するフラ
グすなわちゼロフラグZが検出される。続いてステツプ
d5,d6では、このゼロフラグZを変化しうる最近の命令
として、第1表および第2表を参照して、第7命令「LD
AB」が検出される。
このロード命令はアキユムレータBに「PORT1」の内
容を読込む内容であり、このアキユムレータBに関する
ゼロフラグZの成立の是非が分岐条件となる。したがつ
て、前述のような処理が繰り返された後、ステツプd10
では、 PORT1の少なくとも1つのビツト=1…(8) が得られる。この後、処理はステツプd11に移り、第5
ブロツクがループ構造の一部をなすかどうかが判断さ
れ、これは否定となる。
続くステツプd12の判断は肯定となり、ステツプd15で
第5ブロツクがネステイング構造の一部を成すかどう
かが判断される。第5ブロツクは2重のネステイング
構造を構成しており、ステツプd16で上記第8式の分岐
条件にネステイング要素が付加される。
すなわち、第12図に明らかなように、第5ブロツク
は、第4ブロツクを通過しなければ到達しない処理ブ
ロツクであり、したがつて第5ブロツクの通過条件
は、第4ブロツクの通過条件と上記第8式の条件との
論理積となる。すなわち、 PORT17=0 かつ、 PORT1の少なくとも1つのビツト=1…(9) の分岐条件が得られる。この後、ステツプd13におい
て、記憶したブロツク列はないので、処理はステツプd3
に戻る。
(6)第6ブロツクを通る条件 第14図のフローチヤートにおいて、ステツプd3でj=
4のとき、対応するブロツク化情報k,mが、第3表を参
照して存在しないことが判断される。したがつて、本件
実施例のプログラム内容解析装置1は、現在の第6ブロ
ツクの分岐条件を、以前の直鎖ブロツクと同一分岐条件
として設定する。すなわち現在の第6ブロツクの分岐
条件は、以前の直鎖ブロツクである第3ブロツクの分
岐条件、すなわち上記第6式の条件として設定される。
この後、処理は前記パラメータjを+1インクリメント
した後に、ステツプd3に戻る。
(7)第7ブロツクを通る条件 第7ブロツクは、上記第2ブロツクの分岐条件を
考察した段階で、第2ブロツクと組合されてループ構
造を構成するブロツクとして把握されている。したがつ
て第7ブロツクの分岐条件は、上記第3ブロツクで挙
げたループ処理の離脱条件の否定の形式の条件である上
記第5式の条件として示される。
(8)第8ブロツクを通る条件 第8ブロツクは、第3表および第4表に示す分岐ブ
ロツク情報対(8,11)brで示される。したがつて第1表
第8命令の分岐条件より、第8ブロツクを処理が通る
条件は、第4ブロツクを通る条件の否定、すなわち、 PORT17=1…(10) となる。
(9)第9ブロツクを通る条件 第9ブロツクも、第3表および第4表から分岐ブロ
ツク情報(9,11)brによって規定されるブロツクであ
り、したがつて前記第5ブロツクを通る条件を考察し
た際に検討した第1表第9命令の分岐条件(第8式)の
否定の条件と、第4ブロツクを通る条件(第7式)と
の論理積となる。すなわち、 PORT1の全ビツト=0 かつ PORT1の第7ビツト=0…(11) の条件が得られる。
(10)第10ブロツクを通る条件 第10ブロツクは、第6ブロツクと分岐命令を介在
することなく線形に続くブロツクであり、したがつて第
10ブロツクを処理が通る条件は、第6ブロツクを通
る条件、すなわち第3ブロツクを通る条件(上記第6
式)と同一になる。
(11)第11ブロツクを通る条件 第1表のプログラムリストから明かなように、第13命
令〜第21命令は、第1命令〜第12命令のメインルーチン
に対する割込み処理ルーチンである。その内容から、上
記第2表の欄外に付した入力/出力の定義において、PO
RT2の第0ビツトに立ち上がりエツジまたは立ち下がり
エツジの信号が入力された状態を表わす割込みベクトル
の条件、 IRQ2=0…(12) が得られる。
(12)第12ブロツクを通る条件 上記第4ブロツクを通る条件が導出された処理と同
様な処理を経て、第18命令「BNE」でゼロフラグZ=1
となる条件が求められればよい。すなわち第18命令から
プログラムリストをさかのぼり、当該分岐命令を支配す
るフラグであるゼロフラグZを変化させる最近の命令を
検出する。これは第17命令でストア命令「STAA」が検出
され、パラメータとしてアキユムレータAが検出され
る。アキユムレータAの入力命令として、第13命令でロ
ード命令「LDD」が検出される。したがつて第13命令〜
第18命令の実行内容をオペランドで記述すれば、 {CAPT1(D)−ZCAPT(D)}の上位バイト=0…(1
3) が得られる。
(13)第13命令を通る条件 この場合、第1表のプログラムリストにおいて、第13
命令以降の処理の進行において、処理が第12ブロツク
に進行しない条件、すなわち上記第13式の条件の否定、 {CAPT1(D)−ZCAPT(D)}の上位バイト≠0…(1
4) が求めるべき条件となる。
このようにして第5図ステツプm3において摘出される
べき分岐条件は、各ブロツク〜を処理が通る条件と
して導出された。これ以降、処理は第5図ステツプm4に
移る。
ステツプm4では、書込み命令単位の入出力結合処理が
行なわれる。ここに言う書込み命令とは、ストア命令
と、オペランドの直接操作命令(たとえばオペランドの
数値を+1増加させるインクリメント命令「INC」な
ど)とを指す。このような命令の検出は、第1表のプロ
グラムリストにおいて、各命令を読取ることによつて直
ちに実現できる。
このような入出力の結合処理は、第15図のフローチヤ
ートに示される。第15図ステツプe1,e2では、第1表で
示されるプログラムに対して、前述したブロツク化処理
と分岐条件の生成処理とを行なう。この後、ステツプe3
では、第1表に示されるプログラムにおいて、書込命令
が検出される。このような書込み命令としては、第2命
令「INC」、第6命令「STAA」、第11命令「STAA」、第1
6命令「STX」、第17命令「STAA」および第20命令「STA
A」が、後述するように検出される。
(1)第2命令「INC」について 第15図ステツプe4では、当該命令に関するパラメータ
を検出する。上述した残余の書込命令、たとえば第6命
令「STAA」では、このようなパラメータとしてたとえば
アキユムレータAが検出されるが、第5命令のようなメ
モリの直接操作命令では、本ステツプを行なうことな
く、ステツプe5で当該命令がその命令の所属するブロツ
クの先頭であるかどうかを判断する。否定であれば、ス
テツプe6に移つて、命令列の配列方向と反対方向に一命
令を検出する。肯定であればステツプe7で、当該ブロツ
クに至るブロツク列の種類、すなわち当該ブロツクに至
る処理の系統の種類を記憶する。
第2命令に関しては、第2命令を含む第2ブロツク
に至るブロツクは、上記ブロツク化処理から得られた第
12図および第13図の処理の流れ図に示されるように、第
1ブロツクおよび第7ブロツクである。ステツプe8
では、このような記憶したブロツク列中から一ブロツク
(たとえば第7ブロツク)を選択し、処理はステツプ
e6に移る。
ステツプe6では、選択されたブロツクにおいて、命令
列の配列方向と反対方向に一命令を検出し、現時点では
第4命令「BNE」を検出する。これによりステツプe9,e1
1,e12の判断は、それぞれすべて否定であり、したがつ
て処理はステツプe5に戻る。このようにして上述した処
理を繰り返し行ない、ステツプe6で第2命令が読取られ
たとき、ステツプe11でループになつたことが判断さ
れ、ステツプe13でループ要素が追加される。すなわち
第2命令の実行内容は、 COUNT←COUNT+1 …(15) であるが、この処理がループ構造にしたがつてn回実行
される場合を想定すると、 COUNT←COUNT+n …(16) となる。これが第2命令の実行内容の一般形である。
このときの実行条件は、上記第7ブロツクを通る条
件、すなわち上記第5式の条件となる。したがつて第2
命令に関しては、 if TIME−(n+COUNT)≠0 then COUNT←COUNT+n …(17) となる。
(2)第6命令について ステツプe3では、次の書込命令である第6命令を検出
し、ステツプe4で第6命令に関するパラメータすなわち
アキユムレータAを検出する。ステツプe5の判断は否定
となり、ステツプe6で第5命令「CLRA」を検出する。
ステツプe9では、この第5命令が上記パラメータであ
るアキユムレータAを変化させる命令であることが判断
され、ステツプe10で第5命令が記憶される。ステツプe
11では、当該第5命令がループ構造に含まれないことが
判断され、ステツプe12では、第5命令がアキユムレー
タAの入力命令であることが判断される。この後、ステ
ツプe14の判断で肯定となり、処理はステツプe15に移
る。
したがって実行内容は、 COUNT←0 …(18) となり、実行条件は、処理が第3ブロツクを通る条
件、すなわち上記第6式で示される条件と同一になり、
これらを整理すれば、 if TIME−(n+COUNT)=0 then COUNT←0 …(19) の結果が得られる。
(3)第11命令について 第11命令については、第15図に示されるステツプe3で
当該命令が検出された後、ステツプe4でパラメータとし
てアキユムレータAが検出される。ステツプe5では、上
記第3表および第4表を参照して、第11命令が第6ブロ
ツクの先頭であることが判断され、処理はステツプe7
に移る。この判断によつて、第1表のプログラムリスト
において、第11命令に到達するには第5ブロツク、第
9ブロツクおよび第8ブロツクをそれぞれ通る3つ
の経路が存在することが認識される。以下、後述する実
行内容の検出と実行条件の検出とを各経路毎に行ない、
それらの結果が論理和として出力される。
(ア)第5ブロツクを通る経路の場合 ステツプe4でパラメータであるアキユムレータAを検
出し、プログラムをさかのぼると、第10命令でアキユム
レータAに関するロード命令が検出される。ここで第11
命令は、入出力ポートへの書込み命令であり、論理演算
として扱う。したがつて第10命令および第11命令による
実行内容は、第1表のプログラムリスト上の表現では、 PORT1←¥80 …(20) と表現されるが、論理演算の結果としては、上記第10式
と同等な PORT17←1 …(10) なる論理式が得られる。
このときの実行条件は、第5ブロツクを処理が通る
条件(上記第9式)と、第2ブロツクおよび第7ブロ
ツクからなるループを処理が離脱する条件、すなわち
処理が第3ブロツクを通る条件(上記第6式)との論
理積となる。したがつて、 if TIME−(n+COUNT)=0 and PORT17=0 and PORT17≠¥00 then PORT17←1 …(21) なる論理式出力が得られる。
(イ)第8ブロツクを通る場合 ステツプe6でプログラムをさかのぼると、第6命令で
ストア命令「STAA」が検出される。したがつて求める実
行内容は、前述の第6命令の場合と同様にして、PORT1
←¥00が求められる。
また実行条件は、前述したループの離脱条件すなわち
第3ブロツクを通る条件(第6式)と、第8ブロツク
を処理が通る条件(第10式)との論理積である。した
がつてこれらをまとめて、 if TIME−(n+COUNT)=0 and PORT17=1 then PORT1←¥00 …(22) の論理式出力が得られる。
(ウ)第9ブロツクを通る場合 ステツプe4で検出されるパラメータは、アキユムレー
タAであり、第9ブロツクを通つてプログラムをさか
のぼると第6命令を検出する。したがつてこの場合の実
行内容は、上記第22式と同一であり、実行条件はループ
の離脱条件すなわち第3ブロツクを通る条件(第6
式)と、第4ブロツクを通る条件(第7式)と、第9
ブロツクを通る条件(第11式)との論理積である。し
たがつてこれらをまとめて、 if TIME−(n+COUNT)=0 and PORT17=0 and (PORT17=0 and PORT1=¥00) then PORT1←¥00 …(23) の出力が得られる。
このようにして、第11命令に関する入出力条件の結合
処理が実現された。
(4)第16命令について 第1表のプログラムリストにおいて、行番号13〜21は
割込みルーチンであり、行番号1〜12のメイン処理ルー
チンとは独立の内容となつている。したがつて第15図ス
テツプe4で第16命令「STX」が検出される。第16命令に
関して検出されるパラメータは、インデツクスレジスタ
Xであり、ステツプe6でプログラムをさかのぼると第15
命令でロード命令が検出される。したがつて第16命令に
関する入出力結合結果は、 if IRQ2=1 then ZCAPT←CAPT1 …(24) の論理式出力が得られる。
(5)第17命令「STAA」について 第16命令と同様にステツプe4で、パラメータとしてア
キユムレータAを検出する。ステツプe6でプログラムを
さかのぼると、第13命令でロード命令「LDD」が検出さ
れる。したがつて第17命令でオペランド「TIME」にスト
アされるのは、オペランド「CAPT1」およびオペランド
「ZCAPT」の各上位バイト情報である。また実行条件は
第16命令と同一である。したがつてこれらを整理して、 if IRQ2=1 then TIME←(CAPT1(D)−ZCAPT(D))(H)…(2
5) 注:第25式の右辺末尾の(H)は、右辺のオペランド
の上位バイトであることを示す。
(6)第20命令「STAA」について 第20命令の場合には、第15図ステツプe4で、当該命令
に関するパラメータすなわちアキユムレータAを検出す
る。このパラメータを決定する最新の命令をプログラム
をさかのぼつてステツプe6で検索すると、第19命令でア
キユムレータAに関する操作命令「DECA」が検出され
る。したがつて第20命令の実行内容は、 COUNT←A−1 …(26) となる。
ここで第19命令は、第18命令の分岐命令でゼロフラグ
Z=1の場合であることを考慮すると、上記第25式にお
いて、 TIME=アキユムレータA=0 …(27) の場合に相当する。したがつて上記第26式において、ア
キユムレータA=0であり、 COUNT←¥FF …(28) が結論される。
その実行条件は、第11ブロツクおよび第12ブロツク
を処理が通る条件、すなわち上記第12式および第13式
で示される各条件の論理積となる。したがつてこれらを
まとめれば、 if IRQ2=1 and (CAPT1(D)−ZCAPT(D))(H)=0 then COUNT←¥FF …(29) が得られ、これで第1表のプログラムリストに関して第
5図ステツプm4の書込み命令単位の入出力結合処理が行
なわれる。
続いて、第5図ステツプm5で後述するようなパイルの
結合処理が行なわれる。ここに言うパイルとは、プログ
ラムリスト中におけるオペランドの直接操作命令を含む
たとえば上記第29式のような書込み命令が実行されるた
めの実行条件と実行内容との結合表記を指す。その具体
的処理内容は第16図のフローチヤートに示される。
上述したように、第1表のプログラムリストには6個
の書込み命令があり、第3命令には第17式のパイルD7、
第6命令には第19式のパイルD6、第4命令には第21式〜
第23式のパイルD3,D2,D1、第15命令には第24式のパイル
D5、第17命令には第25式のパイルD4、第20命令には第29
式のD8がそれぞれ作成される。
以下、第16図を参照して、パイル結合処理について説
明する。ステツプf1では、ポートへの書込み命令がある
外部出力命令パイルD1,D2,D3を検出する。
ステツプf2では、たとえばパイルD1中の未決定パラメ
ータを決定するパイルを検出する。すなわち、パイルD1
の実行条件に関して、パラメータ「TIME」、「COUNT」
が未決定である。また、残余の外部出力命令パイルD2,D
3についても、それぞれ実行内容は異なるものの、未決
定パラメータはパイルD1と同一のものが検出される。
以下、このようなパラメータを決定するパイルを検出
する。パラメータ「TIME」についてはパイルD4が検出さ
れ、続くステツプf3では該パイルD4に含まれる全てのパ
ラメータが決定されているかどうかを判断する。現時点
では判断結果は否定であり、処理はステツプf2に戻り、
パラメータ「CAPT1」,「ZCAPT」を決定するパイルを検
出する。このとき第5パイルD5が選ばれる。このときス
テツプf3では、全パラメータが決定されたことが判断さ
れ、処理はステツプf4に移り、外部出力命令パイルが終
了したかどうかを判断する。現時点では外部出力命令パ
イルD1のみを検討しており、判断結果は否定となり、処
理はステツプf1に戻る。
これ以降、パイルD2,D3が外部出力命令パイルとして
検出され、それぞれについて前述の場合と同様な処理が
行なわれる。パイルD1〜D3では、未決定のパラメータは
共通であり、したがつてステツプf2では同一内容の処理
が行なわれる。このようにしてパイルD3に対するパイル
結合が終了した後、ステツプf4では判断結果が肯定とな
り、ステツプf5に移つて第17図(1−1)〜(3−3)
のパイル結合結果が出力される。このようにして第5図
ステツプm5のパイルの結合処理が終了する。
以上のように本実施例では、第5図ステツプm3以降の
分岐条件摘出処理などを行なうに先だつて、第5図ステ
ツプm1の流れ構造の解析処理を行なうようにした。した
がつてプログラム中の分岐命令や分岐先命令が事前に明
らかとなり、CCRなどの制御情報は、これらの命令に関
してのみ記憶すればよい。したがつて被解析プログラム
の動作内容を分析するに当り、たとえばCCRを全命令に
わたつて記憶する必要がなく、装置に要求される記憶容
量を格段に削減できる。
一方、本発明の他の実施例として、第8図示の流れ構
造の解析処理においてブロツク化情報(k,m)を記憶す
る動作とともに、検出された各分岐命令に関して分岐条
件の摘出処理を同時に行なうようにしてもよい。すなわ
ち上述したような流れ構造の解析を行なう処理は、分岐
命令と分岐先命令とのたとえば行番号を検出するのみで
あり、分岐条件自身を把握する処理は伴つてはいない。
ここで上記第8図のフローチヤートに示すような処理に
おいて、ステツプb6の後段に第18図示の処理を追加する
ことによつて、流れ構造の解析と平行して、分岐条件の
摘出処理を行なうようにできる。以下、第18図をあわせ
て参照して、上記流れ構造の解析処理の他の実施例につ
いて説明する。
第18図のステツプb7では、検出された分岐命令(以
下、第1表の第4命令を想定して説明する)に指定され
たフラグを検出する。すなわち第4命令は「BNE LOOP」
であり、これは第6図のフローチヤートにおけるステツ
プa4に示すように、ゼロフラグZの状態によつて分岐の
実行/非実行を選択する命令である。すなわちステツプ
b7では、ゼロフラグZが考察対象として検出される。
続くステツプb8では、検出されたフラグ(たとえばゼ
ロフラグZ)に関して、第4行命令以前の行番号1〜3
の命令において、行番号4に最も近い行番号で、この検
出されたフラグの状態を変化させ得る命令と、その変化
を規定するパラメータとを検出する。
すなわち第1表のプログラムリストにおいて第4命令
からさかのぼると、第2表からあきらかなようにゼロフ
ラグZは第3命令でその状態が変化し得ることが理解さ
れる。またゼロフラグZの状態を規定するパラメータ
は、アキユムレータAであることが理解される。
引続く第18図ステツプb9では、検出されたパラメータ
(たとえばアキユムレータA)に関する入力命令を検出
する。これは第1命令のロード命令「LDAA TIME」であ
る。したがつてプログラムリストの第1行〜第6行の範
囲では、第1行〜第4行は処理の流れが無条件に通る部
分であるが、第5行〜第6行は通らないこともあり得る
部分である。したがつて第5行および第6行を処理が通
る条件は、 TIME−(n+COUNT)=0…(30) n;第1行〜第4行の繰返しループ数 が成立することである。
すなわち前記ステツプb10では、上記第30式のような
分岐条件を記憶する。この後、処理は第8図ステツプb4
に移り、引続く行の処理がなわれる。
上記第8図のフローチヤートまたは、第8図および第
18図のフローチヤートに基づく処理を、第1表に示す全
プログラムに対して行なうことにより、該プログラムの
流れ構造の解析を、第6図示のように行なうことができ
る。こうして第5図ステツプm1の処理は終了する。
効果 以上のように本発明によれば、被解析プログラムの各
命令を読取つて、書込み命令単位の入力動作と出力動作
とを結合する処理を行なうに先だつて、プログラム全体
の処理の流れの構造を容易に認識することができる。し
たがつて全命令にわたつてコンデイシヨンコードレジス
タなどの制御情報をすべて記憶する必要がなく、処理に
必要な記憶容量を格段に削減できるとともに、動作内容
の解析処理を格段に効率化できる。
また本発明によれば、被解析プログラムを実行するこ
となく、そのプログラム内容を上述のように容易に把握
することができる。
さらに本発明によれば、命令列の配列方向とは反対方
向に各命令を読取つて、フラグを変化させ得る命令を検
出するとともに、フラグを規定するパラメータを検出し
て、前記反対方向に沿つてパラメータに関する入力命令
を検出することができるようにし、こうしてフラグを変
化させ得る命令とパラメータに関する入力命令とから、
分岐条件を求めて、これを通過条件として前述の実行条
件を検出することを可能とする。
【図面の簡単な説明】
第1図は本発明の一実施例のプログラム内容解析装置1
の構成を示すブロツク図、第2図は解析装置1の記憶領
域10の構成を示すブロツク図、第3図はプログラム内容
解析装置1の基本的動作を示すフローチヤート、第4図
は表示装置5の表示例を示す図、第5図は解析装置1の
プログラム内容解析処理手順を示すフローチヤート、第
6図および第7図は被解析プログラム例の動作内容を示
すフローチヤート、第8図は流れ構造の解析処理手順を
示すフローチヤート、第9図は流れ構造の解析処理結果
を示す系統図、第10図はブロツク化処理手順を示すフロ
ーチヤート、第11図はブロツク化処理の中間結果を示す
系統図、第12図および第13図はブロツク化処理結果を示
す系統図、第14図は分岐条件摘出処理手順を示すフロー
チヤート、第15図は入出力結合処理手順を示すフローチ
ヤート、第16図はパイル結合処理手順を示すフローチヤ
ート、第17図はパイル結合処理結果を示す系統図、第18
図は本発明の他の実施例の処理手順が示すフローチヤー
トである。 1…プログラム内容解析装置、2…磁気テープ装置、3
…磁気デイスク装置、4…内部記憶装置、5…表示装
置、8…処理装置、10…記憶領域、10a…アーキテクチ
ヤ記憶領域

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】機能語のみまたは機能語とオペランドとの
    組合せの命令列を含むプログラムを記憶する記憶手段
    と、 その記憶手段から順次読出して分岐命令および分岐先命
    令を検出する分岐/分岐先命令検出手段と、 分岐/分岐先命令検出手段の出力に応答し、分岐命令位
    置を示す情報と分岐先命令位置を示す情報との対を用い
    てプログラムをブロツク化し、この各ブロツク化された
    プログラムは、分岐命令または分岐先命令で始まり、分
    岐命令または分岐先命令のいずれかで終了し、かつ分岐
    命令および分岐先命令の間にはこれらの分岐命令または
    分岐先命令を含まないブロツク化手段と、 ブロツク化手段の出力に応答し、各ブロツク化されたプ
    ログラムを、処理が通過する通過条件を求める分岐条件
    摘出手段と、 記憶手段を読出してストア命令およびオペランドを直接
    操作する命令から成る書込み命令を検出し、この書込み
    命令に関するパラメータの入力命令を検出して実行内容
    を検出する実行内容検出手段と、 分岐条件摘出手段の出力に応答し、前記書込み命令と前
    記入力命令との間に存在するブロツク化されたプログラ
    ムの分岐条件をもとに、前記実行内容の実行条件を求め
    る実行条件検出手段と、 実行内容検出手段と実行条件検出手段との出力に応答
    し、前記実行内容とそれに対応する前記実行条件とか
    ら、両者の組合せである対を求める書込み命令単位の入
    出力結合手段とを含み、 分岐条件摘出手段は、 ブロツク化手段の出力に応答し、分岐命令を検出したと
    き命令列の配列方向と反対方向に各命令を読取り、分岐
    命令に指定されるフラグを変化させ得る命令を検出する
    命令検出手段と、 命令検出手段の出力に応答し、検出された命令におい
    て、前記フラグの変化を規定するパラメータを検出する
    パラメータ検出手段と、 パラメータ検出手段の出力に応答して、前記反対方向に
    沿って前記パラメータに関する入力命令を検出する入力
    命令検出手段と、 命令検出手段と入力命令検出手段との出力に応答し、フ
    ラグを変化させ得る命令とパラメータに関する入力命令
    とから、前記各ブロツク化されたプログラムの分岐条件
    を前記通過条件として摘出する手段とを含むことを特徴
    とするプログラム内容解析装置。
JP62154051A 1987-06-20 1987-06-20 プログラム内容解析装置 Expired - Fee Related JPH0820968B2 (ja)

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 JPS63317843A (ja) 1988-12-26
JPH0820968B2 true 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)

* Cited by examiner, † Cited by third party
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 ドキユメント自動出力制御方式

Patent Citations (4)

* Cited by examiner, † Cited by third party
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
JPS63317843A (ja) 1988-12-26

Similar Documents

Publication Publication Date Title
US4860203A (en) Apparatus and method for extracting documentation text from a source code program
JP3195839B2 (ja) 発電所の施設の運転を監視する方法
CN102289362A (zh) 分段符号执行装置及其工作方法
JPH09259003A (ja) デバッグ情報表示装置
JPH0820973B2 (ja) プログラム内容解析装置
JPH0820969B2 (ja) プログラム内容解析装置
JP2548197B2 (ja) プログラム内容解析装置
JPH0820972B2 (ja) プログラム内容解析装置
JPH0820968B2 (ja) プログラム内容解析装置
JPH0820971B2 (ja) プログラム内容解析装置
JPH0820970B2 (ja) プログラム内容解析装置
CN115878498A (zh) 一种基于机器学习预测程序行为的关键字节提取方法
JPS63317848A (ja) プログラム内容解析装置
JP2008059515A (ja) プログラム実行過程の表示方法及びシステム並びにプログラム
JP2653880B2 (ja) プログラム内容解析装置
JPS63317851A (ja) プログラム内容解析装置
JPH02128240A (ja) コンピユータプログラムの検査方法
JP2001125783A (ja) 同種命令群抽出方法および同種命令群抽出装置
JPS63317845A (ja) プログラム内容解析装置
JP2701246B2 (ja) コンパイラのベクトル化処理方式
JPS6214243A (ja) プログラムコスト見積方式
JP3594106B2 (ja) 自動プログラミング装置、自動プログラミング方法および記録媒体
Tompkins A new laboratory minicomputer language for biomedical applications
JPH03167641A (ja) プログラムソースの性能解析方式
KR20200057207A (ko) 담화 구조 분석을 기반으로 동일 주제의 여러 문서에 대한 대조 방식의 독해를 보조하는 방법 및 시스템

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees