JPS60103460A - 関数型言語における実行過程追跡方法 - Google Patents
関数型言語における実行過程追跡方法Info
- Publication number
- JPS60103460A JPS60103460A JP58210507A JP21050783A JPS60103460A JP S60103460 A JPS60103460 A JP S60103460A JP 58210507 A JP58210507 A JP 58210507A JP 21050783 A JP21050783 A JP 21050783A JP S60103460 A JPS60103460 A JP S60103460A
- Authority
- JP
- Japan
- Prior art keywords
- interruption
- evaluation
- flag
- program
- equation
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
発明の技術分野
本発明は、関数型言語特にL i S P言語における
マクロ定義関数の実行時の動的特性の追跡、エラー発生
時のデバッグ方法に関する。
マクロ定義関数の実行時の動的特性の追跡、エラー発生
時のデバッグ方法に関する。
従来技術と問題点
関数型言語特にLtSPにおいては、マクロと呼ばれる
関数定義方式がある。マク1:I関数は、その関数に作
用させるべき式が与えられるとその式を評価しくLi5
Pでは計算することを評価するという)、その結果の式
を改めて評価する。つまり評価は2回しかも連続して行
なわれる。そこでマクロ関数を実行して結果がエラーと
なっても、エラーは1回目の評価で生じたのか2回目の
評価で生じたのかプログラマには分らないことが多い。
関数定義方式がある。マク1:I関数は、その関数に作
用させるべき式が与えられるとその式を評価しくLi5
Pでは計算することを評価するという)、その結果の式
を改めて評価する。つまり評価は2回しかも連続して行
なわれる。そこでマクロ関数を実行して結果がエラーと
なっても、エラーは1回目の評価で生じたのか2回目の
評価で生じたのかプログラマには分らないことが多い。
これは1回目の評価結果が2回目の評価の正当な対象と
なっているかどうかを判定することが、マクロ関数とそ
の引数だけからは予想が困難であることに起因している
。そこで、特にデバッグ時には、1回目の評価結果従っ
て2回目に評価しようとする式を検査することが必要と
されている。
なっているかどうかを判定することが、マクロ関数とそ
の引数だけからは予想が困難であることに起因している
。そこで、特にデバッグ時には、1回目の評価結果従っ
て2回目に評価しようとする式を検査することが必要と
されている。
1回目の評価結果を検査するにはそれを端末に表示又は
プリントアウト う)させるとよいが、1回目の評価結果の表示はLiS
Pでm・かれたユーザ定義関数では簡単であるが、組込
み関数のようなコンパイルしてあったりマイクロプログ
ラムで書い−であったりされているプログラムまで、展
開された結果(1回評価した結果)を表示させるのは、
ユーザーには触れられない領域のことであり、困難であ
る。
プリントアウト う)させるとよいが、1回目の評価結果の表示はLiS
Pでm・かれたユーザ定義関数では簡単であるが、組込
み関数のようなコンパイルしてあったりマイクロプログ
ラムで書い−であったりされているプログラムまで、展
開された結果(1回評価した結果)を表示させるのは、
ユーザーには触れられない領域のことであり、困難であ
る。
発明の目的
本発明は、1回目の1i′l′価が終り、2回目の評価
に移る直前にマイクロプロゲラムレヘルの割込みを発生
さ一U、割込み処理ルーチンで、2回目に評価しようと
する式を端末に表示させ、デバッグを容易にしようとす
るものである。
に移る直前にマイクロプロゲラムレヘルの割込みを発生
さ一U、割込み処理ルーチンで、2回目に評価しようと
する式を端末に表示させ、デバッグを容易にしようとす
るものである。
発明の構成
本発明は一7クロ定義関数に作用させるべき式が与えら
れるとその式を評価し、その結果の式を改めて評価する
関数型言語に才Njる該−7クロ定義関数の実行過程追
跡、デパソグカ法におい−(、1回目の評(illiを
するマイクロルーチンの後に、マイクロレベルの割込み
受伺りを指示するビットフィールドを持つマイクロ命令
を置き、またマク1:J定義関数の実行に際して予め割
込の原因レジスタに、外部へ表示させる処理を実行さ一
已るフラグを立てるようにし、プログラム実行が前記”
フイクiコ命令まで進んだときIliJ目の評価結果に
対しtiii記フラグにより定まる処理を行なわせるこ
とを特徴とするものである。
れるとその式を評価し、その結果の式を改めて評価する
関数型言語に才Njる該−7クロ定義関数の実行過程追
跡、デパソグカ法におい−(、1回目の評(illiを
するマイクロルーチンの後に、マイクロレベルの割込み
受伺りを指示するビットフィールドを持つマイクロ命令
を置き、またマク1:J定義関数の実行に際して予め割
込の原因レジスタに、外部へ表示させる処理を実行さ一
已るフラグを立てるようにし、プログラム実行が前記”
フイクiコ命令まで進んだときIliJ目の評価結果に
対しtiii記フラグにより定まる処理を行なわせるこ
とを特徴とするものである。
発明の実施例
本方式は2回目に評価ずべき式をソフI・ウェア的に表
示するのではなく、マイクロプロゲラムレ−・ルの割込
みを用いることによって表示する。ソフイ的に行なう方
式を採用すると二1ンパイルされたユーザ定義マクロ関
数やシステム組込関数のマクL1関数は、2回目に評価
すべき式をプリントアウトすることはできないが、本方
式を採用するとシステム組込マクロ関数やコンパイルさ
れたマクロ関数もプリントアウトできるようになり、よ
りきめ細かなデバッグツールを提供することができる。
示するのではなく、マイクロプロゲラムレ−・ルの割込
みを用いることによって表示する。ソフイ的に行なう方
式を採用すると二1ンパイルされたユーザ定義マクロ関
数やシステム組込関数のマクL1関数は、2回目に評価
すべき式をプリントアウトすることはできないが、本方
式を採用するとシステム組込マクロ関数やコンパイルさ
れたマクロ関数もプリントアウトできるようになり、よ
りきめ細かなデバッグツールを提供することができる。
図面で説明すると第1図は木兄すノの41!II念図を
示し、IOはマクロ関数を実行するプログラム、12は
その中の1つのマイクロ命令を示す。本発明では1マイ
クロ命令中にマイクロレベルの割込みを受付りるか否が
を示ず1ピッ1−のフィールドFを設け、これに1が書
込まれていたら割込みを受イζjけ、0が書込まれてい
たら割込みは受イ1けないとする。また各種割込み原因
フラグr i,r 2。
示し、IOはマクロ関数を実行するプログラム、12は
その中の1つのマイクロ命令を示す。本発明では1マイ
クロ命令中にマイクロレベルの割込みを受付りるか否が
を示ず1ピッ1−のフィールドFを設け、これに1が書
込まれていたら割込みを受イζjけ、0が書込まれてい
たら割込みは受イ1けないとする。また各種割込み原因
フラグr i,r 2。
・・・・・・を立てられるレジスタ14の、その一度評
価した式をプリントアウトすることを示すフラグf1の
欄に、ブUグラム実行前に予め1を立“ごておく。この
ようにしておいてプログラム1oを実行し、その実行順
番がマイクロ命令12になると割込めが受(1げられ、
割込処理ルーチンが(+$jいて割込み原因レジスタ1
4の各フラグ欄を眺め、フラグ[1が立っていることが
分ると(他のフラグはマクロ関数実行ブしtグラム10
とは関係がなく、従ってオールOであることが充分予想
できる)、その直1);Iの式(これは1回目のi″P
価結果であり、2回目に評価しようとする式でもある)
を表示する。
価した式をプリントアウトすることを示すフラグf1の
欄に、ブUグラム実行前に予め1を立“ごておく。この
ようにしておいてプログラム1oを実行し、その実行順
番がマイクロ命令12になると割込めが受(1げられ、
割込処理ルーチンが(+$jいて割込み原因レジスタ1
4の各フラグ欄を眺め、フラグ[1が立っていることが
分ると(他のフラグはマクロ関数実行ブしtグラム10
とは関係がなく、従ってオールOであることが充分予想
できる)、その直1);Iの式(これは1回目のi″P
価結果であり、2回目に評価しようとする式でもある)
を表示する。
第2図はその処理手順を模式的にボづもので、M R
l ハ1回目の評価をするマイク1ツルーチン、MR2
は2回目のMl 1曲をするマイク1ツルーチン、I2
はこれらの間に挿入された前述のマイク1」命令で、こ
れが実行されると割込み処理のマイクl」ステップSに
入る。Flはマイクロブレグラム実行順序を示す。実行
順番がマイクロ命令12にくるとマイクロルーチンMR
Jで評価した結果がプリントアウトされ、それが終了す
ると2回目の評価をするルーチンMR2に戻り、ブし1
グラム実行を再開する。マイク1ルーチンMRIとMR
2は同種のものであるから、マイクロ命令12はマイク
ロルーチンの先頭においてもよい。割込み原因フラグを
格納するレジスタ14はメモリ (上記19)上の任意
の所においてもよいし、フリソブフ日ノブなどで別個に
構成してもよい。
l ハ1回目の評価をするマイク1ツルーチン、MR2
は2回目のMl 1曲をするマイク1ツルーチン、I2
はこれらの間に挿入された前述のマイク1」命令で、こ
れが実行されると割込み処理のマイクl」ステップSに
入る。Flはマイクロブレグラム実行順序を示す。実行
順番がマイクロ命令12にくるとマイクロルーチンMR
Jで評価した結果がプリントアウトされ、それが終了す
ると2回目の評価をするルーチンMR2に戻り、ブし1
グラム実行を再開する。マイク1ルーチンMRIとMR
2は同種のものであるから、マイクロ命令12はマイク
ロルーチンの先頭においてもよい。割込み原因フラグを
格納するレジスタ14はメモリ (上記19)上の任意
の所においてもよいし、フリソブフ日ノブなどで別個に
構成してもよい。
次に具体例を示すに、第3図はl−iSP言語によるl
から10までの和,轟iをめるプログラムの例である。
から10までの和,轟iをめるプログラムの例である。
こ\でDO.LETはマク1.1定義関数である.I)
0はフォートランのI)0文と間し、Iは制御変数で初
期値はo、1回実行する毎に→−1する。J、にの初期
値は10.0である。
0はフォートランのI)0文と間し、Iは制御変数で初
期値はo、1回実行する毎に→−1する。J、にの初期
値は10.0である。
((>rJ)K)ばI > 、JならB1算終り、結果
をKに返せを意味し、フA−トランのIF文と同しであ
る。5ETQは代入を意味し、(Sl■1゛QK (+
K I) )はK = K −1−1を行なう、■二J
であるからI=Jまで行なう、を意味する。次のLET
は初期値設定を意味し、LOO”Pば循環さ−Uるごと
を示す。(>IJ)はI>Jならば・・・、であり、E
X ] i”はループがら出ろを意味3′る。
をKに返せを意味し、フA−トランのIF文と同しであ
る。5ETQは代入を意味し、(Sl■1゛QK (+
K I) )はK = K −1−1を行なう、■二J
であるからI=Jまで行なう、を意味する。次のLET
は初期値設定を意味し、LOO”Pば循環さ−Uるごと
を示す。(>IJ)はI>Jならば・・・、であり、E
X ] i”はループがら出ろを意味3′る。
1) ROG N・・・・・・は・・・を実行を意味し
、こ−で行なうことは上記の00文の(SETQ K
(+K I) )と同しであるが、1、ET文では(S
E”rQ I(1→−I)を(=J加してやる必要があ
る。このLETもマクロであるから次のLAMBDA・
・・・・・に展開される。
、こ−で行なうことは上記の00文の(SETQ K
(+K I) )と同しであるが、1、ET文では(S
E”rQ I(1→−I)を(=J加してやる必要があ
る。このLETもマクロであるから次のLAMBDA・
・・・・・に展開される。
L i S P 言語のプログラムが走っていて00文
が現われると第3図■の如き展開が11なわれ、次いで
■、■の展開がなされ、■が実行され°ζ結果55が表
示される。本例ではΣiという節j11な演鳳=1 算のプログラムの例であるが、更に複雑な演算のプログ
ラムになるとマクロの中にマク1)が入っζいζそれが
次々と展開され、やがて結果が表示されるが、それがコ
ニラー゛であってもど、二”ご:I−ラーが生じたのか
、発見は容易でない。そこC各段階■。
が現われると第3図■の如き展開が11なわれ、次いで
■、■の展開がなされ、■が実行され°ζ結果55が表
示される。本例ではΣiという節j11な演鳳=1 算のプログラムの例であるが、更に複雑な演算のプログ
ラムになるとマクロの中にマク1)が入っζいζそれが
次々と展開され、やがて結果が表示されるが、それがコ
ニラー゛であってもど、二”ご:I−ラーが生じたのか
、発見は容易でない。そこC各段階■。
■、・・・・・・の展開を行なうマイクロルーチンの次
のマイクロ命令に前記ビットフィールI” Fを設番ノ
、それに1を立てておき、L i S P 、’4’語
のマクロ命令実行に先立ってオペレータが割込め原因レ
ジスタ14のフラグflにlを立てておけば(これもマ
クロ命令により行なう)、展開■が終了した段階でそれ
が表示され、展開■が終了した段階で・・・・・・以下
同様となり、オペレータはこれをめでエラーがあるか否
かチェックすることができる。従来方式であると展開■
、■、■がなされ′(結果が表示されるだけであり、途
中経過は分らない。
のマイクロ命令に前記ビットフィールI” Fを設番ノ
、それに1を立てておき、L i S P 、’4’語
のマクロ命令実行に先立ってオペレータが割込め原因レ
ジスタ14のフラグflにlを立てておけば(これもマ
クロ命令により行なう)、展開■が終了した段階でそれ
が表示され、展開■が終了した段階で・・・・・・以下
同様となり、オペレータはこれをめでエラーがあるか否
かチェックすることができる。従来方式であると展開■
、■、■がなされ′(結果が表示されるだけであり、途
中経過は分らない。
上記のように、マクロの展開がなされる度に表示させる
他、マイクロ命令ルの細かい内容を各ゾロツク毎に表示
さ−lることも同様手法で11能である。表示不要なら
割込の原因レジスタ■4のフラグf1の七ソトをしなけ
ればよく、こればユーザーが自由に選択できる。システ
ム製作者側で用意するのは、各段階の次のマイクロ命令
にビットフィールドFを設け、表示が望まれるかも知れ
ないと思われるものには該フィールI゛に1を立ててお
くことである。
他、マイクロ命令ルの細かい内容を各ゾロツク毎に表示
さ−lることも同様手法で11能である。表示不要なら
割込の原因レジスタ■4のフラグf1の七ソトをしなけ
ればよく、こればユーザーが自由に選択できる。システ
ム製作者側で用意するのは、各段階の次のマイクロ命令
にビットフィールドFを設け、表示が望まれるかも知れ
ないと思われるものには該フィールI゛に1を立ててお
くことである。
マイクロ命令のビットフィールドFに1が立っていると
き実行されることは表示、プリントアウト(展開■.■
などを宿込む)などでもよく、とのよ・うな処理をする
かは割込み原因レジスタI4へ立てるフラグtこよる。
き実行されることは表示、プリントアウト(展開■.■
などを宿込む)などでもよく、とのよ・うな処理をする
かは割込み原因レジスタI4へ立てるフラグtこよる。
IIJちこのフラグにより処理内容を適宜変更すること
ができる。メモリi!1込みの場合は多数の計1i1!
i結果をメモリに記IQさl、実時間または実行後にそ
れを読出して11:1グラムの動作解析、デハソグなど
を行なうことができ、処理効率、「目11度が」−る、
等の利点がある。
ができる。メモリi!1込みの場合は多数の計1i1!
i結果をメモリに記IQさl、実時間または実行後にそ
れを読出して11:1グラムの動作解析、デハソグなど
を行なうことができ、処理効率、「目11度が」−る、
等の利点がある。
発明の詳細
な説明したように本発明によれば、コンパイルされたマ
クロ定義関数もその展開形(lhla・F li[li
した結果)を見ることができ、マクロ定義関数の実行
追跡過程、デハソグに関し′(多大の幼果がある。
クロ定義関数もその展開形(lhla・F li[li
した結果)を見ることができ、マクロ定義関数の実行
追跡過程、デハソグに関し′(多大の幼果がある。
第1図はマイクロフィールドと割込め原因フラグについ
ての説明図、第2図は割込発生のマイクロステップの使
用例を模式的に示す説明図、第3図はLiSPインクブ
リタをマイクlJプL1グラム化して本発明を適用した
ときの具体例を示す図である。 図面でMRlは1回目の評価をするマイクロルーチン、
MR2は2回目の評価をするマイクロルーチン、I2は
割込み発生のマイクロステップを生じさせるマイクロ命
令、Fはそのビットフィールド、I4は割込み原因レジ
スタ、「1はその評り111結果表示を示すフラグ欄で
ある。 出1rIR人 富士通株式会社 代理人弁理士 Pi 柳 稔 第3図 (DO((IO(++I)) (JIO) ((>IJ)K)(SETQ K(+KI”))廿 ((LAM BDA (KJ 1)(LOOP(AND
(>IO(PROGN( (SETQ r U実行 o、+o、、、’o) K)) K工))) J)(EXLT に)) SETQK(十に1))) (1十工))))
ての説明図、第2図は割込発生のマイクロステップの使
用例を模式的に示す説明図、第3図はLiSPインクブ
リタをマイクlJプL1グラム化して本発明を適用した
ときの具体例を示す図である。 図面でMRlは1回目の評価をするマイクロルーチン、
MR2は2回目の評価をするマイクロルーチン、I2は
割込み発生のマイクロステップを生じさせるマイクロ命
令、Fはそのビットフィールド、I4は割込み原因レジ
スタ、「1はその評り111結果表示を示すフラグ欄で
ある。 出1rIR人 富士通株式会社 代理人弁理士 Pi 柳 稔 第3図 (DO((IO(++I)) (JIO) ((>IJ)K)(SETQ K(+KI”))廿 ((LAM BDA (KJ 1)(LOOP(AND
(>IO(PROGN( (SETQ r U実行 o、+o、、、’o) K)) K工))) J)(EXLT に)) SETQK(十に1))) (1十工))))
Claims (1)
- 【特許請求の範囲】 関数型言語のマクロ定義関数に作用させるべき式が与え
られるとその式を評価し、その結果の式を改めて評価す
る関数型言語における実行過程追跡方法において、 前記マクロ定義関数の1回目の評価をするマイクロルー
チンの後に、マイクロレベルの割込み受(;Jけを指示
するビット領域を持つマイクロ命令を設定し、また該マ
クロ定義関数の実行に際して予め割込み原因レジスタに
、外部へ表示する処理を実行さ−lるフラグを立てるよ
うにし、プログラム実行が前記マイクロ命令まで進んだ
とき1回目の評価結果に対し前記フラグにより定まる処
理を行なわせることを特徴とする関数型言語における実
行過程追跡方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP58210507A JPS60103460A (ja) | 1983-11-09 | 1983-11-09 | 関数型言語における実行過程追跡方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP58210507A JPS60103460A (ja) | 1983-11-09 | 1983-11-09 | 関数型言語における実行過程追跡方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPS60103460A true JPS60103460A (ja) | 1985-06-07 |
Family
ID=16590508
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP58210507A Pending JPS60103460A (ja) | 1983-11-09 | 1983-11-09 | 関数型言語における実行過程追跡方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS60103460A (ja) |
-
1983
- 1983-11-09 JP JP58210507A patent/JPS60103460A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR19990034145A (ko) | 동적-비주얼 통합 병렬 디버깅 장치 및 디버깅 방법 | |
| JPH02272645A (ja) | プログラム・デバツグ支援方法 | |
| KR100339697B1 (ko) | 반도체 시험장치의 프로그램 작성 시스템 | |
| Fauth et al. | Automated generation of DSP program development tools using a machine description formalism | |
| Razouk | The use of Petri Nets for modeling pipelined processors | |
| JPS6019028B2 (ja) | 情報処理装置 | |
| JPS60103460A (ja) | 関数型言語における実行過程追跡方法 | |
| JPS62113244A (ja) | プログラムテスト装置 | |
| JPH0454636A (ja) | プロセッサ | |
| Mutlu et al. | Java-XCOM Component Integration on Linux Operating System | |
| Klassen et al. | S*(QM-1) An instantiation of the high level microprogramming language scheme S* for the nanodata QM-11 | |
| Ebrahim et al. | City-based approach for GPU kernel execution trace visualisation | |
| JP2001290857A (ja) | タイミングシミュレータ | |
| JPS6143347A (ja) | ベクトル命令シミユレ−シヨン方法 | |
| JPS58200349A (ja) | マイクロプログラム制御装置 | |
| JP2751423B2 (ja) | プログラムデバッグ処理方式 | |
| Ten et al. | COMPARATIVE ANALYSIS OF TWO MOST POPULAR JAVASCRIPT FRAMEWORKS FOR MOBILE APPLICATION DEVELOPMENT | |
| KR100218696B1 (ko) | 프로그램 수행경로 역추적 기능을 가지는 프로그램가능 논리제어기 | |
| JPH01277941A (ja) | 推論ステップ方式 | |
| JPH09297695A (ja) | シンボリッククロスデバッガおよび作成システム | |
| Davidson | A case study of the migration of an algorithm across software-firmware boundaries | |
| JPH03141436A (ja) | デバッグ装置 | |
| JPH02275538A (ja) | デバッグ処理方式 | |
| JPS61208126A (ja) | 被テスト・プログラム実行制御方式 | |
| JPS61208143A (ja) | 情報処理装置 |