JPH01111236A - 計算機 - Google Patents

計算機

Info

Publication number
JPH01111236A
JPH01111236A JP62268479A JP26847987A JPH01111236A JP H01111236 A JPH01111236 A JP H01111236A JP 62268479 A JP62268479 A JP 62268479A JP 26847987 A JP26847987 A JP 26847987A JP H01111236 A JPH01111236 A JP H01111236A
Authority
JP
Japan
Prior art keywords
program
branch instruction
trap
address
segment
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
JP62268479A
Other languages
English (en)
Inventor
Hiroshi Narimatsu
成松 宏
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP62268479A priority Critical patent/JPH01111236A/ja
Publication of JPH01111236A publication Critical patent/JPH01111236A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は計算機に関し、特にそのプログラムのデバッグ
を支援する分岐命令トラップ機能を持つ計算機に関する
〔従来の技術と発明が解決する問題点〕プログラム開発
支援ツールとしてプロファイラと呼ばれるプログラムが
ある。これは、開発中のプログラムに対してその各部分
の実行回数と、実行に要した時間を表の形で表示するプ
ログラムである。その表はプログラムの高速化のために
改良すべき点を探すための重要な資料になる。プロファ
イラの出力例を第10図及び第12図に示す。
従来の計算機用のプロファイラ作成の流れを示す図が第
16図である。従来の計算機用のプロファイラは、被測
定プログラムのソースプログラムにプロファイラの処理
ルーチンへのCALL命令を挿入したソースプログラム
を作成する。そのプログラムをコンパイルし、プロファ
イラ専用ライブラリと共にリンクすると被測定プログラ
ムプロファイラ測定用オブジェクトが作成される。この
オブジェクトを実行させると第10図及び第12図に示
したような表が得られる。
この従来の計算機用プロファイラには、プロファイラ作
成用にプログラム全体を作り直さなければならないと言
う欠点がある。
命令先取り方向指示情報を持つ条件付分岐命令を有する
パイプライン方式計算機が提案されている。この計算機
では、従来の条件付分岐命令1つに対して2つの分岐命
令を用意する。1つは、分岐命令の先読みの次の分岐命
令につづくアドレスに格納されている命令を先読みする
分岐命令であり、もう1つは、分岐命令の次の分岐命令
の分岐先に格納されている命令を先読みする分岐命令で
ある。この2つの命令は先読み以外の動作は全て同じで
ある。このパイプライン方式計算機では、プログラムが
多く動く方向に先読みが行われれば高い性能が得られる
先読み方向の指示はプログラマがプログラム作成時に指
定する方法や、コンパイラが発生する方法が考えられる
が、これらの方法では、プログラマの負担が増加したり
最適なプログラムが得られにくいと言う欠点がある。
また、実際にプログラムを走らせて分岐命令でどちらに
動いたかを計数しその結果によって多く動く方向に先読
み方向を一致させると言う方法がある。しかし、従来の
計算機でこの方□法を取る場合、機械語を解釈実行する
プログラムを使うか、全ての測定対象の分岐命令をトラ
ップ命令に置き換えるしか方法がない。そして、それら
の場合には計数するプログラムが大変複雑になり、また
測定に時間がかかると言う問題がある。
〔問題点を解決するための手段〕
本発明の計算機は、分岐命令にトラップを発生する機能
を有するトラップ手段と、そのトラップをマスクするこ
との出来るプログラムでセットとリセットが可能なマス
クフラグを有している。
〔実施例〕
次に、本発明について図面を参照して説明する。
本発明の第1の実施例として、本発明を利用したプロフ
ァイラの構成例とその動作を以下に説明する。
第1図は分岐命令トラップ実行前後のスタックの状態を
示す図、第2図は分岐命令トラップマスクフラグを含む
P SW (Program 5tatus Word
)を示した図である。第1図でトラップ実行前のスタッ
クポインタが指す位置SPで、実行前にはスタック1に
は分岐命令トラップに関する情報は全く置かれない。分
岐命令トラップは第2図のPSWloの分岐命令トラッ
プマスクフラグFが0で、分岐命令を実行した時に発生
する。計算機はスタック1に分岐命令実行後にプログラ
ムが動く分岐先アドレス2と分岐命令実行後のPSWI
Oとトラップを起こした分岐命令のあるアドレス3をス
タック1に積む。そしてPSWIOの分岐命令トラップ
マスクフラグFを1にして分岐命令トラップが起こらな
いようにする。
第3図は、このプロファイラの動きを説明するための被
測定プログラム例を示す図である。被測定プログラムは
プロファイラによってセグメントに分割され計測される
。セグメントとは、その最後尾にのみ分岐命令を含む連
続したプログラム領域である。第3図のプログラムは、
省略された部分には分岐命令を含まないので、セグメン
トA〜セグメントDの4つのセグメントに分割される。
プロファイラが起動されると、プロファイラは被測定プ
ログラムの実行形式のオブジェクトを読み込み第4図に
示す作業用テーブル41を確保し第13図に示すトラッ
プ処理ルーチンをセットする。
作業用テーブル41は各セグメントに対して、42〜4
6の各フィールドを持っている。42のフィールドはセ
グメントの先頭アドレスを保持する。43のフィールド
はセグメントの最終アドレス、即ち分岐命令のあるアド
レスを保持する。44はセグメントの実行回数、45は
セグメントでかかった実行時間を保持する。46はセグ
メント間のアドレスの大小関係を保持するために、アド
レス順に並べた時に次のセグメントがテーブルの何番目
に登録されているかを保持する。
全ての準備が終了すると、プロファイラは被測定プログ
ラムのスタートアドレスを最初のセグメントとして登録
する。第3図の被測定プログラムの場合には、スタート
アドレスはO番地である。
つまり、テーブルに1つ場所を確保し、先頭アドレス0
を書込み、カウントを1.経過時間を09次のセグメン
ト無しとテーブルに書込む。書込後のテーブルの状態を
示したのが第5図である。そのあとプロファイラは時間
計測をスタートさせ、分岐命令トラップマスクフラグF
を0にして第3図の被測定プログラムのスタートアドレ
スに制御を移す。被測定プログラムの24番地のCAL
L命令が実行された時点で分岐命令トラップが発生し、
第13図のトラップ処理ルーチンに制御が移る。
トラップ処理ルーチンでは、まず時間計測を終了し第4
図のテーブル45の値に加える(ステップ101)。次
に、テーブルの最終アドレスがまだ書込まれていないの
で、スタック1に積まれた分岐命令のあるアドレス3に
ある値を書込む(ステップ102)。次に、分岐先アド
レスから次に実行されるプログラムセグメントを探すが
、4F番地から始まるプログラムセグメントはないので
テーブルに1つ場所を確保する(ステップ103)。こ
のとき、テーブル45のセグメント46の番号1の次の
セグメントを保持するフィールドに2と書込む。先頭ア
ドレス42に4F、カウント44に1.経過時間45に
0を書込んでトラップ処理ルーチンを終了し、RT T
 (Return fromTrap)命令でスタック
