(57)【要約】【課題】ブレーク状態から復帰するときにフラッシュメモリに対する消去／書き込み回数を削減することが可能なプロセッサを提供すること。【解決手段】命令デコーダ２４は、フェッチした命令をデコードする。制御部２５は、命令デコーダ２４によるデコード結果に応じてプロセッサ１１の制御を行なう。プロセッサ１１がブレーク状態のときに、命令デコーダ２４によって割り込み復帰命令がデコードされると、命令置換部２６は、制御部２５による制御に応じて、フェッチされた復帰先命令をスタックに退避される本来命令に置換して命令デコーダ２４にデコードさせる。したがって、フラッシュメモリに対する消去／書き込み回数を削減することが可能となる。【選択図】図２
2013137707.tif 000002
【特許請求の範囲】
【請求項１】
ブレーク命令を実行したときに割り込みが発生してブレーク状態に遷移するプロセッサであって、
フェッチした命令をデコードするデコード手段と、
前記デコード手段によるデコード結果に応じて前記プロセッサの制御を行なう制御手段と、
前記プロセッサがブレーク状態のときに、前記デコード手段によって割り込み復帰命令がデコードされると、前記制御手段による制御に応じて、フェッチされた復帰先命令をスタックに退避される本来命令に置換して前記デコード手段にデコードさせる置換手段とを含む、プロセッサ。
【請求項２】
前記置換手段は、前記本来命令を保持する保持手段を含み、
前記制御手段は、前記デコード手段によって前記割り込み復帰命令がデコードされたときに、前記スタックからプログラムカウンタの値を復帰させ、前記スタックからプログラムステータスワードの値を復帰させた後に、前記置換手段に前記スタックから取得した前記本来命令を前記保持手段に保持させ、前記置換手段は、フェッチされた復帰先命令を前記保持手段に保持した前記本来命令に置換する、請求項１記載のプロセッサ。
【請求項３】
前記置換手段は、前記本来命令を保持する保持手段を含み、
前記制御手段は、前記デコード手段によって前記割り込み復帰命令がデコードされたときに、前記スタックからプログラムステータスワードの値を復帰させ、前記スタックからプログラムカウンタの値を復帰させた後に、前記置換手段に前記スタックから取得した前記本来命令を前記保持手段に保持させ、前記置換手段は、フェッチされた復帰先命令を前記保持手段に保持した前記本来命令に置換する、請求項１記載のプロセッサ。
【請求項４】
前記制御手段は、前記デコード手段によって前記割り込み復帰命令がデコードされたときに、前記置換手段に前記スタックから取得した前記本来命令を前記保持手段に保持させ、前記置換手段が、フェッチされた復帰先命令を前記保持手段に保持した前記本来命令に置換した後、前記制御手段が、前記スタックからプログラムステータスワードの値を復帰させ、前記スタックからプログラムカウンタの値を復帰させる、請求項１記載のプロセッサ。
【請求項５】
ブレーク命令を実行したときに割り込みが発生してブレーク状態に遷移するプロセッサを含んだシステムをデバッグするデバッグ装置であって、
前記デバッグ装置は、前記割り込みが発生したときに前記プロセッサがスタックに退避させたプログラムカウンタおよびプログラムステータスワードに対応して、本来命令を前記スタックに退避させる本来命令退避手段を含み、
前記プロセッサは、フェッチした命令をデコードするデコード手段と、
前記デコード手段によるデコード結果に応じて前記プロセッサの制御を行なう制御手段と、
前記プロセッサがブレーク状態のときに、前記デコード手段によって割り込み復帰命令がデコードされると、前記制御手段による制御に応じて、フェッチされた復帰先命令を前記スタックに退避される前記本来命令に置換して前記デコード手段にデコードさせる置換手段とを含む、デバッグ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサが実行するプログラムなどをデバッグするための技術に関し、特に、ソフトウェアブレーク（以下、Ｓ／Ｗブレークと略す。）を実現するための機能を備えたプロセッサおよびそれを用いたデバッグ装置に関する。
【背景技術】
【０００２】
近年、ＣＰＵ（Central Processing Unit）の高機能化、多機能化が進み、それをデバッグするための様々なデバッグ機能が開発されている。そのデバッグ機能の１つとして、Ｓ／Ｗブレーク機能を挙げることができる。
【０００３】
Ｓ／Ｗブレーク機能は、ブレークポイントである指定アドレスの本来命令をブレーク用命令に書き換えることによって実現される。デバッグ対象のＣＰＵがプログラムを実行しているときに、指定アドレスのブレーク命令を実行すると割り込みが発生し、ＣＰＵがブレーク状態に遷移する。なお、ここで本来命令とは、プログラムの元の命令を指すものとする。
【０００４】
Ｓ／Ｗブレークポイントを解除せずにＣＰＵがプログラムの実行を再開する場合、まず指定アドレスのブレーク命令を本来命令に書き戻す。そして、ＣＰＵが本来命令をステップ実行した後、指定アドレスの本来命令を再度ブレーク命令に書き換え、ＣＰＵが次命令以降の命令実行を再開する。これに関連する技術として、下記の特許文献１および特許文献２に開示された発明がある。
【０００５】
特許文献１は、モニタープログラムを簡単化することができるインサーキットエミュレータ装置およびインサーキットエミュレーション方法を提供することを目的とする。モニタープログラムを格納するエミュレーションメモリと、ブレークが発生したエミュレーションメモリのアドレスに元々格納されていたユーザープログラムの本来の命令を格納するためのレジスタと、切替信号に応じて、エミュレーションメモリの出力およびレジスタの出力のいずれか一方を選択出力するマルチプレクサと、モニタープログラムからユーザープログラムに復帰した後の最初の命令として、ブレークが発生したアドレスに置換されているブレークを発生する命令の代わりに、ユーザープログラムの本来の命令を出力するように制御する切替信号を生成するコントロール回路とを有する。
【０００６】
特許文献２は、オフライン状態で動作するプログラムのデバッグを行う場合に、ハードウェアを操作することなく、会話形式でデバッグを行い、デバッグ作業を簡易化することを目的とする。デバッグプログラムと被デバッグプログラムをリンクし、被デバッグプログラム内の任意のブレイクポイントからブレイク手段へジャンプすることで被デバッグプログラムからデバッグプログラムへ制御を移し、コマンド入力解析手段において入力待ちすることでブレイクポイントホルトを実現する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１０−０１１３１５号公報
【特許文献２】特開平０４−３３２０４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
Ｓ／Ｗブレークポイントがフラッシュメモリに設定されている場合、ブレーク命令から本来命令への書き戻しのためのブロック単位での消去／書き換え、および本来命令からブレーク命令への書き換えのためのブロック単位での消去／書き換えが必要となり、操作上の反応が遅くなるといった問題点があった。
【０００９】
また、フラッシュメモリは消去／書き込み回数に制限がある。そのため、上述のように消去／書き換えが頻繁に行なわれると、フラッシュメモリの寿命が短くなるといった問題点もあった。
【００１０】
本発明は、上記問題点を解決するためになされたものであり、その目的は、ブレーク状態から復帰するときにフラッシュメモリに対する消去／書き込み回数を削減することが可能なプロセッサおよびそれを用いたデバッグ装置を提供することである。
【課題を解決するための手段】
【００１１】
本発明の一実施例によれば、ブレーク命令を実行したときに割り込みが発生してブレーク状態に遷移するプロセッサが提供される。命令デコーダは、フェッチした命令をデコードする。制御部は、命令デコーダによるデコード結果に応じてプロセッサの制御を行なう。プロセッサがブレーク状態のときに、命令デコーダによって割り込み復帰命令がデコードされると、命令置換部は、制御部による制御に応じて、フェッチされた復帰先命令をスタックに退避される本来命令に置換して命令デコーダにデコードさせる。
【発明の効果】
【００１２】
本発明の一実施例によれば、命令置換部が、制御部による制御に応じて、フェッチされた復帰先命令をスタックに退避される本来命令に置換して命令デコーダにデコードさせるので、フラッシュメモリに対する消去／書き込み回数を削減することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態におけるプロセッサを含んだユーザシステムをデバッグするためのデバッグ装置を含んだシステムの構成例を示す図である。
【図２】本発明の実施の形態におけるＣＰＵ１１の内部構成を説明するためのブロック図である。
【図３】本発明の実施の形態におけるＣＰＵ１１が指定命令付き割り込み復帰命令を実行したときの動作を説明するための図である。
【図４】本発明の実施の形態におけるＣＰＵ１１を含んだシステムのＳ／Ｗブレーク機能を説明するための図である。
【図５】ＣＰＵ１１による命令実行がＳ／Ｗブレークポイントに到達したときの動作（その１）を説明するための図である。
【図６】ＣＰＵ１１による命令実行がＳ／Ｗブレークポイントに到達したときの動作（その２）を説明するための図である。
【図７】ＣＰＵ１１による命令実行がＳ／Ｗブレークポイントに到達したときの動作（その３）を説明するための図である。
【図８】本発明の実施の形態におけるＣＰＵ１１のブレーク命令による割り込み発生時の動作を説明するための図である。
【図９】ＣＰＵ１１がブレーク状態から実行再開するときの処理を説明するための図である。
【図１０】本発明の実施の形態におけるＣＰＵ１１が指定命令付き割り込み復帰命令を実行するときの処理を説明するための図である。
【図１１】本発明の実施の形態におけるＣＰＵ１１がデバッガ装置から指示された処理を行なうときの動作（その１）を説明するための図である。
【図１２】本発明の実施の形態におけるＣＰＵ１１がデバッガ装置から指示された処理を行なうときの動作（その２）を説明するための図である。
【図１３】本発明の実施の形態におけるＣＰＵ１１がデバッガ装置から指示された処理を行なうときの動作（その３）を説明するための図である。
【図１４】本発明の実施の形態におけるＣＰＵ１１がデバッガ装置から指示された処理を行なうときの動作（その４）を説明するための図である。
【図１５】本発明の実施の形態におけるＣＰＵ１１が指定命令付き割り込み復帰命令をフェッチして実行する時の全体動作を説明するための図である。
【発明を実施するための形態】
【００１４】
図１は、本発明の実施の形態におけるプロセッサを含んだユーザシステムをデバッグするためのデバッグ装置の構成例を示す図である。このシステムは、ホストマシン１と、エミュレータ２と、ユーザシステム３とを含む。また、ユーザシステム３は、コンピュータシステムの１つであって、デバッグ対象のＣＰＵ１１と、デバッグ制御回路１２と、ＲＡＭ１３と、フラッシュメモリ（以下、単にＲＯＭと呼ぶ。）１４とを含み、バス１５を介してこれらが接続されている。
【００１５】
ホストマシン１は、ＰＣ（Personal Computer）などのコンピュータ装置であり、ユーザシステム３のデバッグを支援するためのプログラム（デバッガ）を実行する。このデバッガは、操作者が対話的にユーザシステム３内のプログラムの実行を制御したり、ＣＰＵ１１内のレジスタ値や、ＲＡＭ１３、ＲＯＭ１４などのメモリ内容を変更したりする機能を提供する。
また、デバッガは、ホストマシン１内のＵＳＢ（Universal Serial Bus）などの通信Ｉ／Ｆ（Interface）を介してエミュレータ２と通信を行ない、エミュレータ２と連携して動作する。
【００１６】
エミュレータ２は、コンピュータシステムであるユーザシステム３内のＣＰＵ１１で実行されるプログラムのデバッグ作業に用いられる装置である。エミュレータ２は、ＪＴＡＧ（Joint Test Action Group）などの通信Ｉ／Ｆを介してデバッグ制御回路１２と通信を行ない、ユーザシステム３内のＣＰＵ１１の実行制御、ＣＰＵ１１内部のレジスタ値の取得や変更、ＲＡＭ１３、ＲＯＭ１４などのメモリ内容の取得や変更などのデバッグ機能を制御する。
【００１７】
デバッグ制御回路１２は、エミュレータ２からの制御によって動作し、ＣＰＵ１１の実行制御、ＣＰＵ１１内部のレジスタ値の取得や変更、ＲＡＭ１３、ＲＯＭ１４などのメモリ内容の取得や変更、指定されたアドレスでプログラムの実行を停止させるブレークポイントなどのデバッグ機能を実現する。
【００１８】
ブレークポイントとして、指定アドレスの本来命令をブレーク用命令に置き換えることによってブレークを実現するＳ／Ｗブレーク機能や、アドレスなどの条件を設定する専用レジスタを備えることで実現するＨ／Ｗブレーク機能などがある。
【００１９】
Ｓ／Ｗブレーク機能は、上述のようにブレークポイントのアドレスにある本来命令をブレーク用命令に置き換えることによって実現するものであり、ユーザシステム３内のＣＰＵ１１がプログラムを実行中に、ブレークポイントで置き換えられたブレーク用命令を実行すると割り込みが発生してブレーク状態に遷移する。
【００２０】
なお、本実施の形態においては、エミュレータ２とデバッグ制御回路１２とが存在する場合について説明するが、ＲＯＭ１４の一部にＣＰＵ１１の情報を収集するためのモニタプログラムを予め書き込んでおき、ＵＡＲＴ（Universal Asynchronous Receiver Transmitter）、ＵＳＢなどの通信Ｉ／Ｆを介してモニタプログラムとホストマシン１とが直接通信を行なう方式であってもよい。
【００２１】
図２は、本発明の実施の形態におけるＣＰＵ１１の内部構成を説明するためのブロック図である。このＣＰＵ１１は、アドレスレジスタ２１と、プログラムカウンタ２２と、命令レジスタ２３と、命令デコーダ２４と、制御部２５と、命令置換部２６と、データレジスタ２７と、ＡＬＵ（Arithmetic Logical Unit）２８と、アキュムレータ２９とを含み、クロックパルスに同期して動作を行なう。また、命令置換部２６は、本来命令一時保存レジスタ３０を含む。
【００２２】
アドレスレジスタ２１は、ＣＰＵ１１がメモリやＩ／Ｏ（Input/Output）に対して命令やデータをアクセスする際に用いられるアドレスを保持するレジスタであり、たとえば、命令をフェッチする場合にはプログラムカウンタ２２に格納される値を保持する。
【００２３】
プログラムカウンタ２２は、次に実行する命令のメモリ上のアドレスを格納するものであり、制御部２４によって制御される。
【００２４】
命令レジスタ２３は、図示しない命令フェッチ部によってフェッチされた命令を、制御部２５による制御によって保持するレジスタであり、保持した命令を命令デコーダ２４に転送する。
【００２５】
命令デコーダ２４は、命令レジスタ２３から転送された命令をデコードし、デコード結果を制御部２５に転送する。制御部２５は、命令デコーダ２４によるデコード結果に応じて、ＣＰＵ１１内のＡＬＵ２８、アキュムレータ２９などの各ブロックを制御する。
【００２６】
命令置換部２６は、命令デコーダ２４が後述の「指定命令付き割り込み復帰命令」をデコードしたときに制御部２５から制御信号を受け、スタックから取得した本来命令を本来命令一時保存レジスタに保存する。そして、制御部２５が「指定命令付き割り込み復帰命令」を実行して割り込みから復帰したときに、本来であれば復帰先ＰＣ（プログラムカウンタ）からフェッチされた命令が命令レジスタ２３に記憶されることになるが、命令置換部２６は、命令デコーダ２４によって復帰先命令がデコードされる前に、命令レジスタ２３に記憶される復帰先命令の一部または全部を、本来命令一時保存部３０に記憶した本来命令に置換して命令レジスタ２３に格納する。その結果、ＣＰＵ１１は、「指定命令付き割り込み復帰命令」を実行後に、本来命令を実行することになる。
【００２７】
命令置換部２６は、それ以外の命令置換が不要な場合には、データレジスタ２７に記憶される命令をそのまま命令レジスタ２３に格納する。命令レジスタ２３は、制御部２５から制御信号を受け、データレジスタ２７に記憶される命令または置換部２６によって置換された命令を保持し、命令デコーダ２４にその命令を与えてデコードさせる。
【００２８】
データレジスタ２７は、ＣＰＵ１１がメモリやＩ／Ｏから読み出した命令やデータ、メモリやＩ／Ｏに書き込むデータを一時的に保持するレジスタであり、たとえば命令フェッチの場合にはフェッチされた命令が格納される。
【００２９】
図３は、本発明の実施の形態におけるＣＰＵ１１が指定命令付き割り込み復帰命令を実行したときの動作を説明するための図である。例１は、割り込みから復帰する際に、スタックに退避されている本来命令を指定命令として取得して本来命令一時保存レジスタ３０に格納し、ＳＰ（スタックポインタ）の値を４だけ加算した後にスタックに退避されているＰＳＷ（Program Status Word）を復帰させる。そして、ＳＰの値を４だけ加算した後にスタックに退避されているＰＣを復帰させ、さらにＳＰの値を４だけ加算する。
【００３０】
例２は、割り込みから復帰する際に、スタックに退避されている本来命令を指定命令として取得して本来命令一時保存レジスタ３０に格納し、ＳＰの値を４だけ加算した後にスタックに退避されているＰＣを復帰させる。そして、ＳＰの値を４だけ加算した後にスタックに退避されているＰＳＷを復帰させ、さらにＳＰの値を４だけ加算する。
【００３１】
例３は、割り込みから復帰する際に、スタックに退避されているＰＣを復帰させ、ＳＰの値を４だけ加算した後にスタックに退避されているＰＳＷを復帰させる。そして、さらにＳＰの値を４だけ加算してスタックに退避されている本来命令を指定命令として取得して本来命令一時保存レジスタ３０に格納し、ＳＰの値を４だけ加算する。
【００３２】
例４は、専用レジスタとしてＰＣ退避用レジスタおよびＰＳＷ退避用レジスタを設けた場合を示しており、ＰＣ退避用レジスタの値をＰＣに復帰させ、ＰＳＷ退避用レジスタの値をＰＳＷに復帰させ、さらにスタックに退避されている本来命令を指定命令として取得して本来命令一時保存レジスタ３０に格納し、ＳＰの値を４だけ加算する。
【００３３】
例１〜例４のいずれの場合にも、上述のように、割り込みから復帰後に、ＰＣに設定されているブレーク命令の代わりに、本来命令一時保存レジスタ３０に格納された本来命令が実行されることになる。
【００３４】
図４は、本発明の実施の形態におけるＣＰＵ１１を含んだシステムのＳ／Ｗブレーク機能を説明するための図である。まず、デバッガ操作者がホストマシン１を用いてデバッガにＳ／Ｗブレークポイントを設定する指示を行なうと、デバッガ装置はＳ／Ｗブレークポイント設定アドレスにブレーク命令を埋め込む処理をＣＰＵ１１に指示する。
この指示は、エミュレータ２と、デバッグ制御回路１２またはモニタプログラムとの間の通信Ｉ／Ｆを介して行なわれる。ここで、デバッガ装置とは、ホストコンピュータ１上で動作するエミュレータ制御用ソフトウェア（デバッガ）およびエミュレータ２によって構成されるものとする。
【００３５】
最後に、ＣＰＵ１１はエミュレータ２からの指示に応じて、Ｓ／Ｗブレークポイント設定アドレスの本来命令をブレーク命令に書き換える。
【００３６】
図５〜図７は、ＣＰＵ１１による命令実行がＳ／Ｗブレークポイントに到達したときの動作を説明するための図である。なお、ＰＣの値およびＰＳＷの値が退避される順番はＣＰＵ１１の仕様によって異なる。
図５は、図３の例１の仕様に対応する場合を示している。ＣＰＵ１１が指定アドレスのブレーク命令を実行すると、割り込みが発生してブレーク状態に遷移する。このとき、ＣＰＵ１１は、ＰＣの値をスタックに退避した後にＰＳＷの値をスタックに退避する。
【００３７】
図６は、図３の例２および例３の仕様に対応する場合を示している。ＣＰＵ１１が指定アドレスのブレーク命令を実行すると、割り込みが発生してブレーク状態に遷移する。このとき、ＣＰＵ１１は、ＰＳＷの値をスタックに退避した後にＰＣの値をスタックに退避する。
【００３８】
図７は、図３の例４の仕様に対応する場合を示している。専用レジスタとしてＰＣ退避用レジスタおよびＰＳＷ退避用レジスタが設けられているため、図７（ａ）に示すように、ＰＣの値およびＰＳＷの値はスタックには退避されない。また、図７（ｂ）に示すように、ＰＣの値がＰＣ退避用レジスタに格納され、ＰＳＷの値がＰＳＷ退避用レジスタに格納される。
【００３９】
図８は、本発明の実施の形態におけるＣＰＵ１１のブレーク命令による割り込み発生時の動作を説明するための図である。まず、ＣＰＵ１１がプログラムを順次実行してＳ／Ｗブレークポイントに到達すると、そのアドレスに埋め込まれたブレーク命令を実行して割り込みが発生する。
【００４０】
ＣＰＵ１１は、割り込みが発生するとブレークポイントのＰＣの値とＰＳＷの値とをスタックに退避する。この処理は、図５および図６の場合に対応している。
【００４１】
また、ＣＰＵ１１は、割り込みが発生するとブレークポイントのＰＣの値をＰＣ退避用レジスタに退避し、ＰＳＷの値をＰＳＷ退避用レジスタに退避するようにしてもよい。この処理は、図７の場合に対応している。
【００４２】
次に、ＣＰＵ１１は、割込み処理ルーチンに分岐して、デバッグ制御回路１２によりエミュレータ２からの指示待ち状態となる。また、モニタプログラムによって処理を行なう場合には、割込み処理ルーチンによりエミュレータ２からの指示待ち状態となる。
【００４３】
図９は、ＣＰＵ１１がブレーク状態から実行再開するときの処理を説明するための図である。まず、デバッガ操作者がホストマシン１を用いてデバッガにＣＰＵ１１の実行再開を指示する。
デバッガ装置はＣＰＵ１１に対してＳＰの移動（４だけ減算）を指示し、スタックにＳ／Ｗブレークポイントの本来命令を格納するように指示する。この処理は、図１１、図１２および図１４に対応している。
【００４４】
また、デバッガ装置はＣＰＵ１１に対してスタックに退避されているＰＣの値およびＰＳＷの値をスタック内でコピーするように指示し、スタックにＳ／Ｗブレークポイントの本来命令を格納するように指示し、ＳＰの移動（４だけ減算）を指示するようにしてもよい。この処理は、図１３に対応している。
【００４５】
ＣＰＵ１１は、デバッグ装置から指示を受けると、その指示に対応する処理を行なう。これらの処理は、図１１〜図１４を用いて後述する。
【００４６】
次に、デバッグ装置がＣＰＵ１１に対して指定命令付き割り込み復帰命令の実行を指示すると、ＣＰＵ１１は、指示された指定命令付き割り込み復帰命令を実行する。この処理は、図１０および図１５を用いて後述する。
【００４７】
最後に、ＣＰＵ１１は、プログラムの以降の命令を順次実行する。
図１０は、本発明の実施の形態におけるＣＰＵ１１が指定命令付き割り込み復帰命令を実行するときの処理を説明するための図である。まず、ＣＰＵ１１は、スタックから本来命令、復帰先ＰＣ値およびＰＳＷ値を取得する。この処理は、図３の例１、例２および例３に対応している。
【００４８】
また、ＣＰＵ１１は、スタックから本来命令のみを取得するようにしてもよい。この処理は、図３の例４に対応している。
【００４９】
次に、取得した本来命令が本来命令一時保存レジスタ３０に保存された後、スタックから取得したＰＣ値およびＰＳＷ値でＰＣおよびＰＳＷを復帰する。この処理は、図３の例１、例２および例３に対応している。
【００５０】
また、取得した本来命令が本来命令一時保存レジスタ３０に保存された後、ＰＣ退避用レジスタおよびＰＳＷ退避用レジスタから取得したＰＣ値およびＰＳＷ値でＰＣおよびＰＳＷを復帰するようにしてもよい。この処理は、図３の例４に対応している。
【００５１】
次に、復帰先ＰＣから命令をフェッチする。このとき、ブレーク命令を含んだまま命令がフェッチされるので、命令置換部２６がフェッチした命令を本来命令一時保存レジスタ３０に保存される本来命令に置き換える。
【００５２】
次に、命令デコーダ２４は、命令置換部２６によって置換された本来命令をデコードし、制御部２５が本来命令を実行する。
【００５３】
図１１〜図１４は、本発明の実施の形態におけるＣＰＵ１１がデバッガ装置から指示された処理を行なうときの動作を説明するための図である。なお、本来命令が退避されるアドレスはＣＰＵ１１の仕様によって異なる。
【００５４】
図１１は、図３の例１の仕様に対応する場合を示している。ＣＰＵ１１は、ＳＰの移動（４だけ減算）を行ない、スタックにＳ／Ｗブレークポイントの本来命令を格納する。なお、再開ＰＣおよびＰＳＷは、ＣＰＵ１１が割り込み発生時に退避させたものである。
【００５５】
図１２は、図３の例２の仕様に対応する場合を示している。ＣＰＵ１１は、ＳＰの移動（４だけ減算）を行ない、スタックにＳ／Ｗブレークポイントの本来命令を格納する。なお、ＰＳＷおよび再開ＰＣは、ＣＰＵ１１が割り込み発生時に退避させたものである。
【００５６】
図１３は、図３の例３の仕様に対応する場合を示している。ＣＰＵ１１は、４だけ減算したアドレスに再開ＰＣの値をコピーし、さらに４だけ減算したアドレスにＰＳＷの値をコピーし、元のＰＳＷがあったアドレスにＳ／Ｗブレークポイントの本来命令を格納し、ＳＰの移動（４だけ減算）を行なう。
【００５７】
図１４は、図３の例４の仕様に対応する場合を示している。ＣＰＵ１１は、ＳＰの移動（４だけ減算）を行ない、スタックにＳ／Ｗブレークポイントの本来命令を格納する。なお、再開ＰＣおよびＰＳＷは、ＰＣ退避用レジスタおよびＰＳＷ退避用レジスタに退避されている。
【００５８】
図１５は、本発明の実施の形態におけるＣＰＵ１１が指定命令付き割り込み復帰命令をフェッチして実行する時の全体動作を説明するための図である。まず、ＣＰＵ１１が指定命令付き割り込み復帰命令（図１５においては発明命令と記載する。）をフェッチすると、命令デコーダ２４が指定命令付き割り込み復帰命令をデコードし、制御部２５が指定命令付き割り込み復帰命令の実行を開始する。
【００５９】
このとき、制御部２５は、メモリアクセスによってスタックから本来命令、ＰＣ値およびＰＳＷ値を取得し、本来命令を本来命令一時保存レジスタ３０に保存し、復帰ＰＳＷをＰＳＷに設定し、復帰先ＰＣをＰＣに設定する。この処理は、図３の例１〜例３に対応している。
【００６０】
また、制御部２５は、メモリアクセスによってスタックから本来命令を取得して本来命令一時保存レジスタに保存し、ＰＳＷ退避用レジスタから復帰ＰＳＷを取得してＰＳＷに設定し、ＰＣ退避用レジスタから復帰先ＰＣを取得してＰＣに設定するようにしてもよい。この処理は、図３の例４に対応している。
【００６１】
次に、ＣＰＵ１１が復帰先ＰＣの命令をフェッチすることになるが、この命令にはブレーク命令が含まれているため、命令置換部２６は、ブレーク命令を本来命令一時保存レジスタ３０に保存される本来命令に置換して命令レジスタ２３に格納する。
【００６２】
命令デコーダ２４が命令レジスタ２３に格納される本来命令をデコードすると、制御部２５は、本来命令の実行を開始する。
【００６３】
以上説明したように、本実施の形態におけるＣＰＵ１１によれば、指定命令付き割り込み復帰命令を実行するときに、スタックに退避される本来命令を本来命令一時保存レジスタ３０に格納し、ブレーク命令を含んだ復帰先ＰＣ値の命令を本来命令に置換するようにしたので、フラッシュメモリのブロック単位での消去／書き換えが不要となり、操作上の反応が遅くなるといった問題点を解消することが可能となった。
【００６４】
また、フラッシュメモリのブロック単位での消去／書き換えが不要となるため、フラッシュメモリの寿命が短くなるといった問題点を防止することが可能となった。
【００６５】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００６６】
１  ホストマシン、２  エミュレータ、３  ユーザシステム、１１  ＣＰＵ、１２  デバッグ制御回路、１３  ＲＡＭ、１４  ＲＯＭ、１５  バス、２１  アドレスレジスタ、２２  プログラムカウンタ、２３  命令レジスタ、２４  命令デコーダ、２５  制御部、２６  命令置換部、２７  データレジスタ、２８  ＡＬＵ、２９  アキュムレータ、３０  本来命令一時保存レジスタ。
【図１】
2013137707.tif 000003
【図２】
2013137707.tif 000004
【図３】
2013137707.tif 000005
【図４】
2013137707.tif 000006
【図５】
2013137707.tif 000007
【図６】
2013137707.tif 000008
【図７】
2013137707.tif 000009
【図８】
2013137707.tif 000010
【図９】
2013137707.tif 000011
【図１０】
2013137707.tif 000012
【図１１】
2013137707.tif 000013
【図１２】
2013137707.tif 000014
【図１３】
2013137707.tif 000015
【図１４】
2013137707.tif 000016
【図１５】
2013137707.tif 000017