JPH02128240A - コンピユータプログラムの検査方法 - Google Patents

コンピユータプログラムの検査方法

Info

Publication number
JPH02128240A
JPH02128240A JP63282998A JP28299888A JPH02128240A JP H02128240 A JPH02128240 A JP H02128240A JP 63282998 A JP63282998 A JP 63282998A JP 28299888 A JP28299888 A JP 28299888A JP H02128240 A JPH02128240 A JP H02128240A
Authority
JP
Japan
Prior art keywords
instruction
program
block
processing
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.)
Pending
Application number
JP63282998A
Other languages
English (en)
Inventor
Hisanori Yasuki
安木 寿教
Hirotoshi Tonou
宏敏 斗納
Hiromi Uchimaru
内丸 ひろみ
Minoru Takahashi
稔 高橋
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 JP63282998A priority Critical patent/JPH02128240A/ja
Publication of JPH02128240A publication Critical patent/JPH02128240A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、マイクロコンピュータなどを作動するために
用いられるプログラムに発生するエラーを検出するコン
ピュータプログラムの検査方法に関する。
従来の技術 マイクロコンピュータなどのコンピュータを動作させる
ためのプログラムを作成する場合、プログラマは一般的
に次のような手順をふんでプログラムを作成する。まず
第1ステツプとして、プログラマは作成されるプログラ
ムが実行する処理内容(プログラム仕様)を整理し、そ
のプログラム仕様にき致するフローチャートと呼ばれる
流れ図を作成する。
第2ステツプとして、このフローチャートを基礎として
、プログラマは命令語が順次的に記載されたプログラム
を作成し、この作成されたプログラムをいわゆるアセン
ブラあるいはコンパイラによって形式的なエラーの検出
を行う。エラーの検出された部分については、さらにプ
ログラムの修正を行い、最終的にエラーの発生しないプ
ログラムを作成する。
第3ステツプとして、このようにして作成されたプログ
ラムを実際のコンピュータ上で動作させ、プログラム仕
様に合致した結果が得られているか盃かを判断する。も
しプログラムが目的とするプログラム仕様を満足する形
で実行されていないときは、プログラマはフローチャー
トおよびプログラムの各ステップ毎にチエツクを行い、
誤動作の原因となっている処理(バグ)の検出を行う、
そして、バグが発見されると、プログラムを修正し、前
述の第1ステツプおよび第2ステツプが再び実行され、
最終的にプログラム仕様を満足するまでプログラムの修
正が繰返し行われる。
発明が解決しようとする課題 上述したように、プログラマがプログラムを作成すると
きに発生するエラーは、単に命令語を記述するときに発
生する形式的なエラーと、プログラム仕様を満足しない
処理を行う実質的なエラーとに分類することができる。
前者の形式的なエラーはアセンブラあるいはコンパイラ
などのプログラムの支援により発見することが比較的容
易にでき、発見するための時間もそれほど長時間を必要
とするものではない。
しかしながら、後者の実質的なエラーは、プログラム仕
様によってエラーの発生状態が異なり、このエラーの発
見のためにはプログラムを作成したプログラマが1命令
毎にプログラム仕様を満足しているか否かを確認する必
要がある。特に、プログラムには割込み処理を含め多く
の分岐命令が存在し、その分岐命令が存在するときは、
分岐前後の処理が継続して実行されることを確認する必
要がある。したがって、命令語が増加する場きはもちろ
んのこと分岐命令が多くなるに従いプログラムを検査す
る時間が膨大となる。
そこで本発明の目的は、プログラムの検査時間を短縮さ
せるプログラムの検査方法を提供することにある。
課題を解決するための手段 本発明は、予め定めるプログラム領域を時間順次的に実
行される複数の命令のうち予め定める対をなす命令語と
、その対に対応する命令語群を定め、 前記対をなす命令語の一方の命令語の実行後に前記他方
の命令語が実行されることなしに、再度前記一方の命令
語の実行が行われたとき、対をなす命令語の一方の命令
の実行後に前記他方の命令語が実行されないとき、また
は対によって区切られた領域外に、その対に対応する命
令語が存在するときに誤りと判定することを特徴とする
コンピュータプログラムの検査方法である。
作  用 本発明の方法においては、予め定めるプログラム領域に
ついて一対の命令語と、その対に対応する命令語群が指
定される。この指定されたプログラム領域についてその
先頭から時間順次的に実行される。そして、選択された
一対の命令語の一方の命令語が実行された後に他方の命
令語が実行されないうちに再び一方の命令語が実行され
る場合に誤りと判定する。
実施例 第1図は、本発明の一実施例であるコンピュータプログ
ラムの検査方法が実施されるプログラム検査装置11の
構成を示すブロック図である。第1図において、プログ
ラム解析装置1は、従来技術の項で述べたようなチエツ
クが行われる被解析プログラムが、シーケンシャルな形
式で記憶されている磁気テープ記録/再生装置(以下「
磁気テープ装置」という、)2と、ランダムな記憶が行
われる磁気ディスク装置3と、たとえばランダムアクセ
スメモリ(RAM)などによって実現される内部記憶装
置4と、たとえばCRT(陰極線管)装置や液晶表示装
置などによって実現される表示装置5と、インパクト形
または非インパクト形などの印字装置6と、各種キーや
スイッチ類などによって実現されるキー人力装置7と、
これらによって入力される情報を処理し、またこのよう
な情報の入力/出力動作を制御するマイクロプロセッサ
などを含む処理装置8とにより構成される。
処理装置8には、さらにエラー検出処理装置12と接続
されており、処理装置8において処理された情報、たと
えば被解析プログラムの解析結果であるプログラムの流
れの構造がエラー検出処理装置12に転送される。そし
て、エラー検出処理装置12は被解析プログラムの流れ
の構造に基づき、被解析プログラムの各命令語が予め定
める形式で順次的に使用されているか否かを各命令語毎
に検査し、その検査結果は処理装置8へ送出される。エ
ラー検出処理装置12が検出したエラーは、表示装置5
または印字装置6から出力され、被解析プログラムのデ
パックに供される。エラー検出処理装置12において行
われる処理は、被解析70グラムの流れの構造を基礎と
して処理されるので、まずプログラム解析装置1の動作
について以下説明する。
仕様書の内容に従って作成されたプログラムは、従来技
術の項で述べたように、まずシンタックスエラーなどの
基本的なバグを取除いた後、磁気テープ装置2に記憶さ
れる。磁気テープ装置2の被解析プログラムは、解析装
置1の内部記憶装置4へ転送され、後述するようなチエ
ツク処理が行なわれる。その結果は再び磁気テープ装置
2へ記憶され、または磁気ディスク装W3へ記憶される
またこのような記憶処理とともに、表示装置5へ表示出
力され、また印字装[6によって印字出力される。
第2図は磁気テープ装置2や磁気ディスク装置3などの
記憶装置の記録状態を示す系統図である。
処理袋f8にバス9などを介して接続された磁気テープ
装置2の記憶領域10は、前記被解析プログラムの実行
対象となるたとえばマイクロコンピュータに関するアー
キテクチャが記憶されるアーキテクチャ記憶領域10a
や、この被解析プログラムによる制御の対象となる入力
/出力に用いられるアナログ信号をデジタル信号に変換
する際の比較電圧値など、このようなアナログ/デジタ
ル変換器の諸元などを記憶するA/D変換器諸元記憶領
域10bや、本被解析プログラムの実行対象となるマイ
クロコンピュータの有する各端子の信号の出力状態と、
この端子に接続される各人力/出力装置の動作状態との
関係の定義(たとえばマイクロコンピュータの成るピン
からハイレベルの信号が導出されると、LED (発光
ダイオード)が点灯する、などの定義)が、記憶される
定義記憶領域10cなどを含んで構成される。
第3図は第1図示の解析装置1の基本的動作を説明する
フローチャートであり、第4図は解析装置1の表示装置
5の表示例を示す図である。第1図〜第4図を参照して
、解析装置1の基本的動作について説明する。解析装置
1の電源が投入されると第3図ステップnl以降の処理
が開始され、表示装置5上に各種入力要求を表示する。
ステップr+ 2では、このような入力要求に対応して
、解析されるプログラムの実行対象となるマイク・ロコ
ンピュータの名称を入力する。この様子は第4図(1)
に示される。
続くステップn3では、入力された名称のマイクロコン
ピュータのアーキテクチャが、アーキテクチャ領域10
aに存在するが°どうがを判断する。
存在していればステップn4で当該アーキテクチャを呼
出し、たとえば内部記憶4に転送し、ステップr15で
アナログ/デジタル変換器の名称を入力する。一方、前
記ステップn3の判断が否定であれば処理はステップn
6に移り、解析装置1は、入力された名称に対応するア
ーキテクチャが記憶されていないことを表示し、新規登
録を要求する。
この後、処理はステップrr 5へ移る。
ステップn5のアナログ/デジタル変換器の名称入力の
様子は、第4図(1)に示される。続くステップrs 
7では、解析されるプログラムが動rト対象とするマイ
クロコンピュータに設定される各ボートの状態と外部状
態との関係を、第4図(2)に示すように入力する。た
とえばPORT17がハイレベルとなれば、スタートス
イッチがオン状態に切換わり、PORT16がハイレベ
ルになるとサーモスイッチがオン状態に切換わる。ステ
ップn8では、前記マイクロコンピュータの割込み端子
の状態と、外部状態との関係の入力が、表示装置5上で
要求される。またアナログ/デジタル変換器チャンネル
用ボートについては、キー人力装置7によって所定の事
項を入力し、第4I2I(3)に示すように所定のデー
タ項目を入力して各ボートを定義する。
ステップrr 9では、ステップn7.n8での各入力
された名称に対応するアーキテクチャが記憶されていな
いことを表示し、新規登録を要求する。
この後、処理はステップn5へ移る。
ステップn5のアナログ/デジタル変換器の名称入力の
様子は、第4図(1)に示される。続くステップn7で
は、解析されるプログラムが動作対象とするマイクロコ
ンピュータに設定される各ボートの状態と外部状態との
関係を、第4図(2)に示すように入力する。たとえば
PORT17がハイレベルとなれば、スタートスイッチ
がオン状態に切換わり、PORT16がハイレベルにな
るとサーモスイッチがオン状態に切換わる。ステップn
8では、前記マイクロコンピュータの割込み端子の状態
と、外部状態との関係の入力が、表示装置5上で要求さ
れる。またアナログ/デジタル変換器チャンネル用ボー
トについては、キー人力装置7によって所定の事項を入
力し、第4図(3)に示すように所定のデータ項目を入
力して各ボートを定義する。
ステップn9では、ステップn7.n8での各種入力が
正しく実行されたかどうかを判断する。
判断結果が否定であれば処理はステップr17に戻り、
上記入力されたデータを訂正する。判断結果が肯定であ
ればステップnlOに移り、たとえば磁気テープ装!2
に記憶されている被解析プログラムを内部記憶装置4に
転送して読取る。ステップnilでは、後述するような
被解析プログラムを解析し、ステップn12で解析結果
を出力して処理を終了する。
第5図は第3図のステップnilのプログラムの解析処
理の内容を説明するフローチャートである。第5図を併
せて参照して、解析装置1の操作について説明する。上
述したように本発明は、たとえばマイクロコンピュータ
用にたとえばアセンブラ言語によって作成されたプログ
ラムの内容を解析する装置に関する。被解析プログラム
は、解析装置1の磁気テープ装置2に記憶されており、
第3図ステップr110で説明したように、このような
プログラムは磁気テープ装22からたとえば内部記憶装
置4へ転送される。
本実施例では、 被解析プログラムを以下の第1 表に示すプログラムと想定して説明する。
(以下余白) 第 表(プログラムリスト) 上記第1表のプログラムの内容は、第6図および第7図
のフローチャートに示される。
第6図お よび第7図のステップ番号al、a2.・・・、a21
は、上記第1表のプログラムリストの行i号に対応して
いる。また、第1表の全21行の各命令の実行に間する
各フラグの状態を示すコンデイションコードレジスタ(
以下、CCRと称する)は、下記第2表に示される。こ
こでは、符号フラグN、ゼロフラグZ、オーバフローフ
ラグVおよびキャリフラグCの状態を示す。
(以下余白) 第 表 第2表中、記号rj」、r・J、’RJ。
「S」はそれぞれ[結果によってセットまたはリセット
される」、「変化しない」、「リセット(クリア)され
る」および「セットされる」を表わす。
上記プログラムには、レジスタ名称の定義、割込み制御
レジスタの設定、ボート入出力方向の設定、割込みベク
トルの設定等は省略されているが、割込みはCAPTI
のみ許可、その割込みアドレス(ラベル)はCAPTと
する。
上記第1表のプログラムリストで、 (1)入カニPORT1の第6ビツトにスイッチ入力(
スイッチONでハイレベ ルに変化) (注1) (注2〉 :PORT2の第0ビツトに可変周 波信号入力 および、 (2)出力+PORT1の第7ビツトから発光ダイオー
ド出力(出力ハイレベルで発光ダイオード点灯)の入出
力操作が行われる、と定義しておく、これは第3図ステ
ップn7で行われる。
上記第1表のプログラムリストが読込まれた解析装置1
では、第5図ステップm1でプログラムの流れの構造の
解析が行われる。
上述したように、第1表に示すプログラムリストは、第
6図および第7図に示す動作内容を有している。しかし
ながら、第1表のプログラムリストから第6図および第
7図示のフローチャー“トを得るには、人手によって、
各命令が単なる処理命令か条件文による分岐命令かを把
握する作業と、分岐命令の場合にはその分岐先の検出(
%業などが含まれ、これらの作業に基づいて上記フロー
チャートが作成される。
本発明の眼目の1つは、任意のプログラムリストから、
該プログラムの分岐命令と、該分岐命令によって定めら
れる分岐先命令とを把握した後、該プログラムの処理の
流れの構造の把握を人間の頭脳による作業を介すること
なく、解析装置によって自動的に行うことができるよう
にしたことである、またこれによって、後述するように
上記フローチャートと類似の形態の出力を得ることがで
きる。
このような流れの構造を把握する処理を、第8図のフロ
ーチャートにおいて示す、第5図ステップb1では、命
令行番号を示すパラメータkを「1」に初期化し、ステ
ップb2で第に命令(第1表における行番号にの命令)
の読取りを行う、続くステップlJ3では、この読取ら
れた第に命令が分岐命令であるかどうかを判断する。こ
の判断はたとえば、第1表における命令を構成する二一
モニツクを読取ればよい。すなわち上述したように、所
望のマイクロコンピュータのアーキテクチャを呼出した
段階で、解析装置1の内部記憶4には、当該マイクロコ
ンピュータに用いられるアセンブラ言語のコマンドや、
コマンドに関連するフラグなどのテーブルが別途記憶さ
れ、これを参照することによって、第1表の、各命令が
分岐命令であるか否かを容易に判断できるからである。
上記ステップb3の判断結果が否定であれば、ステップ
b4でパラメータkを+1インクリメントし、処理をス
テップb2に戻し、上述の説明と同様な処理を行う、こ
のとき第1表のプログラムリストに従えば、第4命令を
読取ったとき、アーキテクチャが参照され、この第4命
令がゼロフラグZの状R(「1」または「0」)を条件
とする分岐命令であることが把握される。したがって、
第8図の処理において第4命令が読取られたときステッ
プb3の判断は肯定となり、処理はステップb5に移る
ステップb5では、第1表の第4命令のオペランドrL
OOPJと対応するラベル名を検索する。
第1表のプログラムリストでは、第2命令に上記オペラ
ンドと同一のラベルが付されており、したがって第4命
令の分岐先は、第2命令であることが理解される。ステ
ップb6では、一般に分岐命令の行番号にと、これに対
応する分岐先命令行番号mとの対(以下、ブロック化情
報と称する)(k、m)を、内部記憶装置4に記憶する
。この後、処理はステップb4に移り、行番号を+1イ
ンクリメントして次の行へ処理を進める。
このような処理を行うことによって、第1表のプログラ
ムリストにおける分岐命令と分岐先命令との行番号の対
(k、m>に関して、下記第3表のような結果が得られ
る。
第  3  表 この段階で解析装置1は、第1表に示すプログラムリス
トの流れの構造が把握できたことになる。
すなわち第3表として得られた結果を操作者が容易に理
解できる形式に出力する場き、たとえば第1表のプログ
ラムリストの行番号1〜21を第9図に示すように一列
に配列し、上記第3表に基づいて、行番号kから行番号
mへ向かう分岐矢符をこれに付すことによって、プログ
ラムリストの流れの構造として第9図示のような出力が
得られる。
これによって操作者も、第1表のプログラムリストの流
れの構造を容易に把握することができる。
こうして第5図ステップm1の処理は終了する。
次に第5図ステップm2では、ステップm1で得られた
被解析10グラムの流れの構造の認識に基づいて、該プ
ログラムをブロックに区分する処理を行う。このような
ブロック化処理には、以下のような利点がある0本発明
のプログラム内容解析処理が行われる被解析プログラム
は、一般にはたとえば致方ステップのような場合もあり
、このようなプログラムには、各種分岐命令も大量に含
まれている。したがって、このような分岐命令の条件の
成立の是非に関する組合わせの数が膨大な数になること
は、容易に想定される。このような膨大な組合わせ数の
プログラムの系統を逐次的に考察の対象とし、各系統ご
とに全命令のコンデイションコードレジスタ(CCR)
を記憶するのは、極めて繁雑であるとともに膨大な記憶
容量が要求される。
したがって本発明の眼目の1つは、被解析プログラムを
後述するような条件の下で、複数のブロックに区分し、
各ブロックに対して第5図ステップm3の分岐条件摘出
処理、ステップm4の書込み命令単位の入出力結合処理
、およびステップm5のパイルの結き処理などがち成る
同一内容の処理を施すようにしたことである。このよう
なブロックの区分点は、プログラムにおける分岐命令行
か分岐先命令行であり、1ブロツクは分岐命令行または
分岐先命令行で始まり、これらのいずれがで終了し、か
つその間にはこれら分岐命令または分岐先命令行を含ま
ないように選ぶ。
すなわち全プログラムは、このような複数のブロックの
結合として表現され、同一ブロック内のプログラムの異
なる流れの種類も極めて少数となる。これにより各ブロ
ックごとの内容解析を格段に容易に行えるようになり、
全プログラムの内容解析は、ブロックごとに得られた内
容解析結果の結合として示される。
このようなブロック分は処理は、第10図のフローチャ
ートに示される。このとき、前記第8図を9照して説明
した第5図ステップm1の流れの構造の解析処理によっ
て得られたブロック化情報対(k、m)について、第1
表の全プログラムについて行うことによって、第3表に
示したような結果が得られる。すなわち、このようなブ
ロック化情報対(k 1 、 m 1 ) 、  (k
 2 、 m 2 ) 、 −(ks、ms>(本実施
例では5−4)が、第1図示の内部記憶装置4に記憶さ
れている。以下に説明する第10図の処理には、このブ
ロック化情報対列を用いる。なお上記ブロック化情報列
の各数値kl、に2.−、ks ;ml、m2. ・=
、rnSについて総称する場合には、それぞれ記号k。
rnを用いて示す。
第5図ステップc1では、第1表のプログラムの行番号
を示すパラメータiを「1」に初期化する。ステップc
2では上記行番号iに関して、この行番号iに等しい上
記ブロック化情報kまたはブロック化情報rnが存在す
るか否かを判断する。
この判断が肯定であれば、ステップc3でブロック化情
報に、mによるブロック化処理を行う。
このブロック化処理は、以下のように行われる。
まずステップc3において、判断が肯定となるブロック
化情報に、mが記憶される。次にステップc4で行番号
iが+1インクリメントされ、ステップc5では行番号
iがこのような行番号の最終値すなわちMAX(i)を
超えたがどうかの判断を行う。
判断結果が否定であれば、第10図に示すブロック化処
理は被解析プログラムの最終行まで到達していないこと
になり、ステップc2に戻る。以下、同様の処理が繰り
返し行われ、ステップc2の判断が肯定となるブロック
化情報に、rnがあった場合、前回ステップc2の判断
を肯定としたブロック化情報に、mを呼び出し、これら
を組み合。
わせでブロック情報対(α、β)として記憶する。
以下、このような処理がプログラムの最終行まで繰り返
し行われる。
上記ステップ01〜c5で行われる処理は、たとえば第
1表のプログラムの第1行から第21行までを順番にた
どって、その中でブロック化情報(k、m)として示さ
れる分岐命令行および分岐先命令行に関して、行番号の
増加方向において隣接する命令列の組をブロック情報(
α、β)として記憶する処理である。
上記ステップc5の判断が肯定となれば、処理はステッ
プc6に移り、上記ブロック化情報列(kj、mj) 
        ・・・(1)j=1. 2.  ・・
・  S によるブロック化処理を行う。
このブロック化処理は、第1表のプログラムリストにお
いて、分岐処理を実現するブロックを決定する処理とな
る。すなわち第3表のブロック化情報(k、m>におい
て、たとえばブロック化情報対(4,2・)は、第41
fb令がら第2命令へ処理が分岐する系統を規定してい
る。したがって、これらのブロック化情報対(k、m)
を、前記ブロック情報対(α、β)と異なる内容をなす
分岐ブロック情報対(α、β)brとして再定義するこ
とにより、第1表のプログラムリストに間して、分岐を
行う系統を網羅できる。ステップc6による分岐ブロッ
ク化処理が終了すると、第11図に示すブロック分は結
果が得られる。
また上述のように、ブロック情報対〈α、β〉と、分岐
ブロック情報対(α、β)brとを定義することにより
、第1表のプログラムリストのたとえば第9命令、第1
0命令および第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図のフローチ
ャートに示される。第5図ステップd1では、上述した
ようなブロック化処理を行い、各ブロック情報対(α、
β)、(α、β)brを得る。ステップd2では変数j
を「1」に初期化する。ステップd3以降の処理では、
分岐条件として第1ブロツク■、第2ブロツク■、第3
ブロツク■、・・・、第13ブロツク■を処理が通過す
る条件を求めることになる。
(1)第1ブロツク■を通る条件 第1ブロツク■は第6図に明らかなように、第12命令
の無条件ジャンプ命令によって処理が無条件に通過する
ブロックである。
(2)第2ブロツク■を通る条件 第5図ステップd3では、第3表を資照して第j番目(
現時点ではj=1)のブロック化情報対(k、m)を参
照する。ステップd4では、ステップd3におけるブロ
ック化情報対(k、m)において、第に命令の分岐条件
を支配するフラグを検出する。第4表によれば、j=1
のときに=4であり、第1表のプログラムの第k(=4
)命令rBNE、の分岐条件を支配するフラグの検出を
行う、これはアーキテクチャによって、各命令それ自体
に規定される条件となる。すなわち上記第4命令の場合
には、ゼロフラグZである。
ステップd5では、命令列の配列方向と反対方向に一命
令を読取る。この命令が上記フラグ(ゼロフラグZ)を
変化させる命令であるかどうかのステップd6における
判断が否定であれば、ステップd5.d6を繰り返す、
肯定であればステップd7に移り、フラグを変化させる
命令を記憶する。第1表のプログラムリストと第2表の
CCRとを参照すれば、この命令は第3命令rCMPA
COUNT、であり、ゼロフラグZを変化させる命令で
あることが判断される。ステップd8では、第1表のプ
ログラムリストを参照して、ゼロフラグZに関する当該
第3命令中のパラメータを検出する。すなわち第3命令
はアキュムレータAに関する命令であり、パラメータと
してアキュムレータAが検出される。
ステップd9では、該命令が該パラメータを変化させる
命令か否かを判断する。この判断は前記アーキテクチャ
に含まれる前記CCRを参照して行われる6判断が肯定
であれば、ステップdl。
に移り当該命令が記憶され、ステップ(111に移る。
第3命令rcMPAJはアキュムレータAの内容を変化
せず、ステップd9の判断が否定となり、ステップ(1
10を経ることなくステップd11に移る。
ステップcullでは、現在検討中のブロックが第1表
のプログラムリスト中でループを構成するブロックかど
うかを判断する。現時点では、解析装置1は第4命令お
よび第3命令しか認識しておらず、この判断は否定とな
り、処理はステップ」12に移り、ステップdloで記
憶した命令が、前記パラメータの入力命令であるかどう
かを判断する。この判断が肯定であれば、ステップd1
5に移る。一方、上記ステップdllの判断が肯定であ
れば、ステップd14で分岐条件に後述するようなルー
プ要素を追加し、処理はステップd15に移る。
ステップd15では、当該分岐命令が第9図に示すよう
な本実施例における被解析プログラムの構造において、
ネスティング構造に含まれるものであるかどうかを判断
する0判断結果が肯定ならば、ステップd16で後述す
るようなネスティング要素を追加し、ステップd13で
記憶したブロック列の種類がすべて終了したかどうかを
判断し、判断結果が肯定であればステップd17で分岐
対のパラメータjをプラス1インクリメントし、処理は
ステップd3に戻る。前記ステップd15の判断が否定
であれば、ステップd16を経ることなく、処理はステ
ップd13に移る。
第3命令rcMPA」について、前記ステップd12の
判断は否定となり、処理はステップd19に移り、現在
検討中の命令が当該命令を含むブロックの先頭であるか
どうかを判断する。第3命令について判断結果は否定で
あり、ステップd20で命令列の配列方向と反対方向に
一命令を読取り、処理はステップd9に移り、前述の処
理を繰返す。
前記ステップd19で判断結果が肯定ならば、ステップ
(121に移り、当該ブロックに処理が到達するブロッ
ク列の種類を記憶する。すなわち当該ブロックに至るル
ートの種類を記憶する。ステップd22では、記憶した
ブロック列中から−ブロック列を選択し処理はステップ
d20に戻る。
第1表のプログラムリストにおいて、第4命令から上述
の処理が繰り返される。このとき、第1命令rLDAA
Jを解析する段階で、ステップd10で記憶されてきた
命令は、オペランドで記述すると、 A=TIME−(COUNT+1)  ・・・(2)に
なる。
またステップdllの判断は肯定となり、第2式の分岐
条件にステップd14でループ要素が付加され、下記第
3式の分岐条件が得られる。すなわちループを0回繰返
せば上記第2式は、A=TIME−(COUNT+n)
  =13)と表される。この実行内容がループを構成
する条件は、第4命令で分岐条件が成立すること、すな
わちゼロフラグZに関して、 Z==0              ・・(4)が成
立する場合である。したがって上記ステップdloでは
最終的に、 TIME−(COUNT+n)≠O−15)の条件が得
られる。これは第2ブロツク■を処理が通過する条件と
なる。
(3)第3ブロツク■を通る条件 この場き、第1表の10グラムリストにおいて、処理が
第2ブロツク■に進行しない条件、すなわち、上記第5
式の条件の否定 TIME−(COUN’T+n)=O=16)が求める
べき条件となる。
(4)第4ブロツク■を通る条件 ステップd3では、第4ブロツク■の最終行番号9をブ
ロック化情報にとする対(k、m)が、j = 2の場
合として、第3表より(8,11)として読出される。
この第8命令に対して、上記第2ブロツク■を通る条件
を求めた処理と同様な処理が行われる。ステップd4で
は、第1表のブログラノ、の第k(=8)命令rBMI
Jの分岐条件を支配するフラグの検出を行う、すなわち
、上記第8命令のF!合には、符号フラグNである。
ステップd5.d6では、この符号フラグNを変化しう
る最近の命令を検索する。上記第1表および第2表を参
照すれば、第7命令rLDABP ORT I Jが対
応することが検出される。ステップd8では、この符号
フラグNに関する第7命令中のパラメータを検出する。
すなわち第7命令はアキュムレータBに関する命令であ
り、このアキュムレータBがパラメータとして検出され
る。
ステップd12では、パラメータとしてのアキュムレー
タBの入力命令を検出する。第1表のプログラムリスト
を参照すれば、上記第7命令自身がアキュムレータBの
入力命令であることが検出される。したがってステップ
d12の判断は肯定となり、ステップd15でのネステ
ィング構造判断は否となるため、第3ブロツク■の実行
内容をオペランドによって表現すれば、求める分岐条件
は、 PORT17=O・・・(7) となる。ここで表記rPORT17=o」は、入出カポ
−)PORTIの第7ビツトが「0」となる状態を表現
する。この後、処理はステップd13に移り判断が否定
となり、前述のような処理を経て処理はステップd3に
戻る。
(5)第5ブロツク■を通る条件 ステップd3では、j=3の場合としてブロック化情報
対(k、rn)= (9,11)が読出され、ステップ
d4では第k(=9)命令rBEQ  NANNOI 
Jの分岐条件を支配するフラグすなわちゼロフラグZが
検出される。続いてステップd5、d6では、このゼロ
フラグZを変化しうる最近の命令として、第1表および
第2表を参照して、第7命令rLDABJが検出される
このロード命令はアキュムレータBにrPORTIJの
内容を読込む内容であり、このアキュムレータBに関す
るゼロフラグZの成立の是非が分岐条件となる。したが
って、前述のような処理が繰り返された後、ステップd
loでは、PORTIの少なくとも1つのビット−1・
・(8) が得られる。この後、処理はステップdllに移り、第
5ブロツク■がループ構造の一部をなすかどうかが判断
され、これは否定となる。
続くステップd12の判断は肯定となり、ステップcl
15で第5ブロツク■がネスティング構造の一部を成す
かどうかが判断される。第5ブロツク■は2重のネステ
ィング構造を構成しており、ステップd16で上記第8
式の分岐条件にネスティング要素が付加される。
すなわち、第12図に明らかなように、第5ブロツク■
は、第4ブロツク■を通過しなければ到達しない処理ブ
ロックであり、したがって第5ブロツク■の通過条件は
、第4ブロツク■の通過条件と上記第8式の条件との論
q積となる。すなわち、 PORT17’=0 かつ、 PORTIの少なくとも1つのビット−1・(9) の分岐条件が得られる。この後、ステップd13におい
て、記憶したブロック列はないので、処理はステップd
3に戻る。
(6)第6ブロツク■を通る条件 第14図のフローチャートにおいて、ステップd3でj
=4のとき、対応するブロック化情報k。
mが、第3表を参照して存在しないことが判断される。
したがって、本件実施例のプログラム内容解析装置1は
、現在の第6ブロツクの分岐条件を、以前の直鎖ブロッ
クと同一分岐条件として設定する。すなわち現在の第6
ブロツク■の分岐条件は、以前の直鎖ブロックである第
3ブロツク■の分岐条件、すなわち上記第6式の条件と
して設定される。この後、処理は前記パラメータjを+
1インクリメントした後に、ステップd3に戻る。
(7)第7ブロツク■を通る条件 第7ブロツク■は、上記第2ブロツク■の分岐条件を考
察した段階で、第2ブロツク■と組合されてループ構造
を構成するブロックとして把握されている。したがって
第7ブロツク■の分岐条件は、上記第3ブロツクで挙げ
たループ処理の離脱条1↑の否定の形式の条件である上
記第5式の条件として示される。
(8)第8ブロツク■を通る条件 第8ブロツク■は、第3表および第4表に示す分岐ブロ
ック情報対(8,11)brで示される。
したがって第1表第8命令の分岐条件より、第8ブロツ
ク■を処理が通る条件は、第4ブロツク■を通る条件の
否定、すなわち、 POr(T17=1          ・・・(10
)となる。
(9)第9ブロツク■を通る条件 第9ブロツク■も、第3表および第4表から分岐ブロッ
ク情報(9,11)brによって規゛定されるブロック
であり、したがって前記第5ブロツク■を通る条件を考
察した際に検討した第1表第9命令の分岐条件(第8式
)の否定の条件と、第4ブロツク■を通る条件(第7式
)との論理積となる。すなわち、 PoRTlの 全ビット−〇 かつ PoRTlの第7ビツl−= O・(11)の条
件が得られる。
(10)第10ブロツク[株]を通る条件第10ブロツ
ク[相]は、第6ブロツク■と分岐命令を介在すること
なく線形に続くブロックであり、したがって第10ブロ
ツク[相]を処理が通る条件は、第6ブロツク■を通る
条件、すなわち第3ブロツク■を通る条件(上記第6式
)と同一になる。
(11)第11ブロツク■を通る条件 第1表のプラグラムリストから明かなように、第13命
令〜第21命令は、第1命令〜第12命令のメインルー
チンに対する割込み処理ルーチンである。その内容から
、上記第2表の欄外に付した入力/出力の定義において
、P ORT 2の第0ビツトに立ち上がりエツジまた
は立ち下がりエツジの信号が入力された状態を表わす割
込みベクトルの条件、 I RQ 2 = O・・・(12) が得られる。
(12)第12ブロツク[株]を通る条件上記第4ブロ
ツク■を通る条件が導出された処理と同様な処理を経て
、第18命令rBNEJでゼロフラグZ=1となる条件
が求められればよい。
すなわち第18命令からプログラムリストをさかのぼり
、当該分岐命令を支配するフラグであるゼロフラグZを
変化させる最近の命令を検出する。
これは第17命令でストア命令rsTAAJが検出され
、パラメータとしてアキュムレータAが検出される。ア
キュムレータAの入力命令として、第13命令でロード
命令rLDDJが検出される。
したがって第13命令〜第18命令の実行内容をオペラ
ンドで記述すれば、 (CAPTI (D) −ZCAPT(D)lの上位バ
イト二〇・・・(13) が得られる。
(13)第13命令■を通る条件 この場合、第1表のプログラムリストにおいて、第13
命令以降の処理の進行において、処理が第12ブロツク
@に進行しない条件、すなわち上記第13式の条件の否
定、 (CAPTI(D) −ZCAPT(D))の上位バイ
ト≠0・・(14) が求めるべき条件となる。
このようにして第5図ステップm3において摘出される
べき分岐条件は、各ブロック■〜■を処理が通る条件と
して導出された。これ以降、処理は第5図ステップm4
に移る。
ステップm4では、書込み命令単位の入出力結合処理が
行われる。ここに言う書込み命令とは、ストア命令と、
オペランドの直接操作命令(たとえばオペランドの数値
を+1増加させるインクリメント命令rINcJなと)
とを指す、このような命令の検出は、第1表のプログラ
ムリストにおいて、各命令を読取ることによって直ちに
実現できる。
このような入出力の結合処理は、第15図のフローチャ
ートに示される。第15図ステップel。
C2では、第1表で示されるプログラムに対して、前述
したブロック化処理と分岐条件の生成処理とを行う。こ
の後、ステップe3では、第1表に示されるプログラム
において、書込命令が検出される。このような書込み命
令としては、第2命令「INCJ、第6命令rsTAA
J 、第11命令「5TAAJ 、第16命令「STX
」、第17命令rsTAAJおよび第20命令rSTA
A、が、後述するように検出される。
(1)第2命令rTNc、について 第15図ステップe4では、当該命令に関するパラメー
タを検出する。上述した残余の書込命令、たとえば第6
命令rsTAAJでは、このようなパラメータとしてた
とえばアキュムレータAが検出されるが、第5命令のよ
うなメモリの直接操作命令では、本ステップを行うこと
なく、ステップe5で当該命令がその命令の所属するブ
ロックの先頭であるかどうかを判断する。否定であれば
、ステップe6に移って、命令列の配列方向と反対方向
に一命令を検出する。肯定であればステップe7で、当
該ブロックに至るブロック列の種類、すなわち当該ブロ
ックに至る処理の系統の種類を記憶する。
第2命令に関しては、第2命令を含む第2ブロツク■に
至るブロックは、上記ブロック化処理から得られた第1
2図t3よび第1311の処理の流れ図に示されるよう
に、第1ブロツク■および第7ブロツク■である。ステ
ップe8では、このような記憶したブロック列中から−
ブロック(たとえば第7ブロツク■)を選択し、処理は
ステップe6に移る。
ステップe6では、選択されたブロックにおいて、命令
列の配列方向と反対方向に一命令を検出し、現時点では
第4命令rBNEjを検出する。
これによりステップe9.all、e12の判断け、そ
れぞれすべて否定であり、したがって処理はステップe
5に戻る。このようにして上述した処理を繰り返し行い
、ステップe6で第2命令が読取られたとき、ステップ
allでループになったことが↑す断され、ステップe
13でループ要素が追加される。すなわち第2命令の実
行内容は、C0UNT−COUNT+−1・・・(15
)であるが、この処理がループ構造にしたがってn回実
行される場合を想定すると、 C0UNT=COUNT+n     =i16)とな
る、これが第2命令の実行内容の一般形である。
このときの実行条件は、上記第7ブロツク■を通る条件
、すなわち上記第5式の条件となる。したがって第2 
frI令に関しては、 if   TIME −(n + C0UNT)−# 
0then   C0UNT=COUNT+  n  
           −(17)となる。
(2)第6命令について ステップe3では、次の書込命令である第6命令を検出
し、ステップe4で第6命令に間するパラメータすなわ
ちアキュムレータAを検出する。
ステップe5の判断は否定となり、ステップe6で第5
命令rcLRAJを検出する。
ステップe9では、この第5命令が上記パラメータであ
るアキュレータAを変化させる命令であることが判断さ
れ、ステップeloで第5命令が記憶される。ステップ
allでは、当該第5命令がループ構造に含まれないこ
とが判断され、ステップe12では、第5命令がアキュ
ムレータAの入力命令であることが判断される。このr
&、ステップe14の判断で肯定となり、処理はステッ
プe15に移る。
したがって実行内容は、 C0UNT←0          ・・・(18)と
なり、実行条件は、処理が第3ブロツク■を通る条件、
すなわち上記第6式で示される条件と同一になり、これ
らを整理すれば、 if   TIME −(n + C0UNT) = 
0しhen   C0UNT←0          
            =i19)の結果が得られる
(3)第11命令について 第11命令については、第15図に示されるステップe
3で当該命令が検出された後、ステップe4でパラメー
タとしてアキュムレータAが検出される。ステップe5
では、上記第3表および第4表を参照して、第11命令
が第6ブロツクOの先頭であることが判断され、処理は
ステップe7に移る。この判断によって、第1表のプロ
グラムリストにおいて、第11命令に到達するには第5
ブロツク■、第9ブロツク■および第8ブロツク■をそ
れぞれ通る3つの経路が存在することが認識される。以
下、後述する実行内容の検出と実行条件の検出とを各経
路毎に行い、それらの結果が論理和として出力される。
(ア)第5ブロツク■を通る経路の場合ステップe4で
パラメータであるアキュムレータ八を検出し、プログラ
ムをさかのぼると、第10命令でアキュムレータAに関
するロード命令が検出される。ここで第11命令は、入
出力ボートへの書込み命令であり、論理演算として扱う
、したがって第10命令および第11命令による実行内
容は、第1表のプログラムリスト上の表現では、POR
TI←¥80        ・・・(20)と表現さ
れるが、論理演算の結果としては、上記第10式と同等
な PORT17←1          ・・・(10)
なる論理式が得られる。
このときの実行条件は、第5ブロツク■を処理が通る条
件(上記第9式)と、第2ブロツク■および第7ブロツ
ク■からなるループを処理が離脱する条件、すなわち処
理が第3ブロツク■を通る条件(上記第6式)との論理
積となる。したがって、 :F    TIME−<n + C0UNT)=’0
and    PORTIフー0 and    PORTI≠ ¥0O then   PORTIフ←1 なる論理式出力が得られる。
(イ)第8ブロツク■を通る場合 ・・・(21) ステップe6でプログラムをさがのぼると、第6命令で
ストア命令rsTAAJが検出される。
したがって求める実行内容は、前述の第6命令の場合と
同様にして、 FORTI←¥00が求められる。
また実行条件は、前述したループの離脱条件すなわち第
3ブロツク■を通る条件(第6式)と、第8ブロツク■
を処理が通る条件(第10式)との論理績である。した
がってこれらをまとめて、if   TIME  (n
+C0UNT)=Oand    PORT17= 1 tben  PORTI = ¥ 00       
 − <22>の論理式出力が得られる。
(つ)第9ブロツク■を通る渇き ステップe4で検出されるパラメータは、アキュムレー
タAであり、第9ブロツク■を通ってプログラムをさか
のぼると第6命令を検出する。したがってこの場合の実
行内容は、上記第22式と同一であり、実行条件はルー
プの離脱条件すなわち第3ブロツク■を通る条件(第6
式)と、第4ブロツク■を通る条件(第7式)と、第9
ブロツク■を通る条件(第11式)との論理積である。
したがってこれらをまとめて、 ’f   TIME −(n + C0UNT) = 
0and  PORT17= 0 and  (PORT17=Oand PORT1=¥
00)t b e n  P ORT 1−¥00  
       ・(23)の出力が得られる。
このようにして、第11命令に関する入出力条件の結合
処理が実現された。
(4)第16命令について 第1表のプログラムリストにおいて、行番号13〜21
は割込みルーチンであり、行番号1〜12のメイン処理
ルーチンとは独立の内容となっている。したがって第1
5図ステップe4で第16命令rsTXJが検出される
。第16命令に関して検出されるパラメータは、インデ
ックスレジスタXであり、ステップe6でプログラムを
さかのぼると第15命令でロード命令が検出される。し
たがって第16命令に閃する入出力結合結果は、if 
  IRQ2=1 then   ZCAP T←CAPTI      
=・(24)の論理式出力が得られる。
(5)第17命令rSTAA、について第16命令と同
様にステップe4で、パラメータとしてアキュムレータ
Aを検出する。ステップe6でプログラムをさかのぼる
と、第13命令でロード命令rLDDJが検出される。
したがって第17命令でオペランドrTIMEJにスト
アされるのは、オペランドrCApTIJおよびオペラ
ンドrZcAPTJの各上位バイト情報である。
また実行条件は第16命令と同一である。したがってこ
れらを整理して、 :r   IRQ2=1 then   TIME=(CAPTI(D)−ZC八
へT(D))(H)・・・(25) 注:第25式の右辺末尾の(H)は、右辺のオペランド
の上位バイトであることを示す。
(6)第20命令rSTAAJについて第20命令の場
合には、第5図ステップe4で、当該命令に関するパラ
メータすなわちアキュムレータAを検出する。このパラ
メータを決定する最新の命令をプログラムをさかのぼっ
てステップe6で検索すると、第19命令でアキュムレ
ータAに関する操作命令rDECA、が検出される。
したがって第20命令の実行内容は、 C0UNT−A−1・・・(26) となる。
ここで第19命令は、第18命令の分岐命令でゼロフラ
グZ=1の場きであることを考慮すると、上記第25式
において、 TMME=アキュムレータA=O・・・(27)の場合
に相当する。したがって上記第26式において、アキュ
ムレータA=Oであり、 C0UNT←¥F F         =−(28)
が結論される。
その実行条件は、第11ブロツク■および第12ブロツ
ク@を処理が通る条件、すなわち上記第12式および第
13式で示される各条件の論理積となる。したがってこ
れらをまとめれば、if   IRQ2 = 1 and    (CAr’T1  (D)   2CA
PT(D))(H)=  0しl+ e n   CO
U N T = ¥ FF             
      、−(29)が得られ、これで第1表のプ
ログラムリストに関して第5図ステップm4の書込み命
令単位の入出力結合処理が行われる。
続いて、第5図ステップm5で後述するようなパイルの
結合処理が行われる。ここに言うパイルとは、プログラ
ムリスト中におけるオペランドの直接操fヤ命令を含む
たとえば上記第29式のような書込み命令が実行される
ための実行条件と実行内容との結合表記を指す、その具
体的処理内容は第16[21のフローチャートに示され
る。
上述したように、第1表のプログラムリストには6個の
書込み命令があり、第3命令には第17式のパイルD7
、第6命令には第19式のパイルD6、第4命令には第
21式〜第23式のバイルD3.D2.Di、第15命
令には第24式のパイルD5.第17命令には第25式
のパイルD4、第20命令には第29式のD8がそれぞ
れ作成される。
以下、第16図を参照して、パイル結合処理について説
明する。ステップf1では、ボートへの書込み命令があ
る外部出力命令パイルDI、D2D3を検出する。
ステップで2では、たとえばパイルD1中の未決定パラ
メータを決定するパイルを検出する。すなわち、パイル
D1の実行条件に関して、パラメータrTIMEJ、r
cOUNTJが未決定である。また、残余の外部出力命
令パイルD2.D3についても、それぞれ実行内容は異
なるものの、未決定パラメータはパイルD1と同一のも
のが検出される。
以下、このようなパラメータを決定するパイルを検出す
る。パラメータr’1MME、についてはパイルD4が
検出され、続くステップr3では該パイルD4に含まれ
る全てのパラメータが決定されているかどうかを判断す
る。現時点では判断結果は否定であり、処理はステップ
f2に戻り、パラメータrcAPTIJ、rZcAPT
Jを決定するパイルを検出する。このとき第5パイルD
5が選ばれる。このときステップf3では、全パラメー
タが決定されたことが判断され、処理はステップf4に
移り、外部出力命令パイルが終了したかどうかを判断す
る。現時点では外部出力命令パイルD1のみを検討して
おり、判断結果は否定となり、処理はステップf1に戻
る。
これ以降、パイルD2.D3が外部出力命令パイルとし
て検出され、それぞれについて前述の場合と同様な処理
が行われる。パイルD1〜D3では、未決定のパラメー
タは共通であり、したがってステップf2では同一内容
の処理が行われる。
このようにしてパイルD3に対するパイル結合が終了し
た7表、ステップf4では判断結果が肯定となり、ステ
ップで5に移って第17図(1−1)〜(3−3>のパ
イル結き結果が出力される。このようにして第5図ステ
ップrn 5のパイルの結合処理が終了する。
このようにプログラム解析装置1によって被解析プログ
ラムの流れの11造を解析することができ、その解析結
果はエラー検出処理装置12へ転送される。
次に、エラー検出処理装置12におけるコンピュータプ
ログラムの検査方法について以下説明する。エラー検出
処理装置12は、プログラムの実行に際し、予め順次的
に実行が要求されている一対の命令語を定めておき、そ
の一対の命令語のうちの一方が検出されると、プログラ
ム解析装置1によって解析されたプログラムの流れの構
造に沿って、他の命令語が実行されるか否かを検査する
一対の命令語が実行されている場合はエラーとは判断せ
ず、一対の命令語のうちの片方だけが実行されている場
合は、エラーと判断する。このように、一対の命令語の
うちの一方の命令語と他方の命令語とがともに実行され
ていることを、生成されたプログラムの流れのすべての
場合に対して満足されていることをエラー検出処理装置
12は検査する。
予め定める一対の命令語として、たとえば割込み処理に
おけるレジスタ退避命令とレジスタa dF&命令との
処理について以下説明する。
−mに、プログラム上またはハードウェア上の割込みが
発生すると、プログラムの処理は一時的に池の処理へ移
される。具体的には、割込み原因が発生すると割込み原
因の発生したときのプログラムカウンタ、特定のフラグ
などが自動的に記憶領域にストアされ、ベクタアドレス
テーブルに記載されている割込み原因によって定める番
地へ処理が移行する。そして、その特定の番地から割込
み処理が実行される。しかし、割込み原因が発生しても
、すべてのフラグ、レジスタなどが退避されるとは限ら
ず、割込み処理内において自動退避されないフラグ、レ
ジスタなどを一時的に退避させるための退避命令を別個
実行する必要がある6すなわち、割込み原因が発生する
直前において使用していたフラグまたはレジスタの内容
を割込み処理において破壊されるのを防止するために、
割込み処理においてそれらを退避させる命令を実行しな
ければならない、そして、割込み処理が終了し、割込み
発生前の状態に戻る際には退避させたフラグ、レジスタ
などを復帰させなければならない。
第18図は、割込み原因が発生し、割込み処理内におい
てレジスタ退避命令とレジスタ復帰命令とが一対の処理
として実行されているか否かを判断するフローチャート
である。まずステップg1では、割込み原因が発生した
ことにより、割込み処理の実行される先頭番地がベクタ
アドレステーブルから検出され、アドレスカウンタに設
定される。ベクタアドレステーブルは割込み原因の種類
に応じて割込み処理が実行される先頭番地が記憶されて
いるテーブルである。割込み処理の実行される先頭番地
がアドレスカウンタに設定されると、エラー検出処理装
置12は前記先頭番地から順次命令を抽出し、命令語を
解析していく。すなわち、ステップg2では、まず割込
み+313’%命令を抽出したか否かが判断され、割込
み復帰命令でない場合は、ステップg3へ進みレジスタ
退避命令が抽出されたか否かが判断される。
レジスタ退避命令を抽出した場きは、ステップg4にお
いてレジスタ退避命令を抽出したことを示すフラグFに
1がセットされる。そして、ステップg5へ進み、レジ
スタ復帰命令が抽出されたか否かが順次判断される。レ
ジスタ腹ツ、1Ifi7令が抽出されると、ステップg
6へ進み、フラグFの設定状態が判断される。フラグF
が1に設定されているf:、 、#は、既にレジスタ退
避命令を抽出していることを示しているので、この場合
は予め定める一対の命令が抽出されたことになり、ステ
ップg7においてフラグFが0に設定され、エラーとは
判断されない。しかし、フラグFが0である場合は、レ
ジスタ退避命令を抽出せずにレジスタ復帰命令を抽出し
たことになるので、予め定める一対の命令語のうち一方
のみ抽出したことになり、エラーと判断し、ステップg
8へ進みエラー処理が行われる6 ステップg9では、抽出された命令がレジスタ操fヤ命
令か否かが判断され、レジスタ操作命令なら、ステップ
gloにおいてフラグFの設定状態が判断される。フラ
グFが1に設定されている場合は、レジスタ退避命令が
抽出された後いまだレジスタ復帰命令が抽出されていな
い状態であるからエラーとは判断しない、しかし、フラ
グFが0に設定されている場合は、レジスタ退避命令が
今だ抽出されていない、あるいはレジスタ復帰命令をス
テップg7において抽出したという状部を示しており、
このようなプログラムの流れの構造では、割込み処理内
においてレジスタの内容が破壊されることになるので、
エラーと判断し、ステップg8へ進む。
割込み処理内における各命令語に対し、ステップ82〜
ステツプgloの処理が行われ、その命令語によってエ
ラーが検出されない場合は、ステップgllへ進み、次
の命令語の番地がアドレスカウンタに設定される。そし
て、ステップg2へ進み上述と同様な処理が実行される
。このようにして、割込み処理が終了し、割込み復帰命
令を抽出すると、対象となっていた割込み処理の検査が
終了する。
次に、一対の命令語が実行される必要のある場合として
、割込み禁止命令と割込み許可命令とが一対の処理とし
てプログラムされているが否かについて説明する。ある
特定の処理を行うに際し、割込みを禁止しておくことが
必要となる場合がある。このような場合には、割込み禁
止命令がまず実行され、そのj&特定の処理が行われた
後、その後の処理において割込みを受付けるための割込
み許可命令が実行されることになる。しかし、割込み禁
止命令が実行された後、割込み許可命令が実行されない
と、以後割込みが受付られないことになり、割込み処理
を基準とする処理が実行されないことになる。そこで、
エラー検出処理装置12は、プログラム中に割込み禁止
命令を抽出すると、その1麦別込み許可命令の存在する
ことをプログラムの流れのill造に沿って検査する。
第19図は、割込み禁止命令と割込み許可命令とが一対
にプログラムされていることを検査するためのフローチ
ャートである。まず、ステ・ノブ?+1では、割込み処
理が行われるプログラムの先頭番地がベクタアドレスに
より検出され、アドレスカウンタに設定される。ステッ
プh2は、割込み処理内における割込み禁止命令を抽出
する。その後側込み禁止命令が抽出されると、ステップ
h2からステップh3へ進み、割込み禁止命令が抽出さ
れた後に割込み許可命令を抽出するための処理がステッ
プh3.h4において行われる。ステップh3において
割込み許可命令が抽出されると、割込み禁止命令と割込
み許可命令とが一対に抽出されたことになるので、エラ
ーとは判断せず、プログラムの検査が終了する。
ステップh 3において割込み許可舎令が抽出されず、
かつステップh4において割込み禁止命令が抽出された
後128ステツプの命令語が検査されたにも拘わらず割
込み許可命令を抽出できない場合は、エラーと判断し、
ステップh5へ進む。
ステップh4において、割込み禁止命令語の抽出後12
8ステップ内に割込み許可命令を抽出できない場合をエ
ラーとしたのは、一般に割込みを禁止して行う処理のス
テップ数は少なく、128ステップ以上になることはな
いので、エラー検査処理を時間的に制限するためである
。ステップh5においては、検査対象である割込み処理
においてエラーが発生していることが予め定める記憶領
域にストアされる。
以上のように本実施例に従えば、プログラム解析装置1
によって被解析プログラムの流れの構造が検出され、そ
の流れの構造に沿ってエラー検出処理装置12は予め定
める一対の命令が存在するか否かを検査し、予め定める
一対の命令語のうち一方のみが存在するときにエラーと
判断し、その結果をプログラム解析装置1に転送する。
したがって、プログラマは、たとえば表示装置5に表示
されるエラー内容を参照し、プログラムのデバッグを比
較的容易にかつ短時間に行うことができる。
なお、以上の実施例においては、エラー検出処理装置1
2はプログラム解析装置1とは別の装置において処理さ
れるが、エラー検出処理装置12における検査プログラ
ムを処理装置8におけるプログラムと一体化した構成と
することもできる。
発明の効果 以上のように本発明に従えば、予め定める一対の命令語
がプログラム中に存在するか否かを自動的に検査するこ
とができ、プログラマの思い違いによる検査漏れを未然
に防止することができる。
【図面の簡単な説明】
第1図は本発明の一実施例であるコンピュータプログラ
ムの検査方法が実施されるプログラム検査装置11の構
成を示すブロック図、第2図は解析装置1の記憶領域1
0の構成を示すブロック図、第3図はプログラム内容解
析装置1の基本的動作を示すフローチャート、第4図は
表示装置5の表示例を示す図、第5図は解析装置1のプ
ログラム内容解析処理手順を示すフローチャート、第6
図および第7図は被解析プログラム例の動作内容を示す
フローチャート、第8図は流れの構造の解析処理手順を
示すフローチャート、第9図は流れの横道の解析処理結
果な示す系統図、第10図はブロック化処理手順を示す
フローチャート、第11図はブロック化処理の中間結果
を示す系統図、第12図および第13図はブロック化処
理結果を示す系統図、第14図は分岐条件摘出処理手順
を示すフローチャート、第15図は入出力結合処理手順
を示すフローチャート、第16図はパイル結合処理手順
を示すフローチャート、第17図はパイル結き処理結果
を示す系統図、第18図は割込み原因が発生し、割込み
処理内においてレジスタ退避命令とレジスタ復帰命令と
は一対の処理として実行されているか否かを判断するフ
ローチャート、第19図は割込み禁止命令と割込み許可
命令とが一対に処理されることを検査するためのフロー
チャートである。 1・・・プログラム解析装置、12・・・エラー検出処
理装置 代理人  弁理士 西教 圭一部 第 図 第 図 第 図 箪 図 第 図 メインルーチンへ 第 図 13−−−−’PI込 第10図 第11図 第12図 第13図 第16図 N17図 第19図

Claims (1)

  1. 【特許請求の範囲】 予め定めるプログラム領域を時間順次的に実行される複
    数の命令のうち予め定める対をなす命令語と、その対に
    対応する命令語群を定め、 前記対をなす命令語の一方の命令語の実行後に前記他方
    の命令語が実行されることなしに、再度前記一方の命令
    語の実行が行われたとき、対をなす命令語の一方の命令
    の実行後に前記他方の命令語が実行されないとき、また
    は対によつて区切られた領域外に、その対に対応する命
    令語が存在するときに誤りと判定することを特徴とする
    コンピュータプログラムの検査方法。
JP63282998A 1988-11-08 1988-11-08 コンピユータプログラムの検査方法 Pending JPH02128240A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63282998A JPH02128240A (ja) 1988-11-08 1988-11-08 コンピユータプログラムの検査方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63282998A JPH02128240A (ja) 1988-11-08 1988-11-08 コンピユータプログラムの検査方法

Publications (1)

Publication Number Publication Date
JPH02128240A true JPH02128240A (ja) 1990-05-16

Family

ID=17659890

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63282998A Pending JPH02128240A (ja) 1988-11-08 1988-11-08 コンピユータプログラムの検査方法

Country Status (1)

Country Link
JP (1) JPH02128240A (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61199126A (ja) * 1985-03-01 1986-09-03 Hitachi Ltd マイクロプログラムチエツク方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61199126A (ja) * 1985-03-01 1986-09-03 Hitachi Ltd マイクロプログラムチエツク方式

Similar Documents

Publication Publication Date Title
US6286132B1 (en) Debugging support apparatus, a parallel execution information generation device, a computer-readable recording medium storing a debugging support program, and a computer-readable recording medium storing a parallel execution information generation program
US6889318B1 (en) Instruction fusion for digital signal processor
Helgstrand et al. Ansig for Windows: an interactive computer program for semiautomatic assignment of protein NMR spectra
JP3195839B2 (ja) 発電所の施設の運転を監視する方法
FR2690539A1 (fr) Microprocesseur à mode extérieur de diagnostic et de déverminage.
JPS63115245A (ja) ソフトウエアモニタにおけるブレ−クポイントを供給し且つ取り扱うための方法及び装置
Shankar PVS: Combining specification, proof checking, and model checking
JPH02287704A (ja) はしご形諭理機械語プログラムの逆コンパイル方法
JPH07230484A (ja) 有限状態マシン遷移アナライザ
US7324912B2 (en) Method, system and programming language for device diagnostics and validation
JPH02128240A (ja) コンピユータプログラムの検査方法
WO2002044895A1 (en) Branch handling for single instruction multiple datapath processor architectures
JPS63317853A (ja) プログラム内容解析装置
JPS63317844A (ja) プログラム内容解析装置
JP2548197B2 (ja) プログラム内容解析装置
JP2004192139A (ja) デバッグ装置、デバッグ方法および記録媒体
JPH01297738A (ja) コンピュータの試験装置
Xiang et al. ChiselFV: A Formal Verification Framework for Chisel
Raymond et al. The Grail papers: version 2.3
JP3594106B2 (ja) 自動プログラミング装置、自動プログラミング方法および記録媒体
JP2653880B2 (ja) プログラム内容解析装置
JPH0820971B2 (ja) プログラム内容解析装置
JPS63317851A (ja) プログラム内容解析装置
JPH08123840A (ja) システム検証装置及びシステム検証方法
JPH0820968B2 (ja) プログラム内容解析装置