に積まれたPSWの値をロードするとともに、第3図の
被測定プログラムの4F番地に制御を移す(ステップ1
04〜106)。処理終了後のテーブルの様子を第6図
に示す。
次に、分岐命令トラップが発生するのは、第3図の被測
定プログラムの53番地のRET命令である。そしてト
ラップ処理ルーチンに制御が移り、同じ処理がなされテ
ーブルは第7図の様になる。ここで注目してもらいたい
のは、新たに27番地から始まるセグメント用にテーブ
ルに1つ場所が確保されたが、アドレス順で考えるとこ
のセグメントは前の2つのセグメントの間になるので、
次のセグメントのフィールドはテーブル45のセグメン
ト46の番号1の次が3.セグメント46の番号2の次
が2.セグメント46の番号2の次はなく、セグメント
46の番号2が最終セグメントになっている。このよう
な情報を蓄えているのは、アドレスが与えられた時に、
そのアドレスを含むセグメントをある程度高速に探し出
すためである。より高度なアルゴリズムと余分の記憶容
量によって、さらに高速に探し出すことも可能である。
次のトラップは39番地のJBE命令で起きる。ここで
、この分岐命令によってプログラムは12番地へJUM
Pするとして説明を行う。そうすると、次は12番地を
含むプログラムセグメントであるから、テーブルの1番
目に既に登録されているので、このカウントを1つ足し
て2にする。トラップ処理終了後のテーブルの状態を第
8図に示す。
以下、同じことを繰り返すと被測定プログラムが終了し
た時点で、テーブルは第9図のようになる。この表をも
とにして第10図の表を出力する。シンボルテーブルと
は第11図に示すようなソースプログラム中のシンボル
と実行形式オブジェクトの番地との対応表のことである
。シンボルテーブルは通常リンカ−によって出力されプ
ログラムのデバッグ等に利用される。このシンボルテ−
プルがあれば第12図に示す表を出力することも可能で
ある。
本発明を利用した第2の実施例のプログラムの構成例と
その動作を以下に説明する。
このプログラムは、被測定プログラムで実行される全て
の条件付き分岐命令に対して、被測定プログラムを実際
に走らせてみて、分岐命令で分岐した回数としなかった
回数を計数するプログラムであり、命令先取り方向指示
情報を有するパイプライン方式計算機の高速化に用いる
このプログラムが起動されると、第14図に示すトラッ
プルーチンをセット、第15図に示す作業用テーブルの
確保等の処理を行った後、被測定プログラムの実行形式
オブジェクトをロードする。作業用テーブルは、分岐命
令の存在する番地を保持するフィールド、その分岐命令
でプログラムが分岐した回数と分岐しなかった回数を保
持するフィールドを持つ。全ての準備が終了すると、こ
のプログラムは”分岐命令トラップマスクフラグをリセ
ットした後、被測定プログラムのスタートアドレスに制
御を移す。被測定プログラムの全ての条件分岐命令でト
ラップが発生する。トラップルーチンでは各条件材き分
岐命令ごとに゛、スタックに積まれた分岐先アドレスと
分岐命令のあるアドレスを比較して分岐したかどうかを
判断し、計数する。こうして、被測定プログラムが終了
した時点で、実行される全ての条件付分岐命令に対して
、分岐した回数と分岐しなかった回数が得られる。
〔発明の効果〕
以上説明したように本発明は、分岐命令に対するトラッ
プ機能を計算機に装備することにより、操作性の良い高
速なプロファイラや命令方向指示情報を持つパイプライ
ン方式計算機に必要な調整プログラムを容易に作成でき
ると言う効果がある。
【図面の簡単な説明】
第1図は本発明の第1及び第2の実施例で用いる、分岐
命令トラップ実行後にスタックに積まれる情報、第2図
は分岐命令トラップマスクフラグを含むP SW (P
rogram 5tatus Word)、第3図は第
1の実施例で説明に用いるプロファイラ被測定プログラ
ム例の図、第4図は第1の実施例で用いる作業用テーブ
ル、第5図〜第9図は第1の実施例のプロファイラの実
行に伴う作業用テーブルの各時点での状態を示す図、第
10図は第1の実施例で用いるプロファイラ出力例の図
、第11−図は第1の実施例で用いるシンボルテーブル
の例の図、第12図は第1の実施例で用いるシンボルテ
ーブルを使ったプロファイラ出力例の図、第13図は第
1の実施例で用いるトラップ処理ルーチン、第14図は
第2の実施例で用いるトラップ処理ルーチン、第15図
は第2の実施例で用いる作業テーブル、第16図は従来
のプロファイラの処理の流れを中心に示す図である。 1・・・スタック、10・・・PSW、41・・・作業
用テーブル。

