"デバッグ装置を用いて、並列実行境界を意味する特定のビットパターンを各命令のビット領域に備える命令並列実行可能なプロセッサで動作するプログラム中で、並列実行境界で区切られた命令列中のいずれかの命令にブレークポイントを設定させるブレークポイント制御方法であって、ブレークポイントの設定の際に、前記ビットパターンを変更することによって、ブレークポイントの設定対象命令と後続する命令とが並列実行されないよう並列実行境界を追加するブレークポイント設定ステップと前記プログラムを実行させ、前記設定対象命令で実行を停止させ、前記設定対象命令と後続する命令とが並列実行されないよう制御する実行停止制御ステップとを備えたブレークポイント制御方法。並列実行境界を意味する特定のビットパターンを各命令のビット領域に備える命令並列実行可能なプロセッサで動作するプログラム中で、並列実行境界で区切られた命令列中のいずれかの命令にブレークポイントを設定させる、コンピュータをデバッグ装置として機能させるためのブレークポイント制御プログラムであって、ブレークポイントの設定の際に、前記ビットパターンを変更することによって、ブレークポイントの設定対象命令と後続する命令とが並列実行されないよう並列実行境界を追加するブレークポイント設定ステップと前記プログラムを実行させ、前記設定対象命令で実行を停止させ、前記設定対象命令と後続する命令とが並列実行されないよう制御する実行停止制御ステップとを備えたブレークポイント制御プログラム。並列実行境界を意味する特定のビットパターンを各命令のビット領域に備える命令並列実行可能なプロセッサで動作するプログラム中で、並列実行境界で区切られた命令列中のいずれかの命令にブレークポイントを設定するデバッグ装置であって、前記ブレークポイントを設定する際に、前記ビットパターンを変更することによって、ブレークポイントの設定対象命令と後続する命令とが並列実行されないよう並列実行境界を追加する並列実行命令列境界細分化手段と前記プログラムを実行させ、前記設定対象命令で実行を停止させ、前記設定対象命令と後続する命令とが並列実行されないよう制御する実行停止制御手段とを備えたデバッグ装置。従来の技術では静的に並列に実行できる命令を決めるアーキテクチャを持つプロセッサのデバッグ装置において、並列に実行できる命令列の任意の命令にブレークポイントを設定することは以下のいずれかの課題によりできなかった。一番目の課題はプロセッサのアーキテクチャによる制限で論理的に並列に実行できる命令の境界以後、並列境界と略すが例えば、128bit長単位であるなど固定的に決まって分割されている場合。この場合、この命令列中のいずれかの命令をデバッグ割込みを発生させるデバッグ命令に置き換えても、その命令と同一分割単位の他の命令も並列に実行されてしまう。例えば、図9に示すソースプログラムに対し、図10に示す機械語コードが生成されたと仮定する。||は次の行の命令と論理的に並列実行できることを意味している。ここで図9の行番号10の命令にブレークを設定しようとするとデバッグ情報よりアドレス0x80000000が得られ、図11のようにアドレス0x80000000のMOVR1,1||命令がデバッグ命令であるBRK||に置換される。ここで、BRK命令には||が付与されているため、ブレーク成立と同時に後続するMOVR2,2とMOVR3,3命令も論理的に実行される可能性があり、元のソースプログラムにおいては行番号10にブレークを設定したにも関わらず、11、12行目の命令も実行された状態で停止する可能性があるという課題が発生していた。二番目の課題はプロセッサのアーキテクチャによる制限で並列境界が固定ではないが、いくつかのパターンに限定され、任意の命令では指定できない場合。この場合も一番目の課題と同様に、命令列中のいずれかの命令をデバッグ割込みを発生させるデバッグ命令に置き換えても、デバッグ命令に置き換える位置がパターンの制限により並列境界に設定できなかった場合、その命令と同一分割単位の他の命令も並列に実行されてしまう。ここでも同じ例を用いて具体例を説明すると仮に並列境界が2命令か3命令おきにしか設定できないプロセッサの場合、先の例でBRK||命令の||を除去しようとしても、BRK命令だけでは1命令なので、並列境界が設定できないため、解決できない課題が発生していた。上記課題を解決するために、本発明のデバッグ方法は、デバッグ装置を用いて、並列実行境界を意味する特定のビットパターンを各命令のビット領域に備える命令並列実行可能なプロセッサで動作するプログラム中で、並列実行境界で区切られた命令列中のいずれかの命令にブレークポイントを設定させるブレークポイント制御方法であって、ブレークポイントの設定の際に、前記ビットパターンを変更することによって、ブレークポイントの設定対象命令と後続する命令とが並列実行されないよう並列実行境界を追加するブレークポイント設定ステップと前記プログラムを実行させ、前記設定対象命令で実行を停止させ、前記設定対象命令と後続する命令とが並列実行されないよう制御する実行停止制御ステップとを備えるようにしたものである。本発明によりソースプログラムから機械語プログラムへのプログラム変換時に論理的に並列実行できる命令を決めるプログラム装置を用いるプロセッサにおいて、デバッグを行なう場合に、任意の命令でブレークポイントを設定することが可能になる。以下、本発明の実施の形態について、図を用いて説明する。図30は本発明におけるプロセッサとメモリの関係を示したブロック図である。プロセッサ901は命令メモリ902とデータメモリ903に接続される。プロセッサ901は命令メモリ902より命令をフェッチし、フェッチされた命令を実行し、プロセッサ901のレジスタなどの内部状態やデータメモリ903の内容を変更する。プロセッサ901は、複数の命令をひとつの命令パケットとして同時に実行するVLIWVeryLongInstructionWordアーキテクチャ構成をとっている。以下VLIWアーキテクチャ構成をとるプロセッサをVLIWプロセッサと呼ぶ。<従来のプロセッサの構成>ここで、本発明との差異を明確にするために、従来のVLIWプロセッサの構成を説明する。図31に示されるブロック図は、3命令をひとつの命令パケットとして並列実行可能な従来のVLIWプロセッサにおける命令実行パイプライン構成の一例である。ただし、本発明において重要でない部分については、省略してある。従来のプロセッサは、命令メモリより命令をフェッチする命令フェッチ部1001と、フェッチされた命令を解読する命令解読部1011~1013と、解読された命令に応じて演算器を選択するマルチプレクサ1021と、算術及び論理演算を行うALUArithmeticandLogicunit1031と、データメモリにアクセスするメモリアクセスユニット1032と、命令のフェッチ先を変更する分岐ユニット1033からなる。命令フェッチ部1001でフェッチされた命令パケットに含まれる各命令は、命令解読部1011~1013で個別に並行して解読される。この際、命令パケット中の最も低位のアドレスに配置された命令は命令解読部1011で、次に低位のアドレスに配置された命令は命令解読部1012で、最も高位のアドレスに配置された命令は命令解読部1013で解読される。マルチプレクサ1021は命令解読部1011~1913で解読された命令を実行するために必要な演算器を選択し、各命令を演算器に送出する。VLIWプロセッサにおいて、命令パケット中の各命令は、並列実行されることを前提に配置される。そのため、同一命令パケットに存在する命令には、使用する演算器資源の重複やデータ依存は存在しない。そのため、マルチプレクサ1021は非常に簡単な構成で済むことがVLIWプロセッサの特徴である。ALU1031、メモリアクセスユニット1032、分岐ユニット1033は、マルチプレクサ1021より送出された命令を個別に並行して実行する。分岐ユニット1033でデバッグ命令が実行された場合、デバッグ割込み信号1041を命令フェッチ部1001に送出する。命令フェッチ部1001はデバッグ割込み信号1041を受け取ると、デバッグ割込みハンドラとして指定されているアドレスから命令フェッチを行う。上記で説明したように、VLIWプロセッサは複雑な命令スケジューリング機能を持たないながらも限られた演算器資源を有効に使用し、命令を並列実行する。しかしながら、デバッグ命令は分岐ユニットで実行されるため、分岐ユニットを使用する命令と同じ命令パケットに配置することはできない。このため、プログラムを任意の箇所で停止させるためのブレークポイントを設定する際、任意の命令をデバッグ命令に置き換えることができない。<本発明におけるプロセッサの第1の実施例>本発明におけるプロセッサ901の第1の実施例を説明する。図32は本発明のVLIWプロセッサにおける命令実行パイプライン構成の一例である。ただし、本発明において重要でない部分については、省略してある。本発明におけるプロセッサの第1の実施例において、プロセッサ901は、命令フェッチ部1001と、命令解読部1011~1013と、マルチプレクサ1021と、ALU1031と、メモリアクセスユニット1032と、分岐ユニット1033を備え、これらは従来のプロセッサと同様の構成である。本発明におけるプロセッサの第1の実施例において、プロセッサ901はさらに、任意の命令がデバッグ割込みを発生させるか否かを検出するデバッグ割込み検出部2051~2053を備えるデバッグ割込み解読部2081と、命令実行を取り消すための取り消し信号2111~2113を生成する取り消し信号生成部2061と、命令を無効化することで命令実行を取り消す命令実行制御部2071と、デバッグ割込み検出部2051~2053より送出されたデバッグ割込み信号2101~2103の論理和を取る論理和回路2091を備える。デバッグ割込み検出部2051~2053は、命令解読部1011~1013より命令信号2121~2123を取得し、解読された命令がデバッグ命令か否かを判定する。解読された命令がデバッグ命令であった場合、各デバッグ割込み検出部2051~2053に対応するデバッグ割込み信号2101~2103をアサートする。デバッグ割込み検出部2051~2053によりアサートされたデバッグ割込み信号2101~2103は論理和回路2091によりマージされ、デバッグ割込み信号1041として命令フェッチ部1001に入力される。これにより、従来のプロセッサと同様にデバッグ割込みを発生させることができる。取り消し信号生成部2061は、デバッグ割込み信号2101~2103を受け、低位のアドレスに配置された命令のデバッグ割込み信号がアサートされている場合、デバッグ割込み信号がアサートされている命令及び、その命令より高位のアドレスに配置された命令の実行を取り消すように対応する取り消し信号2111~2113をアサートする。命令実行制御部2071は、アサートされている取り消し信号2111~2113に対応する命令の命令信号2121~2123を、NOPNoOPerationに相当する命令信号に変換し、命令信号2131~2133としてALU1031、メモリアクセスユニット1032、分岐ユニット1033に送出することで命令の実行を無効化する。さらに以下で取り消し信号生成部2061と命令実行制御部2071の構成について説明する。図34に取り消し信号生成部2061の構成をより詳細に示す。取り消し信号生成部2061は論理和回路4001~4002を備える。取り消し信号生成部2061はデバッグ割込み信号2101~2103を入力とする。デバッグ割込み信号2101は、命令パケット中の最も低位のアドレスに配置される命令に対応する。デバッグ割込み信号2102は、命令パケット中の2番目に低位のアドレスに配置される命令に対応する。デバッグ割込み信号2103は、命令パケット中の3番目に低位のアドレスに配置される命令に対応する。取り消し信号生成部2061は取り消し信号2111~2113を出力とする。取り消し信号2111は、命令パケット中の最も低位のアドレスに配置される命令に対応する。取り消し信号2112は、命令パケット中の2番目に低位のアドレスに配置される命令に対応する。取り消し信号2113は、命令パケット中の3番目に低位のアドレスに配置される命令に対応する。取り消し信号2111はデバッグ割込み信号2101から生成される。取り消し信号2112は、論理和回路4001に入力されたデバッグ割込み信号2102とデバッグ割込み信号2102の論理和から生成される。取り消し信号2112は、論理和回路4002に入力されたデバッグ割込み信号2102とデバッグ割込み信号2102とデバッグ割込み信号2103の論理和から生成される。上記の構成により、命令パケット中の任意の命令でデバッグ割込みが発生した場合は、デバッグ割込みが発生した命令及びデバッグ割込みが発生した命令より高位のアドレスに配置された命令に対応する取り消し信号がアサートされる。図35に命令実行制御部2071の構成をより詳細に示す。命令実行制御部2071はマルチプレクサ5001~5003を備える。命令実行制御部2071は命令信号2121~2123、取り消し信号2111~2113を入力とする。命令実行制御部2071は命令信号2131~2133を出力とする。マルチプレクサ5001~5003は、命令信号2131~2133とNOPに相当する命令信号である0を入力とする。この入力を、取り消し信号2111~2113で選択する。マルチプレクサ5001~5003は、取り消し信号2111~2113が0の場合は命令信号2131~2133を、取り消し信号が1の場合は0を選択し、出力する。マルチプレクサ5001~5003の出力が、そのまま命令信号2131~2133となり、ALU1031、メモリアクセスユニット1032、分岐ユニット1033に送出される。上記の構成により、任意の命令に対応した取り消し信号2111~2113がアサートされた場合、任意の対応する命令信号2131~2133がNOP相当の命令信号に変換される。これにより、アサートされた取り消し信号に基づき、特定の命令を無効化することができる。以上説明した構成により、本発明におけるプロセッサの第1の実施例におけるプロセッサ901では、デバッグ命令を解読すると、解読されたデバッグ命令及び解読されたデバッグ命令より高位のアドレスに配置された命令が無効化され、デバッグ命令を命令パケット中のどこに配置しようが演算器などの命令実行資源不足が発生することがなくなる。即ち、デバッグ命令の実行制限がなくなり、命令パケット中の任意の位置にデバッグ命令を配置可能となる。これにより、プログラムを任意の箇所で停止させるためのブレークポイントを設定する際、任意の命令をデバッグ命令に置き換えることができる。また、命令パケット中のデバッグ命令に後続する命令の実行が取り消されるため、デバッグ割込みが発生し、ブレークポイントでプログラムが停止した際には、ブレークポイントより高位のアドレスに配置された命令が実行されておらず、ブレークポイントと命令実行の関係がより直感的に捉えられる。なお、以上の実施例において、説明の簡単のために同時実行命令数を3としているが、同時実行命令数が2以上のVLIWプロセッサにおいて同様の構成を適用可能であり、同様の効果が得られることは自明である。<本発明におけるプロセッサの第2の実施例>本発明におけるプロセッサ901の第2の実施例を説明する。図33は本発明のVLIWプロセッサにおける命令実行パイプライン構成の一例である。ただし、本発明において重要でない部分については、省略してある。本発明におけるプロセッサの第2の実施例において、プロセッサ901は、命令フェッチ部1001と、マルチプレクサ1021と、ALU1031と、メモリアクセスユニット1032と、分岐ユニット1033と、デバッグ割込み検出部2051~2053を備えるデバッグ命令解読部2081と、論理和回路2091を備え、これらは本発明におけるプロセッサ901の第1の実施例と同様の構成である。本発明におけるプロセッサの第2の実施例において、プロセッサ901はさらに、フェッチされた命令のうち、特定のビットパターンが検出された命令より高位のアドレスに配置される命令を無効化する命令無効化部3151と、有効な命令のみを命令解読部に発行する命令発行部3161と、発行された命令を解読する命令解読部2011~2013を備える。命令無効化部3151は、フェッチされた命令パケット中の各命令の一部が、特定のビットパターンを有するか否かを判定する。本発明におけるプロセッサの第2の実施例において、特定のビットパターンとは、図36に示すように16bit命令において、最上位の1ビットが1であるパターンとする。他のビットが0であるか1であるかは問わない。命令無効化部3151は、任意の命令に特定のビットパターンが有ると判定すると、その命令が無効であることを示す信号を命令発行部3161に送出する。命令発行部3151は、命令無効化部3151より命令が無効であることを示す信号を基に命令解読部2081に発行する命令を選別する。命令発行部3151は、無効命令より高位のアドレスに配置された命令パケット中の全ての命令を無効とみなし、命令解読部に命令を発行しない。命令解読部2011~2013は、命令発行部3151から命令が発行されない場合は、命令を解読せずにNOP命令に相当する命令信号をマルチプレクサ1021に送出する。命令解読部2011~2013は、デバッグ命令を解読した際には、いずれの演算器も使用しないという信号を命令信号としてマルチプレクサ1021に出力する。本発明におけるプロセッサの第2の実施例における、デバッグ命令のビットパターンを図37に示す。デバッグ命令は、bit0、bit4、bit8、bit12が0であり、その他のビットが1で構成される。最上位ビットが1であるため、命令無効化部3151により、命令パケット中のデバッグ命令より高位のアドレスに配置された命令は全て無効となり、命令解読部2011~2013に発行されることはない。これにより、デバッグ命令より高位のアドレスに配置された命令は実行されない。以上説明した構成により、本発明におけるプロセッサの第2の実施例におけるプロセッサ901では、デバッグ命令はいずれの演算器資源も使用しないと解読されるため、デバッグ命令を命令パケット中のどこに配置しようが演算器などの命令実行資源不足が発生することがなくなる。即ち、デバッグ命令の実行制限がなくなり、命令パケット中の任意の位置にデバッグ命令を配置可能となる。これにより、プログラムを任意の箇所で停止させるためのブレークポイントを設定する際、任意の命令をデバッグ命令に置き換えることができる。また、命令パケット中のデバッグ命令に後続する命令の実行が取り消されるため、デバッグ割込みが発生し、ブレークポイントでプログラムが停止した際には、ブレークポイントより高位のアドレスに配置された命令が実行されておらず、ブレークポイントと命令実行の関係がより直感的に捉えられる。なお、以上の実施例において、説明の簡単のために同時実行命令数を3としているが、同時実行命令数が2以上のVLIWプロセッサにおいて同様の構成を適用可能であり、同様の効果が得られることは自明である。<本発明におけるデバッグ方法の実施例>以下、本発明におけるデバッグ方法の実施の形態について、図1から図29を用いて説明する。図1に一般的なプログラム変換装置とデバッグ装置を組み合わせたデータの流れを示す。入出力装置105からのユーザの指示によりソースプログラム101はプログラム変換装置102により実行プログラム103aに変換される。その際にソースプログラム101と実行プログラム103aの対応づけをデバッグ情報103bとして出力させることもできる。入出力装置105からのユーザの指示によりデバッグ装置104は実行プログラム103aと存在する場合はソースプログラム101及びデバッグ情報103bを参照し、プログラムの実行、停止、状態参照などの様々なデバッグ操作を制御する。図2はより具体的なデバッグ装置の例を示したものである。201はプログラム変換装置及びデバッグ装置のホスト側ソフトウェアを実行するホストコンピュータである。204はターゲットとなるプロセッサの評価ボードであり、これらを接続ケーブル205で接続している。ターゲットとなるプロセッサをホストコンピュータ上でシミュレーションする場合は、204及び205は不要となる。201はホストコンピュータと接続された出力装置のディスプレイであり、203は同じく入力装置のキーボード及びマウスである。206はデバッグ装置が出力した表示画面である。図3は従来の技術のデバッグ装置の制御上の構成要素を示したものである。入出力手段501、実行プログラムデバッグ情報読み込み手段502、命令参照変更手段503、実行停止制御手段504、デバッグ情報検索手段505から構成される。図4は本発明の実施の形態におけるデバッグ装置の制御上の構成要素を示したものである。601から605はそれぞれ501から505と同じものである。並列実行命令列境界細分化手段606は論理的に並列実行可能な命令列の並列境界をさらに細分化した命令列に分解し、そこに並列境界を追加設定する手段である。並列実行命令列再構成手段は論理的に並列実行可能な命令列中の並列境界を変更しないまま、その中の複数の命令を置換する手段である。図5は可変長命令かつ論理的に並列実行可能なプロセッサの32ビット長命令におけるビットパターン構成例を示している。lenは命令長を区別するためのビットでendは並列境界を示すビットを示している。図6は可変長命令かつ論理的に並列実行可能なプロセッサの16ビット長命令におけるビットパターン構成例を示している。len、endの意味は図5と同じである。図7は図41のビットパターンに対する並列境界を設定するための論理和で、図8は同じく図42に対するものである。図9はソースプログラム101の一部分を示した例である。図10は図9のソースプログラムをコンパイルした後の実行プログラムの例である。図11は図10の実行プログラムの先頭の命令を従来の技術でデバッグ命令に置換した例を示したものである。図12は図10の実行プログラムの先頭の命令を図22の処理の流れでデバッグ命令に置換した例を示したものである。図13は図10の実行プログラムの先頭の命令を図23の処理の流れでデバッグ命令に置換した例を示したものである。図14は図10の実行プログラムの先頭の命令を図24の処理の流れでデバッグ命令に置換した例を示したものである。図15は図10の実行プログラムの二番目の命令の位置に図25の処理の流れで順序変更してデバッグ命令に置換した例を示したものである。図16は図10の実行プログラムの二番目の命令の位置に図26の処理の流れでデバッグ命令を補正した上で置換した例を示したものである。図17は図10の実行プログラムの先頭の命令を図28の処理の流れでステップ実行可能に置換した例を示したものである。図18は図10の実行プログラムの先頭の命令を図29の処理の流れでステップ実行可能に置換した例を示したものである。図19は図10の実行プログラムの2つ目の命令を図29の処理の流れでステップ実行可能に置換した例を示したものである。図20は図10の実行プログラムの2つ目の命令を図29の処理の流れに加え、命令順を入れ換えてステップ実行可能に置換した例を示したものである。図21は従来の技術における命令置換処理の流れ図を示したものである。図22は並列境界が変更できて、置換後命令が並列実行できる場合の命令置換処理の流れ図を示したものである。図23は並列境界が変更できない場合の命令置換処理の流れ図を示したものである。図24は並列境界が変更できるが、置換後命令が並列実行できない場合の命令置換処理の流れ図を示したものである。図25は並列実行できる命令順序が変更できる場合の命令置換処理の流れ図を示したものである。図26はソフトウェアシミュレーションを利用する場合の命令置換処理の流れ図を示したものである。図27は、ステップ実行の処理の流れ図を示したものである。図28は、図27のS2003が並列境界を変更できる場合の流れ図を示したものである。図29は、図27のS2003が並列境界を変更できない場合の流れ図を示したものである。以下、これらの図を用いて詳細に説明する。並列命令実行が可能なプロセッサのプログラムをデバッグ装置を利用してデバッグする場合、利用者は図1で説明した通りの流れで、デバッグ装置104に実行プログラム103aと存在する場合、デバッグ情報103bをロードする。ここで、ソースプログラム101の一部が図9のような場合を想定して説明する。図71をコンパイルした結果、実行プログラムの一部として図10に示すようなコードが生成されたものとする。同図においてアドレスは命令が格納されている位置を示している。グループは説明の便宜上、論理的に並列に実行可能な命令列の固まりを区別するための通し番号で、実際の機械語コード中には番号自体は含まれていない。ニーモニックは機械語コードを利用者が理解できるように簡略化した英単語や記号の組合せに置き換えたものである。ここで、MOVR1,1とは、R1レジスタに1を転送することを、CALLsubとは関数subを呼び出すことを意味している。またニーモニック末尾の||記号は次のアドレスの命令と論理的に並列に実行可能なことを示しているものとする。また、デバッグ割込みを発生させるデバッグ命令はBRK命令、プログラムカウンタを進める命令はNOP命令とする。デバッグ装置の利用者が図9における行番号10にブレークポイントを設定しようとした場合、該当する機械語コードのアドレスは従来技術を使ってデバッグ情報から0x80000000と変換できる。これを従来の技術で命令境界を変更せずにそのままデバッグ命令に置き換えると図81のMOVR1,1||命令は図82のBRK||命令に置換される。従来の技術の処理の流れは図21に示す通りである。S1001で命令置換処理を開始し、ブレークポイントを削除した時に備えて、元の命令をS1002で保存し、1020にアドレスと元の命令を格納しておく。S1003で置換後命令、即ちブレーク設定の場合はBRK命令に置き換える。S1004で命令置換処理は終了する。ブレークポイントを削除する時はS1010で命令復元処理を開始し、1020に格納しておいた対応するアドレスと元の命令を使ってS1011で元の命令に置換する。S1012で命令復元処理を完了する。本発明ではこの処理の流れを図22、図23、図24のいずれかの方法を用いて解決する。図22,図24は請求項3の実施例に対応する。図23は請求項5の実施例に対応する。プロセッサが任意の命令に並列境界を設定可能なアーキテクチャの場合、図22の方法が利用できる。S1101で命令置換処理を開始し、S1102で元の命令を1120に保存する。ここまでは従来技術と同様である。次にS1103において、置換後命令、即ちブレーク設定の場合はBRK命令と並列境界のビットパターンを合成する。ブレークの場合は、該当命令で区切りをつけたいので、並列境界として合成する。図5,図6の32,16ビット長の2種類の命令長を持つアーキテクチャを例にとると命令長を示すlenビットでまず命令長を判断する。xxx...の部分が命令そのものを示すビットパターンであるため、この部分がBRK命令のパターンとなる。endビットは並列境界を示しており、ここが0なら境界でなく、1なら境界であるとする。BRK命令のパターンと命令長に合わせ、図7または図8の並列境界を設定するビットパターンの論理和をとることにより実現される。最後にS1104において合成されたビットパターンに置き換え、S1105で命令置換処理を終了する。ブレークを削除する場合は、従来のS1010からS1012と全く同様にS1110からS1112の処理を行なう。図22の処理の流れにより、図9のソースプログラムに対応する行番号10にブレークを設定した場合は、図12のようにデバッグ装置内部で置換された状態となる。プロセッサが1または3命令単位に並列境界を設定可能だが、2命令単位には設定できないなど制約を持つアーキテクチャの場合、図24の方法が利用できる。S1301で命令置換処理を開始し、S1302でブレークを設定したい自命令と論理的に同時に実行可能な命令グループの元の命令列を1320としてアドレスと元の命令列をセットで格納する。S1303において自命令と同じグループの命令をプロセッサの制約の範囲で別のグループに分解する。グループの分解は先の図22の説明と同様に並列境界を設定することによって行なう。S1304で自命令を置換後命令、即ちBRK命令に置き換え、S1305で命令置換処理を終了する。ブレークを削除する場合は、従来のS1010からS1012と同様にS1310からS1312の処理を行なう。相違はS1311において単一命令ではなく、同一グループの命令列を復元している点がある。図24の処理の流れにより、図9のソースプログラムに対応する行番号10にブレークを設定した場合は、図14のようにデバッグ装置内部で置換された状態となる。ブレークを設定する位置がプロセッサ制約内で並列境界に分解できれば、上記で解決できる。上記の方法でもプロセッサ制約で無理の場合は、図23の方法が利用できる。S1201で命令置換処理を開始する。S1202は先のS1302と同じである。S1203はブレークを設定したい位置の命令を置換後命令、即ちBRK命令に置換する。次にS1204において、後続する同一グループの命令をプログラムカウンタを進めるだけのNOP命令に置き換える。S1205で命令置換処理を終える。ブレークを削除する場合は、S1310からS1312と同様にS1210からS1212の処理を行なう。図23の処理の流れにより、図9のソースプログラムに対応する行番号10にブレークを設定した場合は、図13のようにデバッグ装置内部で置換された状態となる。この場合、実際に停止するのは0x80000008のNOP命令まで実施した後になる可能性があるが、デバッグ装置では1320の情報中のアドレスを利用して、0x80000000で停止したと補正を行なう。次にデバッグ装置において図9のソースプログラムの行番号10の位置から1実行文命令ではなくステートメントだけステップ実行する場合を例に説明する。このソースプログラムに対応する機械語コードは図10のように生成されるものとする。プロセッサにステップ実行を指示すると行番号10に対応する機械語コードは行番号11,12に対応する機械語コードとも論理的に並列実行可能となっているために、同時に実行されてしまう可能性がある。図27に本発明の並列実行に対応したステップ実行の基本の制御の流れを示す。S2001においてステップ実行処理を開始する。S2002でステップ実行したい命令が並列実行命令であるかどうかを判定する。先に説明した図5や図6のような命令フォーマットの場合、endビットが0であれば、並列実行命令として判断できる。並列実行命令でないと判断された場合は、従来の並列実行でないプロセッサの時の技術と同様にS2006で自命令のみを単位実行してS2007でステップ実行処理を終える。並列実行命令と判断された場合は、S2003で並列実行命令列を単位実行できるように再構成する。この際、元の命令を保存しておく。詳細は図28と図29を用いて後述する。S2004で再構成した並列実行命令列を単位実行し、S2005で再構成した命令列をS2003で保存しておいた元の命令列に復元する。S2007でステップ実行処理を終了する。S2003の詳細を説明する。図28は請求項4の実施例に対応する。S2101で命令置換処理が開始され、S2102で2120にステップ実行したい位置のアドレス、元の命令を保存する。S2103で自命令と並列境界のビットパターンを合成する。並列境界のビットパターンの合成方法は図22のS1103の説明と同じである。S2104で合成したビットパターンに置き換え、S2105で命令置換処理を終える。この状態でステップ実行を行ない、停止した時点でS2110において命令復元処理を開始する。S2111で2120に保存したアドレス、元の命令に置換し、S2112で命令復元処理を終了する。これらの処理により、ステップ実行する間だけ図17のように置換を行ない、0x80000000の命令のみを単一のグループとして実行することが可能になる。これにより、行番号10に1実行文に対応する命令列だけを区別して実行することが可能になる。プロセッサの制約により、並列境界が変更できない場合は、図29の方法を用いる。図29は請求項6の実施例に対応する。S2201により命令置換処理を開始する、S2202によりステップ実行したい位置の自命令と同じ命令グループのアドレスと元の命令列を2220として保存する。293において自命令と同じ命令グループの自命令以外の他の命令をNOP命令に置き換える。S2204で命令置換処理を終了する。この状態でステップ実行を行ない、実行が停止したら、S2210で命令復元処理を開始する。S2211で2220の情報を使って元の命令列に置換する。S2212で命令復元処理を終了する。これらの処理により、ステップ実行する間だけ図18のように置換を行ない、0x80000000からステップ実行を行なう。この場合、実際に停止するのは0x80000008のNOP命令まで実施した後になる可能性もあるが、デバッグ装置では2220の情報中のアドレスを利用して、1命令分進めた0x80000004で停止したと補正を行なう。同様に更にステップ実行を行なう場合は、0x80000000と0x80000008の命令をNOP命令に置き換えて、図19のように置き換えて、0x80000004の命令だけ実行したのと同様の結果が得られるようにする。ここで、もしプロセッサがNOP命令は命令グループの末尾にしか配置できないなど制約をもっている場合は、図20のようにNOP命令以外を先頭に、NOP命令を後続するように入れ換えることにより回避する。この方法が請求項8の実施例に対応する。デバッグ命令の記述箇所が命令グループの最後である必要があるなど制約を持ったプロセッサの場合、デバッグ命令の位置を制約に従い最後に移動し、元々設定したかった位置から移動した位置までの間をNOP命令に置き換える。この時の処理は図29と同じである。そして停止した位置は元々ブレークを設定したかった場所であるとデバッグ装置が補正を行なうことで解決する。デバッグ命令の記述箇所が命令グループの先頭である必要があるなど制約を持ったプロセッサの場合、デバッグ命令の位置を制約に従い先頭に挿入し、元々設定したかった位置までの命令は命令順序をデバッグ命令を挿入した分だけ移動することで回避する。例えば、図10の二番目の命令にブレークを設定したい場合、図25のようにS1401で命令置換処理を始め、S1402で自命令と同じ命令グループの元の命令をアドレスと元の命令列をセットで1420として保存する。S1403で自命令と同じ命令グループの命令を置換後命令配置制約、即ち今回の例の場合、先頭にしか配置できないため、自命令を先頭に移動し、元々先頭にあった命令の位置から自命令が元々あった位置までの命令を順に後ろへ移動する。S1404で順序変更後の自命令は置換後命令配置制約を受けなくなっているため置換後命令に置換を行なう。S1405にて命令置換処理を終了する。この結果として図15のような命令列に置換が行なわれる。この方法が請求項7の実施例に対応する。デバッグ命令の記述箇所が命令グループの先頭である必要があるなど制約を持ったプロセッサの場合、デバッグ命令の位置を制約に従い先頭に移動し、元々ブレークを設定したかった位置までの命令はソフトウェアでシミュレーションすることで回避する。例えば、図10の二番目の命令にブレークを設定したい場合、図26におけるS1501で命令置換処理を始める。S1502で自命令と同じ命令グループの命令列をアドレスと元の命令列をセットにして1520として保存する。図24におけるS1303と同様の方法でS1503にて自命令と同じ命令グループの命令を別グループに分解する。S1504にて、命令の配置制約に従い、自命令と同じ命令グループの先頭命令を置換後命令に置換し、S1505にて命令置換処理を終了する。ここまでで図87のような状態になる。ここでプログラムの実行を開始し、BRK命令でブレークが検出された場合、S1510で命令復元処理が開始され、S1511にて1520にて保存しておいたアドレスから元の命令列を復元する。S1512にて命令復元処理を終了する。ブレークを検出した位置から元々ブレークを設定したかった命令まで一命令ずつソフトウェアシミュレーションを実施する。MOVR1,1ならR1レジスタに1を設定することでソフトウェアシミュレーションする。元々ブレークを設定したかった位置に到達した時点で再度、S1501からのフローを処理し、命令置換された状態に戻す。ブレークを検出した場所を元々ブレークを設定したかった場所に置き換え、デバッグ装置のブレーク検出を処理を終える。この方法が請求項9の実施例に対応する。並列境界が変更できず、NOP命令がないなどの制約を持つプロセッサにおいてステップ実行したい場合、既に説明した図28,図29のいずれの方法も解決できない。例えば、図9の先頭の実行文をステップ実行したい場合、実行文に対応する命令列をデバッグ情報中の103bから検索して求める。図10のような機械語コードが生成されていた場合は、この時点でアドレス0x80000000の命令のみが抽出される。ここで該当の命令がMOVR1,1であるので、デバッグ装置においてR1レジスタに1を設定するようにソフトウェアエミュレーションすることで、見かけ上、プロセッサが該当命令のみをステップ実行したのと同じ結果を得ることができる。この方法が請求項11において請求項10を使った実施例に対応する。"