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

プログラム内容解析装置

Info

Publication number
JPH0820972B2
JPH0820972B2 JP62154060A JP15406087A JPH0820972B2 JP H0820972 B2 JPH0820972 B2 JP H0820972B2 JP 62154060 A JP62154060 A JP 62154060A JP 15406087 A JP15406087 A JP 15406087A JP H0820972 B2 JPH0820972 B2 JP H0820972B2
Authority
JP
Japan
Prior art keywords
instruction
branch
condition
program
block
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
JP62154060A
Other languages
English (en)
Other versions
JPS63317852A (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 JP62154060A priority Critical patent/JPH0820972B2/ja
Publication of JPS63317852A publication Critical patent/JPS63317852A/ja
Publication of JPH0820972B2 publication Critical patent/JPH0820972B2/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が+イ
ンクリメントされ、ステツプ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を+インクリメントし
た後に、ステツプ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表の欄外に付した入力/出力の定義において、
PORT2の第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 …(13) が得られる。
(13)第13命令を通る条件 この場合、第1表のプログラムリストにおいて、第13
命令以降の処理の進行において、処理が第12ブロツク
に進行しない条件、すなわち上記第13式の条件の否定、 {CAPT1(D)−ZCAPT(D)}の上位バイト≠0 …(14) が求めるべき条件となる。
このようにして第5図ステツプm3において摘出される
べき分岐条件は、各ブロツク〜を処理が通る条件と
して導出された。これ以降、処理は第5図ステツプm4に
移る。
ステツプm4では、書込み命令単位の入出力結合処理が
行なわれる。ここに言う書込み命令とは、ストア命令
と、オペランドの直接操作命令(たとえばオペランドの
数値を+1増加させるインクリメント命令「INC」な
ど)とを指す。このような命令の検出は、第1表のプロ
グラムリストにおいて、各命令を読取ることによつて直
ちに実現できる。
このような入出力の結合処理は、第15図のフローチヤ
ートに示される。第15図ステツプe1,e2では、第1表で
示されるプログラムに対して前述したブロツク化処理と
分岐条件の生成処理とを行なう。この後、ステツプe3で
は、第1表に示されるプログラムにおいて、書込命令が
検出される。このような書込み命令としては、第2命令
「INC」、第6命令「STAA」、第11命令「STAA」、第16
命令「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←COUNT+n …(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 PORT1≠¥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) …(25) 注:第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式のパイルD
5、第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を全命令に
わたつて記憶する必要がなく、装置に要求される記憶容
量を格段に削減できる。
上述したように第1表に示したプログラム例に関して
パイル出力がなされると、操作者に把握容易な形式でプ
ログラム内容が出力されることになる。一方、被解析プ
ログラムのシミユレーシヨンまたはエミユレーシヨンを
行なうことが広く行なわれているが、先行技術の項で述
べたように、従来ではプログラムから要求される外部入
力データを全て入力しないと、プログラムのシミユレー
シヨンまたはエミユレーシヨンは行なうことができなか
つた。本実施例の解析装置1は、プログラムから要求さ
れる外部入力データを全て入力することなしに、プログ
ラムの動作内容を把握できるようにしている。
ここで第1表のプログラム例において、第1命令〜第
12命令からなるプログラム部分を例にとり、この部分の
エミユレーシヨンについて考察する。このプログラム部
分に表われる外部入力が必要なオペランドは、「TIM
E」、「COUNT」および「PORT1」の3種である。ここ
で、これのオペランドに対して、下記、 TIME=¥80 …(30) COUNT=¥7F …(31) PORT17=0 …(32) のデータを与えた場合を想定する。ここで、第32式の
「PORT17」は、ポート1の第7ビツトの意味である。
上述したような外部入力データが与えられた状態で、
被解析プログラムのエミユレーシヨンを行なうには、前
述の第5図ステツプm1〜m5の処理と同一内容の処理を行
なえばよい。
上記プログラム部分に関して、第30式〜第32式のデー
タ入力下における実行内容は、下記第5表に示される。
ここで記号「↓」は、たとえば第6図に示すフローチ
ヤートの判断ステツプa4,a8などで分岐しない場合であ
ることを示す。また記号「×」は、データの不足などに
起因して、実行内容が不定であることを示す。
すなわち上記第30式〜第32式のデータ条件下では、前
記プログラム部分の第9命令「BEQ」の判断を確定する
に必要なデータが不足していることになる。従来では、
このような場合、シミユレーシヨンまたはエミユレーシ
ヨンで得られる出力結果は意味がないものになるにもか
かわらず、正しいものとして処理してしまう危険性があ
つた。
一方、本実施例では、前記外部データ入力は基本的に
不必要であり、上述したようにデータが入力された場合
であつても、そのデータのもとに上述したような第5図
ステツプm1〜m5の処理を行なう。これにより、解析装置
1のたとえば表示装置5またはプリンタ6(第1図参
照)では、たとえば第18図示のような出力例が表示され
る。すなわち上記第30式〜第32式の条件下で、第5表の
第1命令〜第10命令の範囲でプログラムを実行させた場
合、ポート1には、 PORT1=¥00 …(33) の場合には、0が出力され、 PORT≠¥00 …(34) の場合には、¥80が出力されることが把握される。
このようにして、被解析プログラムで要求される外部
入力データを全ては入力しない場合であつても、当該プ
ログラムのシミユレーシヨンおよびエミユレーシヨンを
容易に実行することができる。
効果 以上のように本発明によれば、被解析プログラムの各
命令を読取つて、書込み命令単位の入力動作と出力動作
とを結合する処理を行なうに先だつて、プログラム全体
の処理の流れの構造を容易に認識することができる。し
たがつて全命令にわたつてコンデイシヨンコードレジス
タなどの制御情報をすべて記憶する必要がなく、処理に
必要な記憶容量を格段に削減できるとともに、動作内容
の解析処理を格段に効率化できる。
また本発明によれば、被解析プログラムを実行するこ
となく、そのプログラム内容を上述のように容易に把握
することができる。
さらに本発明によれば、実行内容検出手段と実行条件
検出手段とは、オペランドに数値などのデータが入力さ
れていれば、それを演算して実行内容と実行条件とを求
めるので、実際に即したプログラム内容の解析結果を容
易に得ることができるようになる。
さらに本発明によれば、命令列の配列方向とは反対方
向に各命令を読取つて、フラグを変化させ得る命令を検
出するとともに、フラグを規定するパラメータを検出し
て、前記反対方向に沿つてパラメータに関する入力命令
を検出することができるようにし、こうしてフラグを変
化させ得る命令とパラメータに関する入力命令とから、
分岐条件を求めて、これを通過条件として前述の実行条
件を検出することを可能とする。
【図面の簡単な説明】
第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 (2)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62154060A JPH0820972B2 (ja) 1987-06-20 1987-06-20 プログラム内容解析装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62154060A JPH0820972B2 (ja) 1987-06-20 1987-06-20 プログラム内容解析装置

Publications (2)

Publication Number Publication Date
JPS63317852A JPS63317852A (ja) 1988-12-26
JPH0820972B2 true JPH0820972B2 (ja) 1996-03-04

Family

ID=15576030

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62154060A Expired - Fee Related JPH0820972B2 (ja) 1987-06-20 1987-06-20 プログラム内容解析装置

Country Status (1)

Country Link
JP (1) JPH0820972B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0721765B2 (ja) * 1989-06-30 1995-03-08 富士通テン株式会社 フローチヤート表示装置
JPH0658625B2 (ja) * 1989-07-19 1994-08-03 富士通テン株式会社 プログラム内容解析方法

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
JPS63317852A (ja) 1988-12-26

Similar Documents

Publication Publication Date Title
JP3195839B2 (ja) 発電所の施設の運転を監視する方法
EP0142735A2 (en) Table driven translator
CN102289362A (zh) 分段符号执行装置及其工作方法
JPH0820973B2 (ja) プログラム内容解析装置
JPH09259003A (ja) デバッグ情報表示装置
JPH0820969B2 (ja) プログラム内容解析装置
JPH0820972B2 (ja) プログラム内容解析装置
Dergachev et al. Fundamentals of Algorithmization of Functional and Computational Problems
JP2548197B2 (ja) プログラム内容解析装置
JPH0820971B2 (ja) プログラム内容解析装置
JPH0820968B2 (ja) プログラム内容解析装置
JPH0820970B2 (ja) プログラム内容解析装置
CN115878498A (zh) 一种基于机器学习预测程序行为的关键字节提取方法
JPS63317848A (ja) プログラム内容解析装置
JP2653880B2 (ja) プログラム内容解析装置
JPS63317851A (ja) プログラム内容解析装置
JPH02128240A (ja) コンピユータプログラムの検査方法
JP2001125783A (ja) 同種命令群抽出方法および同種命令群抽出装置
JP2616613B2 (ja) プログラマブルコントローラ
JPS5826567B2 (ja) 電子計算機システム
JPH01235989A (ja) プラント運転ガイド装置
JPS63317845A (ja) プログラム内容解析装置
JPS6214243A (ja) プログラムコスト見積方式
JP2701246B2 (ja) コンパイラのベクトル化処理方式
JPH03167641A (ja) プログラムソースの性能解析方式

Legal Events

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