Claims (1)

    【特許請求の範囲】
  1. 分岐命令にトラップをかける機能を有するトラップ手段
    と、そのトラップをマスクすることができるプログラム
    でセットとリセットが可能なマスクフラグを有すること
    を特徴とする計算機。
JP62268479A 1987-10-23 1987-10-23 計算機 Pending JPH01111236A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62268479A JPH01111236A (ja) 1987-10-23 1987-10-23 計算機

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62268479A JPH01111236A (ja) 1987-10-23 1987-10-23 計算機

Publications (1)

Publication Number Publication Date
JPH01111236A true JPH01111236A (ja) 1989-04-27

Family

ID=17459063

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62268479A Pending JPH01111236A (ja) 1987-10-23 1987-10-23 計算機

Country Status (1)

Country Link
JP (1) JPH01111236A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0528002A (ja) * 1991-07-24 1993-02-05 Nec Corp マイクロプロセツサ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0528002A (ja) * 1991-07-24 1993-02-05 Nec Corp マイクロプロセツサ

Similar Documents

Publication Publication Date Title
US8423982B2 (en) Speculative compilation
KR950006616B1 (ko) 변환된 프로그램 코드에서 소스 명령 분자를 보전하기 위한 시스템 및 방법
JP3093624B2 (ja) 投機例外を処理する方法及び装置
JP4272371B2 (ja) デバッグ支援装置、コンパイラ装置、デバッグ支援プログラム、コンパイラプログラム、及びコンピュータ読取可能な記録媒体。
US10229031B2 (en) Debugging inline functions in optimized code
US20080120605A1 (en) Stepping and application state viewing between points
PT100206B (pt) Metodo para operar um computador digital e sistema de computador digital
WO1998037485A1 (en) Method and apparatus for forwarding of operands in a computer system
JP2012128628A (ja) プログラムの最適化装置、最適化方法および最適化プログラム
JPH02217926A (ja) コード生成方法
JP2004164554A (ja) プログラム実行監視装置および方法
KR20010040742A (ko) 인터프리터 프로그램을 실행하는 방법
JPH06110703A (ja) コンパイル方法
JPH04266125A (ja) ディジタルコンピュータの操作方法
JP2922723B2 (ja) 情報処理装置
JPH01111236A (ja) 計算機
JPH0766342B2 (ja) プログラムテスト装置
JP2022140995A (ja) 情報処理装置、コンパイルプログラムおよびコンパイル方法
Barnard et al. Hierarchic syntax error repair for LR grammars
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
JP2002073347A (ja) 例外処理方法及びコンパイラ
Ashby et al. Design of an interactive debugger for FORTRAN: MANTIS
JP3240647B2 (ja) コンピュータ言語の構造化処理方式
KR20060092728A (ko) 프리-프로세스에서 파일 검색 시간 단축을 통한 컴파일러의컴파일 속도 향상 방법
JP3139393B2 (ja) デバッグ装置