(57)【要約】【課題】プログラムの翻訳、リンク及びロードに要する時間並びに、デバッグに要する時間を短縮できるデバッグシステムを提供する。【解決手段】（イ）初期関数を変更した変更後関数をプログラム内から特定する特定手段１２ｂ、（ロ）特定された変更後関数を関数単位で翻訳するコンパイル手段１１ａ、（ハ）翻訳された変更後関数をリンクし、更にリンクされた変更後関数をロードする追加手段１２ｄとを備える。【選択図】      図１
2004272759.tif 000002
【特許請求の範囲】
【請求項１】
初期関数を変更した変更後関数をプログラム内から特定する特定手段と、
前記特定された変更後関数を関数単位で翻訳するコンパイル手段と、
前記翻訳された変更後関数をリンクし、更に前記リンクされた変更後関数をロードする追加手段
とを備えるデバッグシステム。
【請求項２】
前記初期関数及び前記変更後関数を含む前記プログラムの実行を制御する制御手段を更に備えることを特徴とする請求項１に記載のデバッグシステム。
【請求項３】
前記初期関数を含む前記プログラムを実行したときに変更された前記プログラムに含まれる変数の値と、前記変更後関数を含む前記プログラムを実行したときに変更された前記プログラムに含まれる変数の値との差分値を算出する差分値算出手段を更に備えることを特徴とする請求項１又は２に記載のデバッグシステム。
【請求項４】
前記初期関数の先頭アドレス及び前記変更後関数の先頭アドレスにセットするイベント名を保存する第１のアクセス情報記憶装置と、
前記初期関数の前記先頭アドレスに実行が移るときに発行されたイベントを前記イベント名と比較し前記イベントが登録されているか否かを判定するイベント判定手段と、
前記イベントが登録されている場合前記プログラムが次に実行すべき命令のアドレスを示すプログラムカウンタに前記初期関数の前記先頭アドレスをセットするカウンタ値設定手段
とを更に備えることを特徴とする請求項１〜３のいずれか１項に記載のデバッグシステム。
【請求項５】
前記イベント判定手段は、前記変更後関数の前記先頭アドレスに実行が移るときに発行されたイベントを前記イベント名と比較し、前記イベントが登録されているか否かを判定し、
前記カウンタ値設定手段は、前記イベントが登録されている場合には前記プログラムカウンタに前記変更後関数の前記先頭アドレスをセットする
ことを特徴とする請求項４に記載のデバッグシステム。
【請求項６】
前記初期関数及び前記変更後関数に対応するフラグをオン及びオフのいずれか一方に設定するフラグ設定手段と、
前記設定されたフラグがオンかオフかを判定するフラグ判定手段と、
前記初期関数の先頭アドレスに実行が移るときに前記プログラムが次に実行すべき命令のアドレスを示すプログラムカウンタに前記初期関数の前記先頭アドレスをセットし且つ前記オンと判定された前記変更後関数の前記先頭アドレスを前記プログラムカウンタにセットするカウンタ値設定手段
とを更に有することを特徴とする請求項１〜５のいずれか１項に記載のデバッグシステム。
【請求項７】
前記カウンタ値設定手段は、前記変更後関数の先頭アドレスに実行が移るときに、前記プログラムカウンタに前記初期関数の前記先頭アドレスをセットし、且つ前記オンと判定された前記変更後関数の前記先頭アドレスを前記プログラムカウンタにセットすることを特徴とする請求項６に記載のデバッグシステム。
【請求項８】
前記初期関数の先頭アドレスの保存分命令及び、前記変更後関数の先頭アドレスの保存分命令を保存する第２のアクセス情報記憶装置と、
前記変更後関数を実行する場合には前記初期関数の前記先頭アドレスの前記保存分命令を、前記初期関数の前記先頭アドレスから前記変更後関数の前記先頭アドレスにジャンプする命令及び、前記変更後関数の最後尾アドレスから戻ってきたときに呼び出した元のアドレスへ戻る命令に置換する変更後関数置換手段と、前記初期関数を実行する場合には置換された前記ジャンプする命令及び前記戻る命令を、前記初期関数の前記先頭アドレスの前記保存分命令に置換する初期関数置換手段
とを更に有することを特徴とする請求項１〜３のいずれか１項に記載のデバッグシステム。
【請求項９】
前記初期関数及び前記変更後関数を表示可能な出力装置と、
前記初期関数が実行状態の場合には前記出力装置に前記初期関数を表示させ、前記変更後関数が実行状態の場合には前記出力装置に前記変更後関数を表示させる表示手段
とを更に有することを特徴とする請求項１〜８のいずれか１項に記載のデバッグシステム。
【請求項１０】
前記コンパイル手段は前記初期関数を更に翻訳し、
前記翻訳された初期関数をリンクし前記リンクされた初期関数をロードするリンク手段を更に有することを特徴とする請求項１〜９のいずれか１項に記載のデバッグシステム。
【請求項１１】
初期関数を変更した変更後関数をプログラム内から特定するステップと、
前記特定された変更後関数を関数単位で翻訳するステップと、
前記翻訳された変更後関数をリンクするステップと、
前記リンクされた変更後関数をロードするステップ
とを含むことを特徴とするデバッグ方法。
【請求項１２】
前記初期関数及び前記変更後関数を含む前記プログラムを実行を制御するステップを更に備えることを特徴とする請求項１１に記載のデバッグ方法。
【請求項１３】
前記初期関数の先頭アドレスに実行が移るときに発行されたイベントが登録されているか否か判定するステップと、
前記イベントが登録されている場合、前記先頭アドレスを前記プログラムが次に実行すべき命令のアドレスを示すプログラムカウンタにセットし、前記プログラムの実行に戻るステップと、
前記イベントが登録されていない場合、直ちに前記プログラムの実行に戻るステップ
とを更に含むことを特徴とする請求項１１又は１２に記載のデバッグ方法。
【請求項１４】
前記変更後関数の先頭アドレスに実行が移るときに発行されたイベントが登録されているか否か判定するステップと、
前記イベントが登録されている場合、前記変更後関数の前記先頭アドレスを前記プログラムが次に実行すべき命令のアドレスを示すプログラムカウンタにセットし、前記プログラムの実行に戻るステップと、
前記イベントが登録されていない場合、直ちに前記プログラムの実行に戻るステップ
とを更に含むことを特徴とする請求項１１又は１２に記載のデバッグ方法。
【請求項１５】
前記初期関数及び前記変更後関数に対応するフラグをオン及びオフのいずれか一方に設定するステップと、
前記プログラムが次に実行すべき命令のアドレスを示すプログラムカウンタに前記初期関数の先頭アドレスをセットするステップと、
前記設定されたフラグがオン及びオフのいずれかを判定するステップと、
前記設定されたフラグがオンの場合、前記プログラムカウンタに前記変更後関数の先頭アドレスをセットするステップ
とを含むことを特徴とする請求項１１又は１２に記載のデバッグ方法。
【請求項１６】
前記変更後関数を実行する場合には前記初期関数の前記先頭アドレスの前記保存分命令を、前記初期関数の前記先頭アドレスから前記変更後関数の前記先頭アドレスにジャンプする命令及び、前記変更後関数の最後尾アドレスから戻ってきたときに呼び出した元のアドレスへ戻る命令に置換するステップと、
前記初期関数を実行する場合には前記置換された前記ジャンプする命令及び前記戻る命令を、前記初期関数の前記先頭アドレスの前記保存分命令に置換するステップ
とを含むことを特徴とする請求項１１又は１２に記載のデバッグ方法。
【請求項１７】
前記初期関数が実行状態の場合、前記初期関数及び前記変更後関数を表示可能な出力装置に前記初期関数を表示させるステップと、
前記変更後関数が実行状態の場合、前記出力装置に前記変更後関数を表示させるステップ
とを更に含むことを特徴とする請求項１１〜１６のいずれか１項に記載のデバッグ方法。
【請求項１８】
前記初期関数及び前記変更後関数を含む前記プログラムの着目点を設定するステップと、
前記初期関数を含む前記プログラムを前記着目点まで実行したときに変更された前記プログラムに含まれる変数の値と、前記変更後関数を含む前記プログラムを前記着目点まで実行したときに変更された前記プログラムに含まれる変数の値との差分値を算出するステップ
とを更に含むことを特徴とする請求項１１〜１７のいずれか１項に記載のデバッグ方法。
【請求項１９】
初期関数を変更した変更後関数をプログラム内から特定させる命令と、
前記特定された変更後関数関数単位で翻訳させる命令と、
前記翻訳された変更後関数をリンクさせる命令と、
前記リンクされた変更後関数をロードさせる命令
とをデバッグシステムに実行させるためのデバッグプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、組み込みマイクロコンピュータを対象としたプログラムの開発環境に関し、特にデバッグシステム、デバッグ方法及びデバッグプログラムに関する。
【０００２】
【従来の技術】
従来の一般的なプログラム開発環境において、デバッグシステムにより、ソースプログラムがソースファイル毎に翻訳され、オブジェクトファイルが作成される。そして、作成された全オブジェクトファイルがリンクされることにより、実行可能ファイルが作成される。作成された実行可能ファイルがまとめてターゲット装置にロードされた後、プログラムの実行及びデバッグが行われる。上述した一連の操作はプログラムを変更する度に行なわれ、特にデバッグ中は頻繁に行なわれる（以下において「従来技術１」という。例えば、特許文献１参照。）。
【０００３】
近年、ダイナミックリンクの形式を用いてデバッグを行う技術がある。ダイナミックリンクとは、メインのプログラムとは別に、ダイナミックリンクライブラリという形式を用いることによりモジュール単位で翻訳し、必要に応じてメインのプログラムからダイナミックリンクライブラリ内の関数を呼び出す技術である（以下において「従来技術２」という。例えば、特許文献２参照。）。
【０００４】
また、デバッグの効率化を目的とした技術として、リアルタイムオペレーティングシステム（リアルタイムＯＳ）の機能を利用してモジュール単位でロードする技術がある。この機能では事前にリアルタイムＯＳをターゲット装置にロードした後、モジュール単位でロードする（以下において「従来技術３」という。例えば、特許文献３参照。）。
【０００５】
【特許文献１】
特開２０００−１８１７２５号公報
【０００６】
【特許文献２】
特願平４−９９０９３号公報
【０００７】
【特許文献３】
特願平１０−１７０６６６号公報
【０００８】
【発明が解決しようとする課題】
従来技術１においては、近年のデバッグシステムの大規模化に伴い、プログラムの翻訳、リンク及び、ターゲット装置へのロードに要する時間並びに、デバッグに要する時間が増大する。
【０００９】
上述した時間を短縮する解決策として、従来技術２を適用する場合、ダイナミックリンクがデバッグ時の再翻訳及びロードに要する時間の短縮を目的としたものではないために、ソースコード１行の変更であってもモジュール全体を翻訳・ロードしなくてはならない。また、メインのプログラムはダイナミックリンクライブラリ内の関数についてのテーブルを備えなくてはならない。更に、テーブルを参照してダイナミックライブラリ内の関数に移るルーチンが必要であるため、製品時にダイナミックリンクを使用しないデバッグシステムであれば、機能として無駄に処理を実行する際にかかる時間的及び空間的コストや負荷（オーバーヘッド）を必要とすることになる。
【００１０】
また、従来技術３を適用する場合、プログラムを採用できるような形式にしなくてはならないため、使用者（ユーザ）が作成する種々のプログラムに対応する技術ではない。さらに、複数のモジュールをロードする場合、既にロードしたモジュールは後からロードするモジュールを参照できないという制限がある。
【００１１】
上記問題点を鑑み、本発明は、プログラムの翻訳、リンク及びロードに要する時間並びに、デバッグに要する時間を短縮できるデバッグシステム、デバッグ方法及びデバッグプログラムを提供することを目的とする。
【００１２】
【課題を解決するための手段】
上記目的を達成するために、本発明の第１の特徴は、（イ）初期関数を変更した変更後関数をプログラム内から特定する特定手段と、（ロ）特定された変更後関数を関数単位で翻訳するコンパイル手段と、（ハ）翻訳された変更後関数をリンクし、更にリンクされた変更後関数をロードする追加手段とを備えるデバッグシステムであることを要旨とする。
【００１３】
また、本発明の第２の特徴は、（イ）初期関数を変更した変更後関数をプログラム内から特定するステップ、（ロ）特定された変更後関数を関数単位で翻訳するステップ、（ハ）翻訳された変更後関数をリンクするステップ、（ニ）リンクされた変更後関数をロードするステップとを含むデバッグ方法であることを要旨とする。
【００１４】
また、本発明の第３の特徴は、（イ）初期関数を変更した変更後関数をプログラム内から特定させる命令、（ロ）特定された変更後関数関数単位で翻訳させる命令、（ハ）翻訳された変更後関数をリンクさせる命令、（ニ）リンクされた変更後関数をロードさせる命令とをデバッグシステムに実行させるためのデバッグプログラムであることを要旨とする。
【００１５】
【発明の実施の形態】
以下図面を参照して、本発明の実施の形態を説明する。図面の記載において同一あるいは類似部分には同一あるいは類似な符号を付している。以下において、プログラムに含まれる関数について、デバッグして変更された関数を「変更後関数」、変更される前の関数を「初期関数」という。
【００１６】
（デバッグシステム）
本発明の実施の形態に係るデバッグシステムは、図１に示すように、ホストデバッグ装置１と、ホストデバッグ装置１に接続されたターゲットデバッグ装置３と、ホストデバッグ装置１にターゲットデバッグ装置（エミュレータ）３を介して接続されたターゲット装置２とを備える。ホストデバッグ装置１は、中央処理装置（ＣＰＵ）１０と、ＣＰＵ１０にそれぞれ接続されたシンボル情報記憶装置１５ｃ、デバッグ情報記憶装置１５ｄ、第１のアクセス情報記憶装置１５ｅ、入力装置１３、出力装置１４、主記憶装置１５、補助記憶装置１６及び、プログラム記憶装置１７等を備える。
【００１７】
ＣＰＵ１０は、言語ツール１１及びデバッガ１２等を備える。言語ツール１１は、コンパイル手段１１ａ、アセンブル手段１１ｂ及びリンク手段１１ｃ等を備える。コンパイル手段１１ａは、高級言語を用いて作成されたソースファイルを翻訳して、オブジェクトファイルを作成する。作成されたオブジェクトファイルは、ファイル格納部１５ａに保存される。コンパイル手段１１ａは更に、特定手段１２ｂにより特定された変更後関数を関数単位で翻訳する。また、アセンブル手段１１ｂは、コンピュータが解釈できる言語（機械語）と１対１に対応したアセンブリ言語を用いて作成されたソースファイルを翻訳してオブジェクトファイルを作成する。作成されたオブジェクトファイルは、ファイル格納部１５ａに保存される。リンク手段１１ｃは、オブジェクトファイルをリンクして実行可能ファイルを作成する。作成された実行可能ファイルは、ファイル格納部１５ａに保存される。リンク手段１１ｃは更に、ファイル格納部１５ａに保存された実行可能ファイルを取得し、ターゲット装置２にロードする。ロードされた実行可能ファイルは、メモリ（ターゲットメモリ）２１に保存される。
【００１８】
一方、デバッガ１２は、編集手段１２ａ、特定手段１２ｂ、追加手段１２ｄ、制御手段１２ｅ、イベント判定手段１２ｆ、カウンタ値設定手段１２ｇ、フラグ設定手段１２ｈ、フラグ判定手段１２ｉ、表示手段１２ｊ及び差分値算出手段１２ｋ等を備える。
【００１９】
編集手段１２ａは、指示情報格納部１５ｉに保存されたソースファイルを作成するための指示情報を取得し、ソースファイルを作成する。更に編集手段１２ａは、指示情報格納部１５ｉに保存されたソースファイルを編集するための指示情報を取得し、ソースファイルを編集して、変更後関数を含むソースファイルも作成する。また、特定手段１２ｂは、シンボル情報記憶装置１５ｃに保存されたシンボル位置（関数名など）、初期関数のシンボル情報及び変更後関数のシンボル情報等のシンボル情報を取得し、変更後関数をプログラム内から特定する。ここで、シンボル情報とは、シンボルのアドレスやデータの値を示した情報である。特定された変更後関数は、変更後関数格納部１５ｂに保存される。また、特定手段１２ｂにより、変更後関数のデバッグ情報をデバッグ情報記憶装置１５ｄに保存する。また、追加手段１２ｄは、デバッグ情報記憶装置１５ｄに保存されたデバッグ情報を取得し、コンパイル手段１１ａにより翻訳された変更後関数のアドレス割り付け及びシンボル解決を行なうことにより変更後関数をリンクする。シンボル解決とは、外部アドレス参照が未解決な関数のアドレス参照を解決する処理である。一方、アドレス割付とは、ターゲットメモリ２１の未使用領域を変更後関数のオブジェクトファイルに割り当てる処理である。ここで、デバッグ情報とは、変更後関数内で参照している関数及びグローバル変数のシンボル情報等を含む。更に、追加手段１２ｄは、変更後関数格納部１５ｂに保存された変更後関数をターゲット装置２にロードする。
【００２０】
制御手段１２ｅは、ターゲット装置２において実行手段２０ａによるプログラムの実行、例えばプログラムの開始や終了等を制御する。
【００２１】
イベント判定手段１２ｆは、プログラムの実行時にイベントが発行されたとき、発行されたイベントと、第１のアクセス情報記憶装置１５ｅに保存されたアクセス情報のイベント名とを比較し、そのイベントが登録されているか否かを判定する。また、フラグ設定手段１２ｈは、指示情報格納部１５ｉに保存されたフラグを設定するための指示情報を取得し、ターゲットメモリ２１に保存された初期関数のフラグをオン及びオフのいずれかに設定する。また、フラグ判定手段１２ｉは、初期関数のフラグがオン及びオフのいずれに設定されているかを判定する。
【００２２】
カウンタ値設定手段１２ｇは、プログラムカウンタ２０ｂに初期関数及び変更後関数のアドレスをセットする。カウンタ値設定手段１２ｇは例えば、フラグ判定結果格納部１５ｈに保存された判定結果等を取得し、プログラムカウンタ２０ｂを初期関数及び変更後関数のいずれか一方の先頭アドレスにセットする。カウンタ値設定手段１２ｇの機能の詳細は後述する。
【００２３】
差分値算出手段１２ｋは、変数値格納部１５ｋに保存された、初期関数を含むプログラムが実行されたときの変数の値と、変更後関数を含むプログラムが実行されたときの変数の値とを取得し、これらの差分値を算出する。
【００２４】
表示手段１２ｊは、指示情報格納部１５ｉに保存された初期関数又は変更後関数を表示するための指示情報を取得し、ディスプレイ等のファイルやコード等を表示可能な表示部を有する出力装置１４に、プログラムのファイルやコード等を表示させる。表示手段１２ｊは、プログラムに含まれるあるファイルの関数について、初期関数が実行状態になっている場合、初期関数を含むファイルやコード等を表示する。一方、表示手段１２ｊは、変更後関数が実行状態になっている場合、変更後関数を含むファイルやコード等を表示させる。
【００２５】
主記憶装置１５は、ＣＰＵ１０において実行された処理結果を逐次保存するメモリである。主記憶装置１５は、（イ）ソースファイル、オブジェクトファイル及び、実行可能ファイルを保存するファイル格納部１５ａ、（ロ）特定された変更後関数、翻訳された変更後関数及びリンクされた変更後関数を保存する変更後関数格納部１５ｂ、（ハ）発行されたイベントを保存するイベント格納部１５ｆ、（ニ）イベントの判定結果を保存するイベント判定結果格納部１５ｇ、（ホ）フラグの判定結果を保存するフラグ判定結果格納部１５ｈ、（ヘ）入力装置１３等から入力、又は予め記憶された種々の指示情報を保存する指示情報格納部１５ｉ、（ト）コンテキストを保存するコンテキスト格納部１５ｊ、（チ）変数の値を保存する変数値格納部１５ｋ及び、（リ）差分値を保存する差分値格納部１５ｌ等を備える。ここで、コンテキストとは、レジスタの値、変数の値や入出力情報（Ｉ／Ｏ情報）等である。
【００２６】
シンボル情報記憶装置１５ｃは、シンボル情報記憶装置１５ｃに保存されたシンボル位置（関数名など）、初期関数のシンボル情報及び変更後関数のシンボル情報等のシンボル情報を保存する。デバッグ情報記憶装置１５ｄは、デバッグ情報を保存する。第１のアクセス情報記憶装置１５ｅは、図２に示すように、アクセス情報として、イベント名”Ｅｖｔ１”，”Ｅｖｔ２”，”・・・・・”、初期関数名”ｆｕｎｃ１”，”ｆｕｎｃ２”，”・・・・・”、変更後関数の先頭アドレス”０ｘ８００１１２３０”，”０ｘ８００１２０００”，”・・・・・”及び、図示を省略した、変更前関数及び変更後関数に対応するフラグ等の情報を保存する。
【００２７】
図１に示した補助記憶装置１６としては、磁気ディスク、光ディスク、光磁気ディスクや磁気テープなどのプログラムを記録することができるような記録媒体が使用可能である。具体的には、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯディスク、カセットテープやオープンリールテープ等が使用可能である。
【００２８】
プログラム記憶装置１７は、初期関数を変更した変更後関数をプログラム内から特定させる命令、特定された変更後関数を関数単位で翻訳させる命令、翻訳された変更後関数をリンクさせる命令、リンクされた変更後関数をロードさせる命令、初期関数及び変更後関数を含むプログラムを実行を制御させる命令、初期関数の先頭アドレスに実行が移るときに発行されたイベントが登録されているか否か判定させる命令、イベントが登録されている場合に初期関数の先頭アドレスをプログラムカウンタ２０ｂにセットしプログラムの実行に戻る命令、イベントが登録されていない場合に直ちにプログラムの実行に戻る命令、変更後関数の先頭アドレスに実行が移るときに発行されたイベントが登録されているか否か判定させる命令、イベントが登録されている場合に変更後関数の先頭アドレスをプログラムカウンタ２０ｂにセットしプログラムの実行に戻る命令、初期関数及び変更後関数に対応するフラグをオン及びオフのいずれか一方に設定させる命令、プログラムカウンタ２０ｂに初期関数の先頭アドレスをセットさせる命令、設定されたフラグがオン及びオフのいずれかを判定させる命令、設定されたフラグがオンの場合にプログラムカウンタ２０ｂに変更後関数の先頭アドレスをセットさせる命令、初期関数が実行状態の場合に出力装置１４に初期関数を表示させる命令、変更後関数が実行状態の場合に出力装置１４に変更後関数を表示させる命令、初期関数及び変更後関数を含むプログラムの着目点を設定させる命令、初期関数を含むプログラムを着目点まで実行したときに変更されたプログラムに含まれる変数の値と変更後関数を含むプログラムを着目点まで実行したときに変更されたプログラムに含まれる変数の値との差分値を算出させる命令等を本発明の第１の実施の形態に係るデバッグシステムに実行させるためのデバッグプログラムを保存する。このデバッグプログラムが図１に示したＣＰＵ１０に読み込まれ、実行されることにより、上述したデバッグシステムが実現可能である。
【００２９】
入力装置１３としては、例えばキーボード、マウス、ライトペンやボイスデバイス等が使用可能である。一方、出力装置１４としては、液晶ディスプレイ（ＬＣＤ）、ＣＲＴディスプレイやプリンタ等が使用可能である。
【００３０】
一方、ターゲット装置２は、中央処理装置（ターゲットＣＰＵ）２０と、主記憶装置（ターゲットメモリ）２１等を備える。ターゲットＣＰＵ２０は、実行手段２０ａとプログラムカウンタ２０ｂ等を含む。実行手段２０ａは、ターゲットメモリ２１に保存されたプログラムを実行する。プログラムカウンタ２０ｂは、プログラムが次に実行すべき命令のアドレスを示すレジスタである。なお、ターゲットＣＰＵ２０は、ホストデバッグ装置１とターゲット装置２との間で通信を行う機能をもつデバッグ手段（デバッグモニタ）を更に有していても良い。また、ターゲットメモリ２１は、ホストデバッグ装置１からロードされたプログラムを保存し、且つターゲットＣＰＵ２０によるプログラムの実行結果を逐次保存するメモリである。
【００３１】
他方、ターゲットデバッグ装置３は、ホストデバッグ装置１とターゲット装置２の間で通信を行うための装置である。ターゲットデバッグ装置３は、イベント発生監視手段３１と、制御伝達・設定手段３２等を備える。イベント発生監視手段３１は、ターゲット装置２において、プログラムの実行時に発生するイベントを監視し、イベントが発生した時点でプログラムを停止させる等の機能を有する。また、制御伝達・設定手段３２は、ホストデバッグ装置１とターゲット装置２との間の制御信号やロードされたプログラム等を制御して伝達する。ターゲットデバッグ装置３としては、インサーキットエミュレータ（ＩＣＥ）及びデバッグサポートユニット（ＤＳＵ）等が使用可能である。
【００３２】
なお、本発明の実施の形態に係るデバッグシステムは、単一のコンピュータであっても良く、また例えばローカルまたはリモートにネットワーク接続されたサーバーマシンとクライアントマシンとにより構成されても良い。ソフトウェアの開発規模や開発人員構成に応じて、ソースプログラム等の各データやシステム自体を適宜サーバーマシン上に配置しても良い。
【００３３】
（ソースプログラムの翻訳、リンク及びロード方法）
以下において、図１及び図３を用いて、本発明の実施の形態に係るデバッグシステムによるソースプログラムの翻訳、リンク及びロード方法を説明する。
【００３４】
（イ）まず、図３のステップＳ１０１において、図１に示した編集手段１２ａにより、プログラミング言語を用いてソースファイルを作成する。作成されたソースファイルはそれぞれ、ファイル格納部１５ａに保存される。
【００３５】
（ロ）次に、ステップＳ１０２において、コンパイル手段１１ａによりソースファイルを翻訳してオブジェクトファイルを作成する。ここで、ソースファイルがアセンブリ言語で記述されている場合、アセンブル手段１１ｂによりソースファイルを翻訳してオブジェクトファイルを作成しても良い。作成されたオブジェクトファイルは、ファイル格納部１５ａに保存される。
【００３６】
（ハ）次に、ステップＳ１０３において、リンク手段１１ｃにより、オブジェクトファイルをリンクして実行可能ファイルを作成する。作成された実行可能ファイルは、ファイル格納部１５ａに保存される。
【００３７】
（ニ）次に、ステップＳ１０４において、リンク手段１１ｃにより、実行可能ファイルをターゲット装置２にロードする。
【００３８】
以上説明したように、プログラムがターゲット装置２上で実行可能となる。
【００３９】
（デバッグ方法１）
以下において、本発明の実施の形態に係るデバッグシステムによるデバッグにおいて、プログラムに含まれる関数が変更される際の翻訳、リンク及びロード方法を図１、図４及び図５を用いて説明する。
【００４０】
（イ）まず、図４のステップＳ２０１において、そして、編集手段１２ａにより、指示情報格納部１５ｉに保存された関数を変更する指示情報を取得し、プログラム（ファイル）に含まれる初期関数を変更し、変更後関数を含むプログラム（ファイル）を作成する。作成された変更後関数を含むプログラム（ファイル）は、ファイル格納部１５ａに保存される。
【００４１】
（ロ）次に、ステップＳ２０２において、編集手段１２ａにより、シンボル情報記憶装置１５ｃに保存されたシンボル位置、初期関数及び変更後関数のシンボル情報等のシンボル情報を取得し、変更後関数をプログラム（ファイル）内から特定する。特定された変更後関数は、変更後関数格納部１５ｂに保存される。また、特定された変更後関数のデバッグ情報が、デバッグ情報記憶装置１５ｄに追加して保存される。但し、デバッグ情報記憶装置１５ｄに保存された初期関数のデバッグ情報には手を加えない。
【００４２】
（ハ）次に、ステップＳ２０３において、ソースプログラムが高級言語で記述されている場合、コンパイル手段１１ａにより、変更後関数格納部１５ｂに保存された、特定された変更後関数を取得し、変更後関数を関数単位で翻訳する。翻訳された変更後関数は、変更後関数格納部１５ｂに保存される。
【００４３】
（ニ）次に、ステップＳ２０４において、追加手段１２ｄにより、デバッグ情報記憶装置１５ｄに保存されたデバッグ情報を取得し、翻訳された変更後関数のシンボル解決及びアドレス割付を行うことによりリンクする。リンクされた変更後関数は、変更後関数格納部１５ｂに保存される。
【００４４】
（ホ）次に、ステップＳ２０５において、追加手段１２ｄにより、変更後関数格納部１５ｂに保存された、リンクされた変更後関数を取得し、リンクされた変更後関数をターゲット装置２にロードする。ロードされた変更後関数は、ターゲットメモリ２１に保存される。
【００４５】
以上説明したように、本発明の実施の形態に係るデバッグシステムによれば、変更後関数を関数単位で翻訳、リンク及びロードできるので、プログラムの翻訳、リンク及びロードに要する時間及びデバッグに要する時間を短縮できる。
【００４６】
なお、図５に示すように、ソースプログラム全体を翻訳、リンク及びロードするための指示情報を送る”ビルド”ボタン、プログラムを変更後、変更されたソースプログラム全体を再び翻訳、リンク及びロードするための指示情報を送る”リビルド”ボタン及び、関数単位で翻訳、リンク及びロードするための指示情報を送る”関数単位でビルド”ボタン等のようなボタンを、ディスプレイ等の表示可能な表示部を有する出力装置１４に表示する。これらのボタンを使用者等に選択させ、指示情報を入力装置１３を介して指示情報格納部１５ｉに保存する。このことにより、プログラム全体並びに関数単位の翻訳、リンク及びロードが適宜選択可能となる。
【００４７】
（デバッグ方法２）
次に、本発明の実施の形態に係るデバッグシステムを用いて、初期関数及び変更後関数を含むプログラムを実行する方法を図１、図２及び図６を用いて説明する。プログラムに含まれる関数のイベント自身は、デバッグシステムだけで使用されるものではないので、他で使用者等により設定された場合は、そのイベントが本発明の実施の形態に係るデバッグシステムで使用するイベントが登録されているか否かを確認する必要がある。
【００４８】
（イ）まず、図６のステップＳ３０１において、図１に示す制御手段１２ｅにより、ターゲット装置２の実行手段２０ａによりプログラムの実行を開始させる。プログラムの実行時、プログラムに含まれる関数毎の処理結果は逐次ターゲットメモリ２１に保存される。プログラムを実行時に初期関数及び変更後関数のいずれか一方が呼び出されたとき、無条件に初期関数の先頭アドレスにジャンプする。ここで、初期関数の先頭アドレスに実行が移ると、イベントが発行される。イベント発生監視手段３１は、イベントが発行されると、実行手段２０ａによるプログラムの実行を停止する。発行されたイベントは、イベント格納部１５ｆに保存される。
【００４９】
（ロ）次に、ステップＳ３０２において、イベント判定手段１２ｆにより、第１のアクセス情報記憶装置１５ｅに保存されたアクセス情報を取得し、イベント格納部１５ｆに保存されたイベントを図２に示したイベント名と比較して、そのイベントが登録されているか否かを判定する。ここで、イベントが初期関数の先頭アドレスでのイベント名である場合、登録されていると判定される。判定結果は、イベント判定結果格納部１５ｇに保存される。
【００５０】
（ハ）そして、ステップＳ３０３において、カウンタ値設定手段１２ｇに読み込まれる。そして、カウンタ値設定手段１２ｇによりイベント判定結果格納部１５ｇに保存された判定結果を取得し、イベントが登録されている場合、変更後関数の先頭アドレスをプログラムカウンタ２０ｂにセットする。
【００５１】
（ニ）その後、ステップＳ３０４において、制御手段１２ｅにより、プログラムの実行に戻る。Ｓ３０５においてプログラムカウンタ２０ｂの値を変更後関数の先頭アドレスにセットすることにより、変更後関数を含むプログラムが実行される。
【００５２】
（ホ）一方、ステップＳ３０２においてイベントが登録されていないと判定された場合、ステップＳ３０５において、制御手段１２ｅにより直ちにプログラムの実行に戻らせる。初期関数が関数呼び出しされた後、何のイベント操作も行なわれないので、初期関数が実行される。
【００５３】
以上説明したように、プログラムを変更した後、再び変更前のプログラムを実行する場合、初期関数を含むプログラムと変更後関数を含むプログラムを別々にロードすることなく、ひとつのプログラムとして実行することが出来る。
【００５４】
（デバッグ方法３）
本発明の実施の形態に係るデバッグシステムにおいて、デバッグによりプログラムが変更された後の、初期関数及び変更後関数を含むプログラムを実行する方法を図１、図７及び図８を用いて説明する。
【００５５】
（イ）まず、図７のステップＳ４０１において、図１に示した表示手段１２ｊにより、図８に示すような表示部を有する出力装置１４に、初期関数を実行させるための指示情報を送る”変更前”ボタン及び、変更後関数を含むプログラムを実行させるための指示情報を送る”変更後”のボタンがついたインターフェースを表示させる。指示情報は、入力装置１３を介して指示情報格納部１５ｉ等に保存される。ここで、”変更後”ボタンが選択された場合、フラグ設定手段１２ｈにより、第１のアクセス情報記憶装置１５ｅに保存されている、初期関数及び変更後関数に対応するフラグをオンに設定する。一方、”変更前”ボタンが選択された場合、フラグ設定手段１２ｈにより、フラグをオフに設定する。
【００５６】
（ロ）次に、ステップＳ４０２において、制御手段１２ｅにより、ターゲット装置２の実行手段２０ａにプログラムの実行を開始させる。プログラムに含まれる関数毎の処理結果は、ターゲットメモリ２１に逐次保存される。プログラムの実行中に、初期関数及び変更後関数のいずれか一方が呼び出されたとき、カウンタ値設定手段１２ｇによりプログラムカウンタ２０ｂに初期関数の先頭アドレスをセットすることにより、プログラムが無条件に初期関数の先頭アドレスにジャンプする。
【００５７】
（ハ）そして、ステップＳ４０３において、初期関数及び変更後関数の先頭アドレスに実行が移ると、フラグ判定手段１２ｉにより、実行が移った初期関数及び変更後関数に対応するフラグがオンかオフかを判定する。判定結果は、フラグ判定結果格納部１５ｈに保存される。
【００５８】
（ニ）ステップＳ４０４において、カウンタ値設定手段１２ｇにより、フラグ判定結果格納部１５ｈに保存された判定結果を取得し、フラグがオフと判定された場合、変更後関数の先頭アドレスをプログラムカウンタ２０ｂにセットする。その後、制御手段１２ｅにより、プログラムの実行に戻らせる。
【００５９】
（ホ）ステップＳ４０４でプログラムカウンタ２０ｂの値を変更後関数の先頭アドレスにセットすることにより、ステップＳ４０５において、変更後関数を含むプログラムが実行される。更に、表示手段１２ｊにより、表示部を有する出力装置１４に変更後関数を含むファイルやコード等を表示することにより、変更後関数に対してデバッグできる。
【００６０】
（ヘ）一方、ステップＳ４０３においてフラグがオフと判定された場合、ステップＳ４０６において、制御手段１２ｅにより、ターゲット装置２の実行手段２０ａにプログラムの実行に戻らせる。初期関数が呼ばれた後に何のイベント操作も行なわれないので、初期関数を含むプログラムが実行される。更に、表示手段１２ｊにより、ディスプレイ等の出力装置１４に初期関数を含むファイルやコード等を表示させることにより、初期関数をデバッグできる。
【００６１】
以上説明したように、本発明の実施の形態に係るデバッグシステムによれば、初期関数及び変更後関数のいずれも関数呼び出しが可能となる。したがって、初期関数を含むプログラムと変更後関数を含むプログラムの両方の実行に対して、再びロードしてプログラムを入れ替えることなく両方をデバッグすることが可能となるので、開発時間を大幅に短縮できる。
【００６２】
（デバッグ方法４）
本発明の実施の形態に係るデバッグシステムにおいて、プログラムに含まれる初期関数及び変更後関数の振る舞いの違いを測定する方法を図１及び図９を用いて説明する。
【００６３】
（イ）まず、図９のステップＳ５０１において、図１に示す入力装置１３から、プログラム中で動作差分を確認する行（着目点）を設定する指示情報が入力され、指示情報格納部１５ｉに保存される。指示情報は、指示情報格納部１５ｉに予め保存されていても良い。
【００６４】
（ロ）ステップＳ５０２において、制御手段１２ｅにより、実行手段２０ａにプログラムの実行を開始させる。実行手段２０ａによるプログラムの処理結果は、逐次ターゲットメモリ２１に保存される。プログラムを実行時に初期関数の先頭アドレスまで到達すると、実行手段２０ａにより、その時点でのコンテキストがコンテキスト格納部１５ｊに保存される。
【００６５】
（ハ）引き続き、ステップＳ５０３において、実行手段２０ａにより、プログラムが初期関数の先頭アドレスから着目点まで実行させた後、プログラムの実行を終了させる。
【００６６】
（ニ）ステップＳ５０４において、プログラムの初期関数の先頭アドレスから着目点までで、変更があった変数の値が変数値格納部１５ｋに保存される。
【００６７】
（ホ）ステップＳ５０５において、コンテキストが、初期関数の先頭アドレスに到達した時点の状態に戻される。更に、変更された変数の値も元に戻される。この際、カウンタ値設定手段１２ｇにより、プログラムカウンタ２０ｂの値を変更後関数の先頭アドレスに設定する。
【００６８】
（ヘ）ステップＳ５０６において、制御手段１２ｅにより、実行手段２０ａにプログラムを変更後関数の先頭アドレスから着目点まで実行させた後、プログラムの実行を終了させる。
【００６９】
（ト）ステップＳ５０７において、プログラムの変更後関数の先頭アドレスから着目点までで、変更があった変数の値が変数値格納部１５ｋに保存される。
【００７０】
（チ）ステップＳ５０８において、差分値算出手段１２ｋにより、変数値格納部１５ｋに保存された、初期関数を実行したときの変数の値及び、変更後関数を実行したときに保存した変数の値を取得し、これらの差分値を算出する。算出された差分値は、差分値格納部１５ｌに保存される。
【００７１】
以上のように、本発明の実施の形態に係る測定方法によれば、初期関数及び変更後関数を同時に実行することにより、初期関数及び変更後関数を実行時の変数の差分値を算出できるので、この変数の差分値を用いて、任意の着目点までのプログラムの振る舞いの違いを測定することができ、デバッグを効率的に行なうことが出来る。
【００７２】
（変形例）
本発明の実施の形態の変形例として、図１０及び図１１を用いて、フラグを使用しなくても良いデバッグシステムを説明する。この変形例に係るデバッグシステムは、図１０に示すように、ホストデバッグ装置１ｘと、ホストデバッグ装置１ｘに接続されたターゲット装置２とを備える。ホストデバッグ装置１ｘは、図１に示したホストデバッグ装置１に対して、ＣＰＵ１０ｘが有するデバッガ１２ｘと、第２のアクセス情報記憶装置１５ｍと、主記憶装置１５ｘ、プログラム記憶装置１７ｘの構造が異なる。なお、図示を省略するが、ホストデバッグ装置１ｘとターゲット装置２との間には、図１に示したターゲットデバッグ装置３を有する。
【００７３】
デバッガ１２ｘは、図１に示したフラグ設定手段１２ｈ及びフラグ判定手段１２ｉの代わりに、初期関数置換手段１２ｌ及び変更後関数置換手段１２ｍとを備える。初期関数置換手段１２ｌ及び変更後関数置換手段１２ｍの機能は後述するデバッグシステムにおけるデバッグ方法の説明において言及する。
【００７４】
第２のアクセス情報記憶装置１５ｍは、図１１に示すようなアクセス情報の内容有する。図１１において、ステータス”０”は”初期関数実行”であり、ステータス”１”は”変更後関数実行”の値である。ステータス”０”及び”１”は、現在、初期関数と変更後関数のどちらの関数が実行される状態にあるかを示す。第２のアクセス情報記憶装置１５ｍは、ステータス”０”に対応した初期関数の先頭アドレス”０ｘ８００１００１０”、変更後関数の先頭アドレス”０ｘ８００１１２３０”及び、保存分命令”ｌｕｉ＄８，０ｘ８００１、ｏｒｉ＄８，０ｘ１２３０、・・・・・”を保存する。ここで、保存分命令”ｌｕｉ＄８，０ｘ８００１”及び”ｏｒｉ＄８，０ｘ１２３０”は、変更後関数の先頭アドレス０ｘ８００１１２３０にジャンプする命令である。保存分命令”ｊｒ＄８”は、レジスタ＄８にジャンプする命令である。保存分命令”ｎｏｐ”は、何も処理を行わない命令である。保存分命令”ｊｒ＄３１”は、元のアドレスに戻る命令である。
【００７５】
更に第２のアクセス情報記憶装置１５ｍは、ステータス”１”に対応した初期関数の先頭アドレス”０ｘ８００１８８ｅｃ”、変更後関数の先頭アドレス”０ｘ８００１２０００”及び、保存分命令”ｄａｄｄｉｕ  ＄ｓｐ，＄ｓｐ，−３２、ｓｄ  ＄ｒａ，２４（＄ｓｐ）、・・・・・”とを保存する。ここで、保存分命令”ｄａｄｄｉｕ  ＄ｓｐ，＄ｓｐ，−３２”は、スタックレジスタから３２を引く命令である。保存分命令”ｓｄ  ＄ｒａ，２４（＄ｓｐ）”は、ｒａをスタックレジスタ＄２４に書き込む命令である。保存命令”ｓｄ  ＄ｓ２，１６（＄ｓｐ）”は、ｓ２をスタックレジスタ＄１６に書き込む命令である。保存分命令”ｓｄ  ＄ｓ１，８（＄ｓｐ）”は、ｓ１をスタックレジスタ＄８に書き込む命令である。保存分命令”ｊａｌ  ０＜ｍａｉｎ＞”は、ジャンプしてリンクする命令である。保存命令”ｓｄ  ＄ｓ０，０（＄ｓｐ）”は、ｓ０をスタックレジスタ＄０に書き込む命令である。
【００７６】
プログラム記憶装置１７ｘは、図１で示したプログラム記憶装置１７が保存するデバッグプログラムに加えて、変更後関数を実行する場合には初期関数の先頭アドレスの保存分命令を初期関数の先頭アドレスから変更後関数の先頭アドレスにジャンプする命令及び変更後関数の最後尾アドレスから戻ってきたときに呼び出した元のアドレスへ戻る命令に置換する命令と、初期関数を実行する場合には置換されたジャンプする命令及び戻る命令を初期関数の先頭アドレスの保存分命令と置換する命令等をデバッグシステムに実行させるためのデバッグプログラムを保存する。図１０に示したデバッグシステムの他の構造は、図１に示したデバッグシステムと実質的に同様であるので、重複した説明を省略する。
【００７７】
上述した、本発明の実施の形態の変形例に係るデバッグ方法を図１０及び図１１を用いて説明する。図１１は、変更後関数を実行した後の状態を表す。
【００７８】
（イ）まず、変更後関数を実行する場合、図１０に示した変更後関数置換手段１２ｍにより、ステータス”０”に対応した保存分命令を、初期関数の先頭アドレス”０ｘ８００１８８ｅｃ”から変更後関数の先頭アドレスへジャンプする命令”ｌｕｉ＄８，０ｘ８００１”及び”ｏｒｉ＄８，０ｘ１２３０”並びに、変更後関数の最後尾アドレスから戻ってきた際直ちに関数を呼び出した元のアドレスへ戻る命令”ｊｒ＄３１”に置換する（図１１参照。）。置換された保存分命令は、第２のアクセス情報記憶装置１５ｍ内の他の保存領域内に保存される。よって、初期関数の先頭アドレスへジャンプしたとき、変更後関数の先頭アドレスへジャンプするので、変更後関数の先頭アドレスの保存分命令”ｄａｄｄｉｕ  ＄ｓｐ，＄ｓｐ，−３２、ｓｄ  ＄ｒａ，２４（＄ｓｐ）、・・・・・”から順に変更後関数を含むプログラムが実行される。
【００７９】
（ロ）その後、初期関数を実行する場合、初期関数置換手段１２ｌにより、図１１に示すステータス”０”に対応した保存分命令である初期関数の先頭アドレス”０ｘ８００１８８ｅｃ”から変更後関数の先頭アドレスへジャンプする命令”ｌｕｉ＄８，０ｘ８００１”及び”ｏｒｉ＄８，０ｘ１２３０”並びに、変更後関数の最後尾アドレスから戻ってきた際直ちに関数を呼び出した元のアドレスへ戻る命令”ｊｒ＄３１”を、第２のアクセス情報記憶装置１５ｍ内の他の保存領域内に保存されていた保存分命令に置換する。よって、初期関数の先頭アドレスへジャンプしたとき、保存分命令が実行されるので、初期関数を含むプログラムが実行される。
【００８０】
以上説明したように、本発明の実施の形態の変形例によれば、フラグを用いることなく、初期関数及び変更後関数を含むプログラムに対してデバッグが可能となる。
【００８１】
（その他の実施の形態）
上記のように、本発明は、実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。例えば、本発明の実施の形態において、図１に示したコンパイル手段１１ａが変更後関数を翻訳したが、アセンブル手段１１ｂが変更後関数を翻訳しても良い。また、編集手段１２ａを示したが、特定手段１２ｂにソースファイルの作成や、プログラムに含まれる関数を変更させても良い。
【００８２】
また、図１に示したデバッガ１２が、図１０に示した初期関数置換手段１２ｌ及び変更後関数置換手段１２ｍとを更に有していても構わない。このことにより、上述したようなフラグを用いてのデバッグ方法や、フラグを用いないデバッグ方法双方が実現可能となる。
【００８３】
また、本発明の実施の形態において、初期関数を変更して変更後関数とした場合について説明したが、一連の手順をそれぞれ何度も繰り返して良いことは勿論である。その場合、初期関数と、初期関数を変更した変更後関数だけでなく、その変更後関数を変更した二次変更後関数、三次変更後関数、・・・・・等にも適用可能であることは勿論である。
【００８４】
このように、本発明はここでは記載していない様々な実施の形態などを含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【００８５】
【発明の効果】
本発明によれば、プログラムの翻訳、リンク及びロードに要する時間並びに、デバッグに要する時間を短縮できるデバッグシステム、デバッグ方法及びデバッグプログラムを提供できる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るデバッグシステムの構成を示すブロック図である。
【図２】本発明の実施の形態に係る第１のアクセス情報記憶装置１５ｅのアクセス情報の内容を示す図である。
【図３】本発明の実施の実施の形態に係るデバッグシステムを用いた翻訳、リンク及びロード方法を説明するためのフローチャートである。
【図４】本発明の実施の形態に係るデバッグシステムを用いたプログラムを変更後の翻訳、リンク及びロード方法を説明するためのフローチャートである。
【図５】本発明の実施の形態に係る表示装置のインターフェース図である（その１）。
【図６】本発明の実施の形態に係るデバッグ方法１を説明するためのフローチャートである。
【図７】本発明の実施の形態に係るデバッグ方法２を説明するためのフローチャートである。
【図８】本発明の実施の形態に係る表示装置のインターフェース図である（その２）。
【図９】本発明の実施の形態に係るデバッグ方法３を説明するためのフローチャートである。
【図１０】本発明の実施の形態の変形例に係るデバッグシステムの構成を示すブロック図である。
【図１１】本発明の実施の形態の変形例に係る第２のアクセス情報記憶装置１５ｍのアクセス情報の内容を示す図である。
【符号の説明】
１，１ｘ…ホストデバッグ装置
２…ターゲット装置
３…ターゲットデバッグ装置
１０，１０ｘ…中央処理装置（ＣＰＵ）
１１…言語ツール
１１ａ…コンパイル手段
１１ｂ…アセンブル手段
１１ｃ…リンク手段
１２，１２ｘ…デバッガ
１２ａ…編集手段
１２ｂ…特定手段
１２ｄ…追加手段
１２ｅ…制御手段
１２ｆ…イベント判定手段
１２ｇ…カウンタ値設定手段
１２ｈ…フラグ設定手段
１２ｉ…フラグ判定手段
１２ｊ…表示手段
１２ｋ…差分値算出手段
１２ｌ…初期関数置換手段
１２ｍ…変更後関数置換手段
１３…入力装置
１４…出力装置
１５，１５ｘ…主記憶装置
１５ａ…ファイル格納部
１５ｂ…変更後関数格納部
１５ｃ…シンボル情報記憶装置
１５ｄ…デバッグ情報記憶装置
１５ｅ…第１のアクセス情報記憶装置
１５ｆ…イベント格納部
１５ｈ…フラグ判定結果格納部
１５ｉ…指示情報格納部
１５ｊ…コンテキスト格納部
１５ｋ…変数値格納部
１５ｌ…差分値格納部
１５ｍ…第２のアクセス情報記憶装置
１６…補助記憶装置
１７，１７ｘ…プログラム記憶装置
２０…ターゲット中央処理装置（ターゲットＣＰＵ）
２０ａ…実行手段
２０ｂ…プログラムカウンタ
２１…メモリ（ターゲットメモリ）
３１…イベント発生監視手段
３２…制御伝達・設定手段
【図１】
2004272759.tif 000003
【図２】
2004272759.tif 000004
【図３】
2004272759.tif 000005
【図４】
2004272759.tif 000006
【図５】
2004272759.tif 000007
【図６】
2004272759.tif 000008
【図７】
2004272759.tif 000009
【図８】
2004272759.tif 000010
【図９】
2004272759.tif 000011
【図１０】
2004272759.tif 000012
【図１１】
2004272759.tif 000013