JPH1165881A - Cpuの拡張割込み制御方式及びそのcpuで使用するデバッガ - Google Patents

Cpuの拡張割込み制御方式及びそのcpuで使用するデバッガ

Info

Publication number
JPH1165881A
JPH1165881A JP9217833A JP21783397A JPH1165881A JP H1165881 A JPH1165881 A JP H1165881A JP 9217833 A JP9217833 A JP 9217833A JP 21783397 A JP21783397 A JP 21783397A JP H1165881 A JPH1165881 A JP H1165881A
Authority
JP
Japan
Prior art keywords
instruction
address
interrupt
debugger
interruption
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.)
Withdrawn
Application number
JP9217833A
Other languages
English (en)
Inventor
Daiki Sawada
大樹 沢田
Tomonori Nara
智紀 奈良
Kazuhiro Sato
和広 佐藤
Hidetoshi Sato
秀俊 佐藤
Fumiaki Tahira
文明 田平
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP9217833A priority Critical patent/JPH1165881A/ja
Publication of JPH1165881A publication Critical patent/JPH1165881A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 外部割込み数が制限されたCPUでは、機能
拡張したCPUボード等で割込み数を増設したいときに
はIRC(インターラプト・コントローラ)等の割込み
外付け装置を用いて割込みを制御しなければならない。 【解決手段】 CPUの複数の割込み夫々のレベルに応
じてアクセスされ、前記レベルに応じた割込みベクタを
読み出すトラップテーブルと、別バスサイクルにより前
記レベル内の割込み番号を得る割込み番号取得手段と、
トラップテーブルから読み出された割込みベクタと、前
記割込み番号取得手段で得た割込み番号とからアドレス
テーブルをアクセスするアドレスを求めるアドレス演算
手段と、複数の割込み夫々の種類に応じた割込みルーチ
ンのアドレスを登録されており、前記アドレス演算手段
で求められたアドレスでアクセスされるアドレステーブ
ルとを有する。このため、外部割込み数を上記割込みの
レベル数以上に増加でき、そのための外付け装置が不要
となり装置のコスト上昇を抑制できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はCPUの拡張割込み
制御方式及びそのCPUで使用するデバッガに関し、特
にRISC型CPUの拡張割込み制御方式とこのRIS
C型CPUで動作するプログラムをデバッグするデバッ
ガに関する。
【0002】
【従来の技術】図17は最近開発されたRISC(縮小
命令セット・コンピュータ)型CPUの機能ブロック図
を示す。同図中、RISC型CPU10内の割込み機能
ブロック12にはプロセッサの内外より割込みが供給さ
れる。外部からの割込みに対応する命令テーブルとして
の割込みベクタ14はi(iは例えば7)個がユーザに
開放されている。
【0003】プログラム制御ブロック16内のウインド
ウレジスタはj(jは例えば8)個のウインドウからな
り、図18に示すように隣接するウインドウのアウトプ
ットレジスタ部は次のウインドウのインプットレジスタ
部とオーバーラップさせ、j番目のウインドウは1番目
のウインドウとオーバーラップさせてリング状とされて
おり、カレントウインドウポインタでカレントウインド
ウ(使用するウインドウ)を指示する。
【0004】上記のインプットレジスタ部とアウトプッ
トレジスタ部のオーバーラップにより、プロセス間で高
速にパラメータを受け渡すことができ、また、カレント
ウインドウを移動させることでオーバーラップしたレジ
スタ部の出力パラメータを入力パラメータに変更するこ
とができる。プログラム制御ブロック16内でプログラ
ムカウンタ(PC)に対応して、ネクストプログラムカ
ウンタ(nPC)18はパイプライン制御の命令先読み
機能に伴う次命令のアドレスを取得する。
【0005】
【発明が解決しようとする課題】上記のRISC型CP
Uでは、アプリケーション等の一般プログラムに対して
は処理速度が速い等のメリットが大きいが、埋め込み型
デバッガや、このCPUを使用し機能拡張したCPUボ
ードを作成して交換機に使用するような場合に種々の問
題が生じる。
【0006】外部割込み数が制限されたCPUでは、機
能拡張したCPUボード等で割込み数を増設したいとき
にはIRC(インターラプト・コントローラ)等の割込
み外付け装置を用いて割込みを制御しなければならず、
そのために既存の制御とは別に制御プログラムを作成し
なければならない。このため、装置のコストが上昇し、
別の制御プログラムにより処理が複雑化し、ソフト規模
の増大とバグ発生要因になるという問題があった。
【0007】また、固定的に定義されないウインドウレ
ジスタを有するCPUでは、外部割込みによりカレント
ウインドウポインタ値が変化し、前の状態を保存できな
い。つまり、ソフトデバッグに使用する埋込み型デバッ
ガでは、デバッガが外部割込みを起動してCPUを停止
させ、そのときのレジスタ内容を調べるのであるが、外
部割込みでカレントウインドウポインタ値が強制的に変
化し使用するウインドウが移動するため、CPU停止直
前の被デバッグプログラムの状態を保存できないという
問題があった。
【0008】更に、PC及びnPCを有するRISC型
CPUにはハード的に1命令実行の監視機能がなく、1
命令実行時にデバッガに割込みで通知してのステップ実
行が不可能である。この機能をソフト制御すると、プロ
グラム1命令毎に命令の解析が必要で、ソフト量が膨大
となり処理速度も遅くなるという問題があった。本発明
は上記の点に鑑みなされたもので、割込み外付け装置な
しに外部割込み数を増加でき、装置のコスト上昇を抑制
でき、また、ウインドウレジスタを用いたCPUでデバ
ッグを行うことができ、また、ハード的な監視機能のな
いCPUでソフト制御によるステップ実行を高速に行う
ことができるCPUの拡張割込み制御方式及びそのCP
Uで使用するデバッガを提供することを目的とする。
【0009】
【課題を解決するための手段】請求項1に記載の発明
は、CPUの複数の割込み夫々のレベルに応じてアクセ
スされ、前記レベルに応じた割込みベクタを読み出すト
ラップテーブルと、別バスサイクルにより前記レベル内
の割込み番号を得る割込み番号取得手段と、前記トラッ
プテーブルから読み出された割込みベクタと、前記割込
み番号取得手段で得た割込み番号とからアドレステーブ
ルをアクセスするアドレスを求めるアドレス演算手段
と、複数の割込み夫々の種類に応じた割込みルーチンの
アドレスを登録されており、前記アドレス演算手段で求
められたアドレスでアクセスされるアドレステーブルと
を有する。
【0010】このように、割込みのレベルに応じた割込
みベクタと、各レベルの割込み番号とからアドレステー
ブルのアドレスを算出し、各割込みに対応する割込みル
ーチンのアドレスを得るため、外部割込み数を上記割込
みのレベル数以上に増加でき、そのための外付け装置が
不要となり装置のコスト上昇を抑制できる。請求項2に
記載の発明は、複数のウインドウから構成され、カレン
トウインドウポインタによって使用するウインドウを指
示されるウインドウレジスタを有するCPUで動作する
プログラムをデバッグするデバッガであって、前記デバ
ッガの起動による割込み時に前記カレントウインドウポ
インタの値を前記割込み前の状態に戻すポインタ補正手
段を有する。
【0011】このため、デバッガ起動割込みによりデバ
ッグ対象のユーザプログラムを停止させたとき、割込み
直前のカレントウインドウポインタ値を知ることがで
き、ユーザプログラムで使用していたウインドウの内容
を認識でき、デバッグが可能となる。請求項3に記載の
発明は、請求項2記載のデバッガにおいて、前記デバッ
ガの起動による割込み時に動作モードを前記割込み前の
状態に戻すモード補正手段を有する。
【0012】このため、デバッガ起動割込みによりデバ
ッグ対象のユーザプログラムを停止させたとき、CPU
の動作モードをユーザプログラムの動作時の状態に戻す
ことができ、割込みを終了した後、ユーザプログラムを
再び動作させることが可能となる。請求項4に記載の発
明は、プログラムカウンタ及びネクストプログラムカウ
ンタを有するCPUで動作するプログラムをデバッグす
るデバッガであって、前記ネクストプログラムカウンタ
が指示する次命令アドレスにステップ実行のブレーク命
令を埋め込むブレーク命令埋め込み手段を有する。
【0013】このため、ハード的なステップ実行機能を
持たないCPUでソフト的にステップ実行を行うことが
でき、その際に次命令アドレスを高速に知ることができ
るためステップ実行を高速に行うことができる。請求項
5に記載の発明は、請求項4記載のデバッガにおいて、
前記プログラムカウンタが分岐命令を指示するとき、前
記分岐命令を命令解析して前記ステップ実行のブレーク
命令を埋め込む命令のアドレスを算出する命令解析手段
を有する。
【0014】このため、ネクストプログラムカウンタで
指示される次命令アドレス以外の次命令アドレスが存在
する分岐命令においても全ての次命令アドレスを知って
ステップ実行のブレーク命令を埋め込むことができる。
請求項6に記載の発明は、請求項4又は5記載のデバッ
ガにおいて、前記ブレーク命令の実行後、前記ブレーク
命令設定アドレスに埋め込み前の元の命令を書き込む復
元手段を有する。
【0015】このため、デバッグ対象のユーザプログラ
ムのステップ実行を行った後、ユーザプログラムを元の
状態に戻すことができる。
【0016】
【発明の実施の形態】まず、拡張割込み制御方式につい
て図1と共に説明する。図2において、割込みベクタ1
4をトラップテーブル20とアドレステーブル22とで
構成する。トラップテーブル20はCPU10内部で発
生した各種タイプの内部割込みと、CPU10外部から
CPU10の割込み機能ブロック12を通して各種タイ
プの外部割込みとでアクセスされる。トラップテーブル
20は図2に示すように、トラップタイプ0H〜10H
(Hは16進表示を示す)と、20H〜ffHまでの2
40個の内部割込みベクタと、トラップタイプ11H〜
1fHの15個の外部割込みベクタに分けられており、
各割込みに対する処理である割込みベクタが登録されて
いる。
【0017】上記のトラップテーブル20内の15個の
外部割込みベクタはレベル1から15までの15個のレ
ベルに分類されているが、本実施例では、このうちの7
個のレベルを使用している。このレベルは割込み機能ブ
ロック12のユーザに開放されたブロック数(7個)に
対応している。なお、7個のレベル夫々における何番目
の外部割込みかを示す割込み番号はCPU10からAS
I(アドレス・スペース・インディファイア)等の別バ
スサイクルにより指示される。ここで、割込みレベルと
は割込みの優先度を表わす。優先度の低い割込みは優先
度の高い割込みに対して割込むことはできない。また、
割込みタイプとは割込みの機能を表わしている。図2に
示すサブ割込みベクタレジスタ24には外部割込みの発
生によってトラップテーブル20から読み出される同一
レベルの外部割込みベクタが格納され、このうちの1つ
が別バスサイクルによって指示される。
【0018】アドレステーブル22は図3に示すように
トラップタイプ0H〜ffHの内部割込みルーチンアド
レステーブルと、ベクタ80H〜bfHの外部割込みル
ーチンアドレステーブルとから構成されている。各テー
ブルには夫々の制御ルーチン(トラップルーチン)の先
頭アドレスが登録されている。図4は内部割込みにより
トラップテーブル20の内部割込みベクタがアクセスさ
れたとき実行される内部トラップ制御ルーチンのフロー
チャートを示す。同図中、ステップS10では内部割込
みアドレステーブルの先頭アドレスを取得して変数Aに
格納する。次にステップS12でトラップテーブルベー
スレジスタのトラップタイプ値を変数Bに格納し、ステ
ップS16で変数Bよりアドレステーブルの相対登録位
置を算出し変数Dに格納する。そしてステップS18で
変数Dにより該当割込みに対するアドレステーブル22
の登録アドレスを算出し、ステップS20でアドレステ
ーブル22をアクセスしてトラップルーチンへジャンプ
する。
【0019】図5は外部割込みによりトラップテーブル
20の外部割込みベクタがアクセスされたとき実行され
る外部トラップ制御ルーチンのフローチャートを示す。
同図中、ステップS30では外部割込みアドレステーブ
ルの先頭アドレスを取得して変数Eに格納する。次にス
テップS32で別バスサイクルにより割込み番号を取得
して変数Fに格納し、ステップS36で変数Fよりアド
レステーブルの相対登録位置を算出し変数Hに格納す
る。そしてステップS38で変数Hにより該当割込みに
対するアドレステーブル22の登録アドレスを算出し、
ステップS40でアドレステーブル22をアクセスして
トラップルーチンへジャンプする。上記のステップS3
2が割込み番号取得手段、ステップS36がアドレス演
算手段に対応する。
【0020】このように割込みのレベルに応じた割込み
ベクタと、各レベルの割込み番号とからアドレステーブ
ルのアドレスを算出し、各割込みに対応する割込みルー
チンのアドレスを得るため、外部割込み数を上記割込み
のレベル数以上に増加でき、そのための外付け装置が不
要となり装置のコスト上昇を抑制できる。次に、本発明
の埋め込み型デバッガの動作概要について、図6と共に
説明する。図6においては、コマンド入力やデータ表示
を行ってデバッガを操作する端末30と、デバッグ対象
のユーザプログラムが走行する実機32と、実機32に
埋め込まれているデバッガ34とに大別して示す。同図
中、まず、端末30からの割込みにより実機32で走行
中のユーザプログラムは停止し、デバッガ34に起動が
渡される。デバッガ34は端末30からの指示によりユ
ーザプログラムの走行状態や走行環境をモニタし、その
データを端末30に送信し、端末30で表示が行われ
る。
【0021】次に端末30からユーザプログラムの走行
開始指示が出されるとデバッガ34が停止し、ユーザプ
ログラムの走行が開始される。更に、ユーザプログラム
がブレークポイントをヒットするとユーザプログラムは
停止してデバッガ34に制御が移行し、デバッガ34は
ユーザプログラムの走行状態や走行環境をモニタして端
末30に送信する。
【0022】図7は埋め込み型デバッガが行う割込み補
正処理の処理シーケンス図、図8は割込み補正処理の説
明図を示す。図7に示すようにデバッガ起動割込みが発
生すると、その直前でデバッグ対象ユーザプログラムで
例えば図8(A)になし地で示すようにレジスタとして
5番ウインドウを使用し、Sビットが値0でユーザモー
ドであるとすると、上記デバッガが起動割込みによって
カレントウインドウポインタが1だけデクリメントさ
れ、図8(B)になし地で示すようにレジスタは4番ウ
インドウの使用を指示し、Sビットが値1となってスー
パーバイザモードとなる。またPSビットは前回のSビ
ットを保存して値0となる。
【0023】この後、埋め込み型デバッガ内のデバッガ
用割込みハンドラはカレントウインドウポインタを1だ
けインクリメントして前の状態に戻し、かつ、Sビット
をPSビットに保存された値0に戻し、図8(C)に示
す状態とする。これによって埋め込み型デバッガは割込
み直前にユーザプログラムが使用していた5番ウインド
ウの内容を取得してデバッガ動作を行うことができる。
上記のデータ取得が終了すると、そのままの状態でデバ
ッグ対象ユーザプログラムの走行に戻る。
【0024】このように、デバッガの起動による割込み
時に前記カレントウインドウポインタの値を割込み前の
状態に戻すため、デバッガ起動割込みによりデバッグ対
象のユーザプログラムを停止させたとき、割込み直前の
カレントウインドウポインタ値を知ることができ、ユー
ザプログラムで使用していたウインドウの内容を認識で
き、デバッグが可能となる。
【0025】また、デバッガの起動による割込み時に動
作モードを割込み前の状態に戻すため、デバッガ起動割
込みによりデバッグ対象のユーザプログラムを停止させ
たとき、CPUの動作モードをユーザプログラムの動作
時の状態に戻すことができ、割込みを終了した後、ユー
ザプログラムを再び動作させることが可能となる。次に
埋め込み型デバッガで使用するソフトウェア制御のステ
ップ実行について説明するステップ実行は次命令アドレ
スを取得してセーブ後、ブレーク命令を次命令アドレス
に埋め込み、つまり、次命令をブレーク命令で書き換え
て実行し、ハードウェア制御は行わない。ステップ実行
後のブレークヒット(埋め込んだブレーク命令の実行)
により上記ブレーク命令をセーブしていた元の命令にリ
カバ(書き戻し)する。
【0026】ステップ実行強制終了は、ステップ実行中
のストップコマンド(強制終了)を有効とさせ、ステッ
プ実行処理を中止し、ブレーク命令をセーブデータより
元命令にリカバした後、通常処理へ移行する。次命令取
得は、基本的に、実行される次命令のアドレスはネクス
トプログラムカウンタnPCにて保持されているので、
ネクストプログラムカウンタnPCが指す次命令アドレ
スにブレーク命令を埋め込む。但し、分岐命令に関して
は、分岐先アドレスをネクストプログラムカウンタnP
Cが指しているとは限らない為、命令解析にて分岐先ア
ドレスを取得又は、算出してからブレーク命令を埋め込
む。
【0027】ステップ実行のブレーク命令は、ソフトウ
ェアブレークと同様にトラップ命令(割込み命令)によ
り割込みを発生させる。ブレーク命令にはセットトラッ
プ命令とリカバトラップ命令がある。まずセットトラッ
プ命令について説明する。第1に、ステップ実行用のセ
ットトラップ命令関数にて、次命令アドレスを取得し、
ステップ情報のブレーク設定アドレスに設定する。この
時に、ステップ情報設定を済とする。命令によっては、
最大3箇所設定される。
【0028】第2に、ステップ情報設定済の場合、ステ
ップ情報のブレーク設定アドレス(次命令アドレス)の
元データをステップ情報の命令元データにセーブする。
第3に、ステップ情報のブレーク設定アドレスへトラッ
プ命令を書き込む。上記の第2,第3は、図9(A)に
示すようにステップ情報の先頭より、ステップ用トラッ
プ設定MAX分繰り返し処理を行う。なお、ステップ情
報とは、ステップ実行中の判定であり、図9のS実行情
報とは、飛び先アドレスとその命令のことである。ここ
で、Sブレーク情報4があるのは、コーディング方法や
コンパイラ展開によっては飛び先が同一となることがあ
るためである。
【0029】次にリカバトラップ命令について説明す
る。第1に、ステップ実行用のリカバトラップ命令関数
にて、ステップ情報設定済の場合、ステップ情報のブレ
ーク設定アドレスへステップ情報の命令元データを書き
込む(リカバする)。この場合、図9(B)に示すよう
にセットトラップ命令とは逆にステップ情報の末尾よ
り、ステップ用トラップ設定をMAX分繰り返し処理を
行う。これは、セットトラップ命令時に、重複してブレ
ーク設定アドレスへトラップ命令が書き込まれている場
合があるためである。
【0030】また、本デバッガの他機能(ソフトウェア
ブレーク)との競合対処として、ステップ用トラップ命
令リカバとソフトブレーク用トラップ命令リカバを同時
期に行う場合は、ステップ用トラップ命令リカバを先に
行う。これはステップ用とソフトブレーク用トラップ命
令が重複してブレーク設定アドレスへ書き込まれている
場合、必ず先にソフトブレーク用トラップ命令がセット
されているためである。
【0031】次にステップ実行のための次命令の予測に
ついて説明する。ここでは、プログラムカウンタPCの
指示する命令を分析することにより、3種類の命令予測
パターンに分類する。図10(A)に示す1ポイント命
令予測パターンの場合、ネクストプログラムカウンタn
PCをそのまま、次命令が実行命令とする。図10
(B)に示す2ポイント命令予測パターンの場合、ネク
ストプログラムカウンタnPCと飛び先ポイントを分析
し、2ポイントを予測実行命令とする。図10(C)に
示す3ポイント命令予測パターンの場合、ネクストプロ
グラムカウンタnPCと2飛び先ポイントを分析し3ポ
イントを予測実行命令とする。
【0032】図10(A),(B),(C)では*印付
き矢印を付した命令が飛び先ポイントを示している。こ
のように、ネクストプログラムカウンタnPCの値を使
用することにより、次命令アドレスを高速に求めること
ができる。また、プログラムカウンタが分岐命令を指示
するとき、前記分岐命令を命令解析して前記ステップ実
行のブレーク命令を埋め込む命令のアドレスを算出する
ため、ネクストプログラムカウンタで指示される次命令
アドレス以外の次命令アドレスが存在する分岐命令にお
いても全ての次命令アドレスを知ってステップ実行のブ
レーク命令を埋め込むことができる。
【0033】更に、ブレーク命令の実行後、ブレーク命
令設定アドレスに埋め込み前の元の命令を書き込むた
め、デバッグ対象のユーザプログラムのステップ実行を
行った後、ユーザプログラムを元の状態に戻すことがで
きる。デバッグ対象となるユーザプログラムで使用され
る命令について説明する。分岐命令は図11に示す構成
であり、第30,31ビットのオペランドコードop
と、第22〜24ビットのオペランドコードop2とで
分岐命令の種類を表わす。第29ビットのアナルビット
aは値0で遅延命令随時実行、値1で条件付き分岐の場
合以外は遅延命令非実行を表わす。第25〜28ビット
のコンディションコードcondは値0000又は10
00で無条件分岐命令、それ以外の値で条件分岐命令を
表わす。第0〜21ビットのdisp22はプログラム
カウンタからの相対アドレスを表わす。
【0034】遅延命令(NOP命令)はアナルビットa
の値、及び指定された条件が真か否かにより図12に示
す通りに実行/非実行が決定される。なお、上記のNO
P命令はコンパイルにより自動的に生成される。SPA
RCプロセッサではジャンプ命令(分岐命令)の後は必
ずNOP命令を付けなければならないことになってい
る。これはCPUのパイプライン制御のためである。
【0035】プログラムカウンタPCが分岐命令を示す
とき、その分岐命令がa=0で遅延命令実行(条件付き
及び、無条件)のときネクストプログラムカウンタnP
Cより分岐先にトラップ命令を埋め込む。また、a=1
で遅延命令実行(条件付き成立)のときネクストプログ
ラムカウンタnPCより分岐先にトラップ命令を埋め込
む。また、a=1で遅延命令非実行(条件付き不成立及
び、無条件不成立)のときプログラムカウンタ+8の分
岐先にトラップ命令を埋め込む。また、a=1で遅延命
令非実行(無条件成立)のときdisp22より分岐ア
ドレスを算出し、トラップ命令を埋め込む。(プログラ
ムカウンタ+4×disp22) 図13は埋め込み型デバッガで実行する分岐先解析処理
のフローチャートを示す。同図中、ステップS50でス
テップ情報(トラップセット)の第1ブレーク情報の設
定状態フラグをオンとし、ステップS51で第1ブレー
ク情報の設定アドレスにネクストプログラムカウンタn
PCの値を設定する。次にステップS52でプログラム
カウンタPCの指すアドレスより1ワードを読み込み、
ステップS53で分岐命令の判定を行い、分岐命令であ
れば第2ブレーク情報の設定状態フラグをオンとする。
次にステップS55で第2ブレーク情報の設定アドレス
にプログラムカウンタPC+8を設定し(1命令が4バ
イトなのでPCの指す命令から2つ先の命令のアドレ
ス)、ステップS56で第3ブレーク情報の設定状態フ
ラグをオンとする。
【0036】次にステップS57でdisp22の正/
負判定を行い、負の場合はdisp22の値の2の補数
を求め、ステップS58で分岐アドレスを算出して(P
C−4×2の補数のdisp22)第3ブレーク情報の
設定アドレスに設定する。またdisp22が正の場合
はステップS59で分岐アドレスを算出して(PC+4
×disp22)第3ブレーク情報の設定アドレスに設
定する。
【0037】コール命令は図14に示す構成で、第3
0,31ビットのオペランドコードopは値01に固定
されている。第0〜第29ビットのdisp30はコー
ル実行時のプログラムカウンタからの相対アドレスを表
わす。コール命令のデバッグは基本的にステップ実行処
理を行うが、例えば既知の関数等のようにコール命令自
体をデバッグする必要のない場合には、前命令がコール
である場合にコール命令よりの戻りアドレスを取得して
セーブし、ブレーク命令を戻りアドレスに埋め込み実行
させることでステップアラウンド実行(コール命令内は
ステップ実行しない)を行う。
【0038】ステップ実行のセットトラップ命令処理に
て、ステップアラウンド実行の場合、前命令がコール命
令である時は、戻りアドレスにブレーク命令を埋め込
む。但し、コール先がデータ集合体(構造体)を返却す
る場合は、呼び戻す関数へのコール命令に後続する遅延
命令後に未実装命令が設定されているため、戻りアドレ
ス取得に関しては考慮しなければならない。
【0039】未実装命令は図15に示す構成で、第3
0,31ビットのオペランドコードopが値00,か
つ、第22〜24ビットのオペランドコードop2が値
000である。第0〜21ビットのdisp22は呼出
し元が期待する構造体のサイズである。図16は埋め込
み型デバッガで実行するコール命令解析処理(ステップ
アラウンド実行)のフローチャートを示す。同図中、ス
テップS62でプログラムカウンタPCの指すアドレス
より1ワードを読み込み、ステップS63でコール命令
の判定を行い、コール命令であれば第2ブレーク情報の
設定状態フラグをオンとする。次にステップS65で第
2ブレーク情報の設定アドレスにプログラムカウンタP
C+8を設定し(1命令が4バイトなのでPCの指す命
令から2つ先の命令のアドレス)、ステップS56で第
3ブレーク情報の設定状態フラグをオンとする。
【0040】次にステップS67でdisp30の正/
負判定を行い、負の場合はdisp30の値の2の補数
を求め、ステップS68で分岐アドレスを算出して(P
C−4×2の補数のdisp30)第3ブレーク情報の
設定アドレスに設定する。またdisp30が正の場合
はステップS69で分岐アドレスを算出して(PC+4
×disp30)第3ブレーク情報の設定アドレスに設
定する。
【0041】次にステップS70でステップ情報からス
テップアラウンド実行判定を行い、ステップアラウンド
実行中であればステップS71で前命令を判定する。こ
の結果、前命令がコール命令のときはステップS72に
進んで次命令が未実装命令かどうかを判定し、未実装命
令ならばステップS73で第2ブレーク情報の設定状態
フラグをオンとし、ステップS74で第2ブレーク情報
の設定アドレスにPC+8(PCの指す命令から2つ先
の命令)を設定する。一方、未実装命令以外の場合には
ステップS75で第2ブレーク情報の設定状態フラグを
オンとし、ステップS76で第2ブレーク情報の設定ア
ドレスにPC+4(PCの指す命令の次の命令)を設定
する。
【0042】
【発明の効果】上述の如く、請求項1に記載の発明は、
CPUの複数の割込み夫々のレベルに応じてアクセスさ
れ、前記レベルに応じた割込みベクタを読み出すトラッ
プテーブルと、別バスサイクルにより前記レベル内の割
込み番号を得る割込み番号取得手段と、前記トラップテ
ーブルから読み出された割込みベクタと、前記割込み番
号取得手段で得た割込み番号とからアドレステーブルを
アクセスするアドレスを求めるアドレス演算手段と、複
数の割込み夫々の種類に応じた割込みルーチンのアドレ
スを登録されており、前記アドレス演算手段で求められ
たアドレスでアクセスされるアドレステーブルとを有す
る。
【0043】このように、割込みのレベルに応じた割込
みベクタと、各レベルの割込み番号とからアドレステー
ブルのアドレスを算出し、各割込みに対応する割込みル
ーチンのアドレスを得るため、外部割込み数を上記割込
みのレベル数以上に増加でき、そのための外付け装置が
不要となり装置のコスト上昇を抑制できる。また、請求
項2に記載の発明は、複数のウインドウから構成され、
カレントウインドウポインタによって使用するウインド
ウを指示されるウインドウレジスタを有するCPUで動
作するプログラムをデバッグするデバッガであって、前
記デバッガの起動による割込み時に前記カレントウイン
ドウポインタの値を前記割込み前の状態に戻すポインタ
補正手段を有する。
【0044】このため、デバッガ起動割込みによりデバ
ッグ対象のユーザプログラムを停止させたとき、割込み
直前のカレントウインドウポインタ値を知ることがで
き、ユーザプログラムで使用していたウインドウの内容
を認識でき、デバッグが可能となる。また、請求項3に
発明は、請求項2記載のデバッガにおいて、前記デバッ
ガの起動による割込み時に動作モードを前記割込み前の
状態に戻すモード補正手段を有する。
【0045】このため、デバッガ起動割込みによりデバ
ッグ対象のユーザプログラムを停止させたとき、CPU
の動作モードをユーザプログラムの動作時の状態に戻す
ことができ、割込みを終了した後、ユーザプログラムを
再び動作させることが可能となる。また、請求項4に記
載の発明は、プログラムカウンタ及びネクストプログラ
ムカウンタを有するCPUで動作するプログラムをデバ
ッグするデバッガであって、前記ネクストプログラムカ
ウンタが指示する次命令アドレスにステップ実行のブレ
ーク命令を埋め込むブレーク命令埋め込み手段を有す
る。
【0046】このため、ハード的なステップ実行機能を
持たないCPUでソフト的にステップ実行を行うことが
でき、その際に次命令アドレスを高速に知ることができ
るためステップ実行を高速に行うことができる。また、
請求項5に記載の発明は、請求項4記載のデバッガにお
いて、前記プログラムカウンタが分岐命令を指示すると
き、前記分岐命令を命令解析して前記ステップ実行のブ
レーク命令を埋め込む命令のアドレスを算出する命令解
析手段を有する。
【0047】このため、ネクストプログラムカウンタで
指示される次命令アドレス以外の次命令アドレスが存在
する分岐命令においても全ての次命令アドレスを知って
ステップ実行のブレーク命令を埋め込むことができる。
また、請求項6に記載の発明は、請求項4又は5記載の
デバッガにおいて、前記ブレーク命令の実行後、前記ブ
レーク命令設定アドレスに埋め込み前の元の命令を書き
込む復元手段を有する。
【0048】このため、デバッグ対象のユーザプログラ
ムのステップ実行を行った後、ユーザプログラムを元の
状態に戻すことができる。
【図面の簡単な説明】
【図1】本発明の拡張割込み制御方式の構成図である。
【図2】トラップテーブルを示す図である。
【図3】アドレステーブルを示す図である。
【図4】内部トラップ制御ルーチンのフローチャートで
ある。
【図5】外部トラップ制御ルーチンのフローチャートで
ある。
【図6】埋め込み型デバッガの動作説明図である。
【図7】割込み補正処理の処理シーケンス図である。
【図8】割込み補正処理の説明図である。
【図9】ステップ情報を示す図である。
【図10】命令予測パターンを示す図である。
【図11】分岐命令の構成を示す図である。
【図12】遅延命令の実行条件を示す図である。
【図13】分岐先解析処理のフローチャートである。
【図14】コール命令の構成を示す図である。
【図15】未実装命令の構成を示す図である。
【図16】コール命令解析処理のフローチャートであ
る。
【図17】RISC型CPUの機能ブロック図である。
【図18】ウインドウレジスタの構成を説明するための
図である。
【符号の説明】
10 RISC型CPU 12 割込み機能ブロック 14 割込みベクタ 16 プログラム制御ブロック 20 トラップテーブル 22 アドレステーブル 24 サブ割込みベクタレジスタ
フロントページの続き (72)発明者 佐藤 和広 北海道札幌市厚別区下野幌テクノパーク1 丁目1番5号 富士通北海道通信システム 株式会社内 (72)発明者 佐藤 秀俊 北海道札幌市厚別区下野幌テクノパーク1 丁目1番5号 富士通北海道通信システム 株式会社内 (72)発明者 田平 文明 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 CPUの複数の割込み夫々のレベルに応
    じてアクセスされ、前記レベルに応じた割込みベクタを
    読み出すトラップテーブルと、 別バスサイクルにより前記レベル内の割込み番号を得る
    割込み番号取得手段と、 前記トラップテーブルから読み出された割込みベクタ
    と、前記割込み番号取得手段で得た割込み番号とからア
    ドレステーブルをアクセスするアドレスを求めるアドレ
    ス演算手段と、 複数の割込み夫々の種類に応じた割込みルーチンのアド
    レスを登録されており、前記アドレス演算手段で求めら
    れたアドレスでアクセスされるアドレステーブルとを有
    することを特徴とするCPUの拡張割込み制御方式。
  2. 【請求項2】 複数のウインドウから構成され、カレン
    トウインドウポインタによって使用するウインドウを指
    示されるウインドウレジスタを有するCPUで動作する
    プログラムをデバッグするデバッガであって、 前記デバッガの起動による割込み時に前記カレントウイ
    ンドウポインタの値を前記割込み前の状態に戻すポイン
    タ補正手段を有することを特徴とするデバッガ。
  3. 【請求項3】 請求項2記載のデバッガにおいて、 前記デバッガの起動による割込み時に動作モードを前記
    割込み前の状態に戻すモード補正手段を有することを特
    徴とするデバッガ。
  4. 【請求項4】 プログラムカウンタ及びネクストプログ
    ラムカウンタを有するCPUで動作するプログラムをデ
    バッグするデバッガであって、 前記ネクストプログラムカウンタが指示する次命令アド
    レスにステップ実行のブレーク命令を埋め込むブレーク
    命令埋め込み手段を有することを特徴とするデバッガ。
  5. 【請求項5】 請求項4記載のデバッガにおいて、 前記プログラムカウンタが分岐命令を指示するとき、前
    記分岐命令を命令解析して前記ステップ実行のブレーク
    命令を埋め込む命令のアドレスを算出する命令解析手段
    を有することを特徴とするデバッガ。
  6. 【請求項6】 請求項4又は5記載のデバッガにおい
    て、 前記ブレーク命令の実行後、前記ブレーク命令設定アド
    レスに埋め込み前の元の命令を書き込む復元手段を有す
    ることを特徴とするデバッガ。
