JPH0267641A - コンピユータプログラムのエラー検出方法 - Google Patents

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

Info

Publication number
JPH0267641A
JPH0267641A JP63219903A JP21990388A JPH0267641A JP H0267641 A JPH0267641 A JP H0267641A JP 63219903 A JP63219903 A JP 63219903A JP 21990388 A JP21990388 A JP 21990388A JP H0267641 A JPH0267641 A JP H0267641A
Authority
JP
Japan
Prior art keywords
program
error
register
flag
line
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
JP63219903A
Other languages
English (en)
Inventor
Hiromi Uchimaru
内丸 ひろみ
Minoru Takahashi
稔 高橋
Hirotoshi Tonou
宏敏 斗納
Hisanori Yasuki
安木 寿教
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 JP63219903A priority Critical patent/JPH0267641A/ja
Publication of JPH0267641A publication Critical patent/JPH0267641A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

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

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、コンピュータプログラムの作成時に発生する
エラーを検出するためのコンピュータプログラムのエラ
ー検出方法に関する。
従来の技術 マイクロコンピュータなどのコンピュータに目的とする
処理を行わせるためには、そのコンピュータに予め用意
されている命令を組合わせなプログラムを作成すること
が必要である。このような最初に作成されるプログラム
はソースプログラムと呼ばれている。
ソースプログラムはプログラム作成者にとって見易いよ
うに作成されるので、それ自身ではコンピュータを動作
させることはできない。そこで、コンピュータが実行で
きる0と1の数字で表わしたいわゆる機械語に変換する
ことが必要となる。
たとえば、マイクロコンピュータにおいては、機械語と
1対1の対応関係にあるアセンブリ言語によってプログ
ラムが作成されることが多く、このアセンブリ言語を機
械語に変換する操作をアセンブラといい、パーソナルコ
ンピュータシステムやプログラム開発専用コンピュータ
システムにより実行される。
アセンブリ言語は一般にマイクロコンピュータの有する
属性を効果的に引出すためそのマイクロコンピュータ特
有のアセンブリ言語を有しており、その記述形式には一
定の規則がある。したがって、その一定の規則に違反す
る記述によってプログラムが1P成されている場きは、
アセンブラによってその違反がアセンブルエラーとして
抽出されシステム出力装置から出力される。したがって
、プログラマはアセンブル操作によって抽出されたアセ
ンブルエラーの原因を追及し、そのアセンブルエラーが
発生しないようにソースプログラムを修正し再度アセン
ブラを実行する必要がある。
発明が解決すべき課題 上述したように、アセンプルラによって抽出されるプロ
グラムエラーはたとえばアセンブリ言語の表現上のエラ
ーであり、プログラマが目的とする趣旨と異なった処理
を行うプログラム上のエラー(以下「バグ」という。)
を抽出することはできない。したがって、アセンブラに
よってアセンブルエラーが抽出されないバグは、そのア
センブラによって得られた機械語を、たとえばROM 
(リード・オンリ・メモリ)などに書込んだ隈実際にプ
ログラムを実行させ目的の処理を行っているか否かを検
証することにより収り除く必要がある。
この場き、プログラマはソース・プログラムの記載され
たソース・リストを参照しながらプログラムのバグの発
見に多大の時間を費やすことになる。
特に、同じ命令コードであっても、オペランドと呼ばれ
ている領域の書き方が異なった表現においてもアセンブ
リ言語の表現1認められる場合、プログラマのミスによ
り異なった命令を指示する場きがある。たとえば、ある
記号をある数字に定義する場合、記載形式にエラーがな
い限り自由に定義することができる。たとえば第1表に
示すように、10進数を用いてフラグのビット位置を指
定することができる。
第1表 第1表では、ライン1においてRMBという命令コード
はレジスタとしてのメモリ領域を1バイト確保する命令
で、以下ライン2〜ライン9において、YAO〜YA7
というシンボルはフラグのビット位置が0ビツト目〜7
ビツト目を指定することを意味する。0ビツト目とは、
レジスタの最下位ビットを意味し、7ビツト目とは最上
位ビットを意味する。
フラグのビット位置を定義する池の方法として、第2表
のように2進数を用いて定義する方法がある。
第2表 この第2表において、ライン1はZ RE Gというシ
ンボルのレジスタをメモリ領域に1バイト確保する命令
であり、以下ライン2〜ライン9において、ZAO〜Z
A7というシンボルに対し2進数00000001〜1
0000000で表わされる位置にビットが指定される
以上のようなフラグビットの定義方法が2種類ある場き
、たとえば第1表に示す命令によってフラグビットが定
義され、第4図に示す命令が記述された場合プログラム
バグが生じる可能性がある。
すなわち、第4図の第1行目の命令はアキュムレータに
レジスタYREGの内容を転送する命令であり、第2行
目はアキュムレータとラベルYA2で定義される位置に
ビットのたてられた数値との論理和が行われる命令であ
る。ラベルYA2は具体的に2進表記すると00000
010を有しており、もし、アキュムレータに転送され
ているレジスタYREGの内容と00000100との
論理和を取ることを意図している場合にはプログラムバ
グが発生することになる。
またフラグのビット位置の定義を第2表に示す命令によ
って行った渇きに、第511Fに示す命令をプログラム
する場合にもプログラムバグが発生するおそれがある。
すなわち、第5図の命令はレジスタZ RE Gのラベ
ルZA2で定義されるビット位置に1がセットされてい
る場きはアドレスBUNKIに分岐する命令である。し
たがって、もしプログラマがレジスタZREGの最下位
ビットから2番目のビットを判定することを意図してい
る場きには、プログラムバグが発生する。
さらに、第6図に示すようにレジスタZ RE Gとラ
ベルYAIとが同じ命令の中に使用されている場合、ア
センブルエラーとはならないがフラグビットがレジスタ
配下にない為、プログラムバグ発生の要因となる。
このように、プログラマ、の表現上にはエラーが発生し
ていないが、実際にプログラムを実行させると当初の目
的の処理を実行しないプログラムを作成するおそれがあ
る。
そこで本発明の目的は誤った方法によりビットの操作を
するおそれをなくし、プログラムのバグを未然に防止す
るとともにプログラム作成効率の向上を図るコンピュー
タプログラムのエラー検出方法を提供することにある。
課題を解決するための手段 本発明は、マイクロコンピュータを動作させるためのプ
ログラムに含まれるフラグとレジスタとの間に認められ
る使用関係を予めメモリに記憶させておき、 プログラマ、中に使用されているフラグとレジスタとが
前記使用関係を満たしていない場きにプロゲラノーのエ
ラーと判定することを特徴とするコンピュータプログラ
ムのエラー検出方法である。
作  用 本発明においては、まずプログラムに使用されるフラグ
とレジスタとの間に予め使用の認められる関係をメモリ
に記憶させておく。そして、プログラムに使用されてい
るフラグとレジスタとがメモリに記憶されている使用関
係を満たしていない場合はプログラムエラーと判定する
実施例 第1図は本発明が実施される一方法を説明するための処
理フローチャートである。プログラマはキーボード1を
用いてソースプログラムをコンピュータ2に入力する。
エディタ3はキーボード1から入力されるプログラムの
編集、修正などを行いデイスプレィ4に表示し、ディス
ク−5に格納する。そして、ディスク5に格納されてい
るソースプログラムはアセンブラ6によって機械語に変
換され、ディスク7に格納される。アセンブラ6によっ
て機械語へ変換する操作中にエラーを発見した場合は、
アセンブルリストとともにエラーメツセージがデイスプ
レィ14に表示される。
アセンブラ6によるアセンブラにおいてソースプログラ
ム中にエラーが発見されない場合は、エラー検出プログ
ラム9によってレジスタとフラグとの使用関係がチエツ
クされ、予め定める使用関係を満たしていない場合は、
そのエラー内容がプリンタ10にエラーメツセージとし
て出力される。
プリンタ10にエラーメツセージが出力されると、プロ
グラマはキーボード1によってソースプログラムを修正
し再度上述の操作を行い、エラー検出プログラム9によ
るエラーメツセージが出力されなくなるまでソースプロ
グラムの修正を行う。
そして、アセンブラ6によるエラーメツセージおよびエ
ラー検出プログラム9によるエラーメツセージが出力さ
れなくなると、プログラムを実際にコンピュータ上で実
行するためにディスク7に格納されている機械語をRO
Mライタ制御プログラム11の操f+:を介してROM
ライタ12にセットされているたとえばEPROM (
紫外線消去形ROM)に書込む。ROMライタ12によ
って機械語の書込まれたEPROMはたとえば基板にセ
ットされ実行される。
第2図はエラー検出プログラム9の操作を説明するため
のフローチャートである。ディスク7に格納されている
ソースプログラムは1行読取りステップ91によってソ
ースプログラムの1行が読取られる。そして、読取られ
たソースプログラマ、がコメント行、コマンド行または
END行のいずれであるかをコマンド判定ステップ92
において判定される。そして、コメント行である場きは
1行読取りステップ91によって次のソースプログラム
の1行が読取られる。またコマンド行である場合はその
命令の内容がコマンド内容判定ステップ93によって判
定される。さらにEND行である場合は一連のソースプ
ログラムの最終行であるのでエラー検出処理は終了する
コマンド内容判定ステップ93では、判定している命令
がレジスタまたはフラグのビット位置を定義する命令で
あるか否かが判断され、レジスタまたはフラグのビット
位置を定義する命令でない場合は1行読取りステップ9
1へ戻る。そして、レジスタまたはフラグのビット位置
を定義する命令である場合はレジスタファイル作成ステ
ップ94においてレジスタの名称、ラベルの名称とフラ
グの位置関係が抽出され、その関係はディスク13に格
納される。レジスタファイル作成ステップ94の処理が
終了すると再び1行読取りステップ91を実行し次行の
プログラムを読取る。
通常レジスタの定義およびフラグの定義はソースプログ
ラムの先頭部分で定義されているので、ステップ91〜
ステツプ94がまず実行されレジスタファイルがディス
ク13に格納される。
レジスタファイルの作成が終了すると、コマンド内容判
定ステップ93において、レジスタの操作の行われてい
る命令が抽出され、レジスタ・フラグ判定ステップ95
においてレジスタとフラグとの使用関係がディスク13
に格納されているレジスタファイルと予め規定されてい
るレジスタの定義方法との関係からレジスタとフラグと
の使用関係がコ2められる使用関係であるか否かが判断
される。
レジスタの定義としてたとえば次のように定義をするこ
とができる。
(1)定義形式  ’*//Jで始まる行でレジスタ名
、アドレスを定義し、続く行でそのレジスタ配下のフラ
グビットを定義する。r * / / Jで始まる行か
ら次のr*//」で始まる行まで、もしくは20行以内
のフラグビットを配下とする。
(2)定義領域  レジスタ定義はアセンブルリストの
始め部分で行う。r * / / RE N D Jま
で、もしくは、最後の’に//Jで始まる行を検出して
から88行以内を定義領域とし以降レジスタ定義の検出
は不要とする。
(3)フラグビット  オペコードrEQU。
でビット位置を定義する。
(4)定義エラー  r E Q U Jで定義する値
が 08以上のとき ■未定義のフラグビット名が使用されているとき ■演算式で定義されているとき フラグビット定義エラーと判定し、プリンタにエラーメ
ツセージを出力する。エラーメツセージとして、 ***フラグビット定義エラー 行NO,=(行No、
)***(5)レジスタファイル  レジスタ名からア
ドレス、配下のフラグビット名、ビット位置を求めるフ
ァイルを作成する。
・ファイル形式は特に規定しない。
・後述のフラグRAMもレジスタファイルに登録する。
・レジスタ数は最大100個とする。
以上のようにレジスタを定義し、この定義に違反するレ
ジスタの使用が1行われるとエラーと判定する。
レジスタ・フラグ判定ステップ95においてエラーが検
出されない場合は1行読取りステップ91へ戻り次の行
のレジスタ・フラグ判定を行う。
しかし、エラーが検出されると、エラー情報出カステッ
プ96に進みプリンタ10にそのエラー内容が出力され
る0以上の操作が順次行われ、END行がコマンド判定
ステップ92で判定されると一連のエラー検出プログラ
ムは終了する。
第3図はエラー検出プログラム9の処理をさらに詳しく
説明するためのフローチャートである。
ステップs1では、ディスク7に格納されているアセン
ブラリストが読取られ、ステップs2へ進む、ステップ
S2では、レジスタを定義する部分が読取られる。そし
て、ステップS3からステップS5にかけてレジスタの
定義形式、レジスタの定義領域およびフラグビットの定
義方法が予め定める規則に従っているか否かが判断され
る。そして、規則に従っていないと判断されると、ステ
ップs6に進みエラー情報としてそのエラーの内容が記
憶される。レジスタの定義形式等が規則に合致している
渇きは、ステップs7へ進みレジスタの定義およびフラ
グビットの定義以外の部分のプログラムを読取り、その
プログラム中に使用されているビット操1F命令の検索
がステップS9において行われる。そしてその使用関係
が予め定める使用関係に合致している場合はステップs
loからステップs7/\進み、さらに次のプログラム
が読み取られる。ステップsloにおいて予め定める使
用関係に合致していない場合にはステップS11へ進み
そのエラー内容がエラー情報として記憶される。以上の
処理を繰返し実行することにより最終行としてのEND
行を検出するとステップs8からステップs 12/\
進み既に記憶されているエラー情報がプリンタ10に出
力される。
発明の効果 本発明に従えば、レジスタとフラグとの使用関係を予め
設定しておけるので、その使用関係に合致しないプロゲ
ラlえを検出するとプログラムエラーとして顕在化でき
るので、プログラム上のバクをより早く検出することが
できるとともにプログラム作成の効率が向上する。また
、レジスタとフラグとの関係をプログラムに対応して限
定することができるので、プログラムの表現形式上のエ
ラーにとどまらずプログラムの実施内容に対するエラー
をも検出することができる。
【図面の簡単な説明】
第1図は本発明が実施される一ブj法を説明するための
処理フローチャート、第2図はエラー検出プログラム9
の操ftを説明するためのフローチャート、第3図はエ
ラー検出プログラム9の処理をさらに詳しく説明するた
めのフローチャート、第4図〜第6図はソースプログラ
ムで用いられるプログラムの一例である。 1・・・キーボード、2・・・コンピュータ、3・・・
エディタ、4・・・デイスプレィ、5.7.13・・・
ディスク、6・・アセンブラ、8,10・・・プリンタ
、9・・・エラー検出プログラム、11・・・ROMラ
イタ制御プログラム、12・・r(OMライタ、14・
・・デイスプレィ ff11riA 代理人  弁理士 画数 圭一部 第 図 第 し LD  A   YREG ORA、  ttYA2 第 図 BBS ZREG   ZA2   BUNKI第 図 BBS ZREG AI BLJNにIt

Claims (1)

    【特許請求の範囲】
  1. マイクロコンピュータを動作させるためのプログラムに
    含まれるフラグとレジスタとの間に認められる使用関係
    を予めメモリに記憶させておき、プログラム中に使用さ
    れているフラグとレジスタとが前記使用関係を満たして
    いない場合にプログラムのエラーと判定することを特徴
    とするコンピュータプログラムのエラー検出方法。
JP63219903A 1988-09-01 1988-09-01 コンピユータプログラムのエラー検出方法 Pending JPH0267641A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63219903A JPH0267641A (ja) 1988-09-01 1988-09-01 コンピユータプログラムのエラー検出方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63219903A JPH0267641A (ja) 1988-09-01 1988-09-01 コンピユータプログラムのエラー検出方法

Publications (1)

Publication Number Publication Date
JPH0267641A true JPH0267641A (ja) 1990-03-07

Family

ID=16742838

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63219903A Pending JPH0267641A (ja) 1988-09-01 1988-09-01 コンピユータプログラムのエラー検出方法

Country Status (1)

Country Link
JP (1) JPH0267641A (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58203555A (ja) * 1982-05-21 1983-11-28 Mitsubishi Electric Corp 配列型デ−タの添字チエツク方法
JPS59214907A (ja) * 1983-05-21 1984-12-04 Fuji Electric Co Ltd プログラマブル・コントロ−ラ
JPS629412A (ja) * 1985-07-08 1987-01-17 Fanuc Ltd シ−ケンスプログラムのチエツク方法
JPS6345637A (ja) * 1986-08-13 1988-02-26 Nec Corp レジスタ割当て誤り検出方式

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58203555A (ja) * 1982-05-21 1983-11-28 Mitsubishi Electric Corp 配列型デ−タの添字チエツク方法
JPS59214907A (ja) * 1983-05-21 1984-12-04 Fuji Electric Co Ltd プログラマブル・コントロ−ラ
JPS629412A (ja) * 1985-07-08 1987-01-17 Fanuc Ltd シ−ケンスプログラムのチエツク方法
JPS6345637A (ja) * 1986-08-13 1988-02-26 Nec Corp レジスタ割当て誤り検出方式

Similar Documents

Publication Publication Date Title
JPS6375835A (ja) 目的コ−ド、プログラム・リスト及び設計文書を生成する装置
US7237226B2 (en) Method and system for storing pending changes to data
CN116661808A (zh) 二进制翻译方法、装置、电子设备及存储介质
JP4806158B2 (ja) マークアップ内でサブクラスを宣言的に定義し、使用するためのシステムおよび方法
CN107612919B (zh) 协议配置方法及装置
US20070277165A1 (en) Debugging Interpreted Input
KR20250080722A (ko) 취약점 분석 방법, 이를 수행하기 위한 기록 매체 및 장치
JPH0267641A (ja) コンピユータプログラムのエラー検出方法
CN113626390B (zh) 一种bb文件的生成方法、装置、电子设备及存储介质
CN119105799A (zh) 代码分析方法、电子设备、计算机可读介质
CN121722426B (zh) 基于语义更新片段生成的代码修改方法、装置
JPH10312313A (ja) C言語の計算機プログラム検査処理方法およびプログラム記憶媒体
JPS58144913A (ja) プログラマブル・コントロ−ラにおけるユ−ザプログラムの回路図化出力装置
JP2001325096A (ja) エラー情報表示方法および装置
JP7163879B2 (ja) データフロー生成装置、その方法、およびそのプログラム
JPH04362738A (ja) 変数管理方法
JPH04248624A (ja) プログラム変換処理装置
US7155709B2 (en) Displaying user readable information during linking
JP2559924B2 (ja) プログラマブルコントローラ
CN120669961A (zh) 规则生成方法及计算设备
JP2005141406A (ja) コンパイラ検査システムおよび同プログラム
JP2728504B2 (ja) 入力命令文検査装置
JPH0612542B2 (ja) 構造化ドキユメントのマーク箇所のコピー方法
JPH10307735A (ja) C++言語の計算機プログラム検査処理方法およびプログラム記憶媒体
CN116384346A (zh) 基于html格式的文字替换方法、装置、终端和介质