JP9217833A 1997-08-12 1997-08-12 Cpuの拡張割込み制御方式及びそのcpuで使用するデバッガ Withdrawn JPH1165881A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9217833A JPH1165881A (ja) 1997-08-12 1997-08-12 Cpuの拡張割込み制御方式及びそのcpuで使用するデバッガ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9217833A JPH1165881A (ja) 1997-08-12 1997-08-12 Cpuの拡張割込み制御方式及びそのcpuで使用するデバッガ

Publications (1)

Publication Number Publication Date
JPH1165881A true JPH1165881A (ja) 1999-03-09

Family

ID=16710472

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9217833A Withdrawn JPH1165881A (ja) 1997-08-12 1997-08-12 Cpuの拡張割込み制御方式及びそのcpuで使用するデバッガ

Country Status (1)

Country Link
JP (1) JPH1165881A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001125800A (ja) * 1999-09-10 2001-05-11 Sun Microsyst Inc 選択したスタックフレームのプログラムカウンタの変更による関連するスレッドグループの終了
KR100337149B1 (ko) * 2000-07-05 2002-05-18 권 기 홍 프로그램 테스트 및 디버깅이 용이한 중앙처리장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001125800A (ja) * 1999-09-10 2001-05-11 Sun Microsyst Inc 選択したスタックフレームのプログラムカウンタの変更による関連するスレッドグループの終了
KR100337149B1 (ko) * 2000-07-05 2002-05-18 권 기 홍 프로그램 테스트 및 디버깅이 용이한 중앙처리장치

Similar Documents

Publication Publication Date Title
JP4718901B2 (ja) 命令実行装置、デバッグ方法、デバッグ装置及びデバッグプログラム
US6915416B2 (en) Apparatus and method for microcontroller debugging
US4635193A (en) Data processor having selective breakpoint capability with minimal overhead
US5621886A (en) Method and apparatus for providing efficient software debugging
JP2005317023A (ja) データ処理装置のブレークポイント論理ユニット、デバッグ論理、およびブレークポイントの方法
US6141791A (en) Debug aid device, program compiler device, storage medium storing computer-readable debugger program, and storage medium storing program compiler program
JPS62197830A (ja) デ−タ処理システム
US6957421B2 (en) Providing debugging capability for program instrumented code
EP0123337A2 (en) A method and apparatus for coordinating execution of an instruction by a coprocessor
JPH1165881A (ja) Cpuの拡張割込み制御方式及びそのcpuで使用するデバッガ
JP3892873B2 (ja) プログラマブルコントローラ
US5963725A (en) Simulation system and method for microcomputer program
WO2024069730A1 (ja) デバッグ装置及びデバッグ方法
JPH07253909A (ja) マイクロプログラム検証方法
EP0569987A1 (en) Microprocessor incorporating cache memory enabling efficient debugging
JP2000250779A (ja) プログラマブルコントローラ
JP3270729B2 (ja) 拡張命令セット・シミュレータ
EP0525672A2 (en) Microprocessor with program tracing
JPH07200352A (ja) データプロセッサ、プログラム翻訳方法、及びデバッグツール
JPS6042968B2 (ja) 情報処理装置
JPH0535499A (ja) データ処理装置及びデータ処理方法
CA1223079A (en) Data processor having selective breakpoint capability with minimal overhead
JP2002163126A (ja) デバッグ用cpuに内蔵のイベント検出回路、イベント検出方法および外部周辺回路
JP3716635B2 (ja) 情報処理装置、及びその割込み制御方法
JPS63271542A (ja) Romデバツガ

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20041102