(57)【要約】【課題】単独のコンパイラで、ソースプログラムと実行プログラムとの一致・不一致を確認することができるコンパイラ評価技術を提供する。【解決手段】コンパイラ評価装置１０は、プログラミング言語で記述されたソースプログラムを保持する第１保持部１１と、このソースプログラムをプロセッサで実行できるようにコンパイルした実行プログラムを保持する第２保持部１２と、このソースプログラム及び実行プログラムの少なくとも一方に基づいてテストデータを生成するテストデータ生成部１５と、このテストデータを保持し実行プログラムの実行手段（ターゲットＣＰＵ２１）に送出する第３保持部１３と、テストデータを入力しソースプログラムを実行するインタープリタ１７と、実行手段（ターゲットＣＰＵ２１）の実行結果及びインタープリタ１７の実行結果を対比して一致するか否かを判定する判定部１８とを、備えている。【選択図】  図１
2014044678.tif 000002
【特許請求の範囲】
【請求項１】
プログラミング言語で記述されたソースプログラムを保持する第１保持部と、
前記ソースプログラムをプロセッサで実行できるようにコンパイルした実行プログラムを保持する第２保持部と、
前記ソースプログラム及び前記実行プログラムの少なくとも一方に基づいてテストデータを生成するテストデータ生成部と、
前記テストデータを保持し前記実行プログラムの実行手段に送出する第３保持部と、
前記テストデータを入力し前記ソースプログラムを実行するインタープリタと、
前記実行プログラムの実行手段の実行結果及び前記インタープリタの実行結果を対比して一致するか否かを判定する判定部とを、備えることを特徴とするコンパイラ評価装置。
【請求項２】
前記テストデータ生成部は、前記ソースプログラムを構成する関数を単位として抽出された入力変数の組み合わせに基づく前記テストデータを生成する請求項１に記載のコンパイラ評価装置。
【請求項３】
前記テストデータ生成部は、前記ソースプログラムを構成する関数を単位として抽出されたプログラムパスの実行又は不実行の組み合わせに基づく前記テストデータを生成する請求項１に記載のコンパイラ評価装置。
【請求項４】
前記実行プログラムの実行手段は、ターゲットＣＰＵをエミュレートするために内蔵されたエミュレータ又は外部機器に設けられた前記ターゲットＣＰＵである請求項１から請求項３のいずれか１項に記載のコンパイラ評価装置。
【請求項５】
前記ソースプログラムを構成する関数の内部範囲を設定するとともにこの内部範囲に対応する前記実行プログラムの比較範囲を設定する範囲設定部をさらに備え、
前記テストデータ生成部は、前記ソースプログラムの内部範囲及び前記実行プログラムの比較範囲の少なくとも一方に基づいてテストデータを生成する請求項１から請求項４のいずれか１項に記載のコンパイラ評価装置。
【請求項６】
前記範囲設定部は、前記ソースプログラムのプログラムパスを単位として前記内部範囲及び前記比較範囲を設定する請求項５に記載のコンパイラ評価装置。
【請求項７】
プログラミング言語で記述されたソースプログラムを保持するステップと、
前記ソースプログラムをプロセッサで実行できるようにコンパイルした実行プログラムを保持するステップと、
前記ソースプログラム及び前記実行プログラムの少なくとも一方に基づいてテストデータを生成するステップと、
前記テストデータを保持しこのテストデータを前記実行プログラムの実行手段に送出するステップと、
前記テストデータを入力し前記ソースプログラムを実行するステップと、
前記実行プログラムの実行結果及び前記ソースプログラムの実行結果を対比して一致するか否かを判定するステップとを、含むことを特徴とするコンパイラ評価方法。
【請求項８】
コンピュータに、
プログラミング言語で記述されたソースプログラムを保持させるステップ、
前記ソースプログラムをプロセッサで実行できるようにコンパイルした実行プログラムを保持させるステップ、
前記ソースプログラム及び前記実行プログラムの少なくとも一方に基づいてテストデータを生成させるステップ、
前記テストデータを保持させこのテストデータを前記実行プログラムの実行手段に送出させるステップ、
前記テストデータを入力させ前記ソースプログラムを実行させるステップ、
前記実行プログラムの実行結果及び前記ソースプログラムの実行結果を対比させて一致するか否かを判定させるステップを、実行させることを特徴とするコンパイラ評価プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースプログラムを実行プログラムにコンパイルするコンパイラの評価技術に関する。
【背景技術】
【０００２】
プログラミング言語で記述されたソースプログラムは、内容が完全に一致した状態で、ターゲットマシンに直接理解される実行プログラムにコンパイルされることが望まれる。
ソースプログラムと、このソースプログラムからコンパイルされた実行プログラムとの一致又は不一致は、例えば次のようにして確認することができる。
【０００３】
つまり、ソースプログラムのコンパイラを複数用意し、互いに異なる動作環境で動作する複数の実行プログラムを生成する。そして、生成された複数の実行プログラムに対し、同一の入力値を与え、得られた出力値のそれぞれを比較することによって、コンパイラのバグを間接的に検出することができる。
この２種類のコンパイラにおいて、共通の箇所に同じバグが存在する可能性は極めて低い。このため、出力結果に不一致が存在すれば、いずれか一方のコンパイラにバグの存在が推定される（例えば、特許文献１，２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１４１４０６号公報
【特許文献２】特開２００４−２２７１２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したソースプログラムと実行プログラムとの一致・不一致の確認作業は、バグ位置が不一致であることが期待される、製造元の異なる２種類のコンパイラが必要となる。
しかし、ＣＰＵによっては、このように２種類のコンパイラを入手することが困難な場合があり、この場合は、ソースプログラムと実行プログラムの一致・不一致を確認することが不可能である。
【０００６】
本発明はこのような事情を考慮してなされたもので、単独のコンパイラで、ソースプログラムと実行プログラムとの一致・不一致を確認することができるコンパイラ評価技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
コンパイラ評価装置において、プログラミング言語で記述されたソースプログラムを保持する第１保持部と、前記ソースプログラムをプロセッサで実行できるようにコンパイルした実行プログラムを保持する第２保持部と、前記ソースプログラム及び前記実行プログラムの少なくとも一方に基づいてテストデータを生成するテストデータ生成部と、前記テストデータを保持し前記実行プログラムの実行手段に送出する第３保持部と、前記テストデータを入力し前記ソースプログラムを実行するインタープリタと、前記実行プログラムの実行手段の実行結果及び前記インタープリタの実行結果を対比して一致するか否かを判定する判定部とを、備えることを特徴とする。
【発明の効果】
【０００８】
本発明により、単独のコンパイラで、ソースプログラムと実行プログラムとの一致・不一致を確認することができるコンパイラ評価技術が提供される。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１実施形態に係るコンパイラ評価装置を示すブロック図。
【図２】ソースプログラムを構成する関数の一例を示す図。
【図３】図２に示すソースプログラムの関数に対応する実行プログラムを示す図。
【図４】第１実施形態におけるテストデータ生成部のアルゴリズムを示すフローチャート。
【図５】第１実施形態におけるテストデータを示す表。
【図６】インタープリタのアルゴリズムを示すフローチャート。
【図７】判定部のアルゴリズムを示すフローチャート。
【図８】第１実施形態におけるテストデータに基づく判定結果を示す表。
【図９】第２実施形態におけるテストデータ生成部のアルゴリズムを示すフローチャート。
【図１０】第２実施形態におけるテストデータを示す表。
【図１１】第２実施形態におけるテストデータに基づく判定結果を示す表。
【図１２】本発明の第３実施形態に係るコンパイラ評価装置を示すブロック図。
【図１３】第３実施形態におけるターゲットＣＰＵエミュレータのアルゴリズムを示すフローチャート。
【図１４】本発明の第４実施形態に係るコンパイラ評価装置を示すブロック図。
【図１５】第４実施形態に係るコンパイラ評価装置の変形例を示すブロック図。
【図１６】内部範囲（ａ，ｂ）が設定されたソースプログラムの一例を示す図。
【図１７】比較範囲（Ａ，Ｂ）が設定された実行プログラムの一例を示す図。
【図１８】第４実施形態における範囲設定部のアルゴリズムを示すフローチャート。
【図１９】第４実施形態において範囲設定されたプログラム（範囲ａ，Ａ）における実行結果の判定結果を示す表。
【図２０】第４実施形態において範囲設定されたプログラム（範囲ｂ，Ｂ）における実行結果の判定結果を示す表。
【図２１】第５実施形態における範囲設定部のアルゴリズムを示すフローチャート。
【図２２】第５実施形態において範囲設定されたプログラム（範囲ａ，Ａ）における実行結果の判定結果を示す表。
【図２３】第５実施形態において範囲設定されたプログラム（範囲ｂ，Ｂ）における実行結果の判定結果を示す表。
【図２４】（Ａ）実行プログラムから入力変数を抽出する方法において実行プログラムから入力変数を抽出するアルゴリズムを示す図、（Ｂ）実行プログラムから入力変数を抽出する方法において実行プログラムから入力変数を抽出する例を示す図。
【発明を実施するための形態】
【００１０】
（第１実施形態）
以下、本発明の実施形態を添付図面に基づいて説明する。
図１に示すように第１実施形態に係るコンパイラ評価装置１０は、プログラミング言語で記述されたソースプログラムを保持する第１保持部１１と、このソースプログラムをプロセッサで実行できるようにコンパイルした実行プログラムを保持する第２保持部１２と、このソースプログラム及び実行プログラムの少なくとも一方に基づいてテストデータを生成するテストデータ生成部１５と、このテストデータを保持し実行プログラムの実行手段（ターゲットＣＰＵ２１）に送出する第３保持部１３と、テストデータを入力しソースプログラムを実行するインタープリタ１７と、実行プログラムの実行手段（ターゲットＣＰＵ２１）の実行結果及びインタープリタ１７の実行結果を対比して一致するか否かを判定する判定部１８とを、備えている。
【００１１】
第１保持部１１は、プログラミング言語で記述されたソースプログラムを外部入力し保持するものである。
図２は、ソースプログラムを構成する関数の一例を示し、図３はこの図２に示すソースプログラムの関数に対応する実行プログラムを示している。
【００１２】
ソースプログラムは、プログラマが読み書きすることを前提に作成されたもので、一連の処理を実行する関数を単位として、複数の関数が羅列して構成されている。
そして、関数は、if, while, do-while, for, switch等で定義されるプログラムパスの組み合わせからなり、入力変数を受け取って、実行結果を引き渡す。
【００１３】
コンパイラ１４は、第１保持部１１からソースプログラムを取得して、プロセッサ（ターゲットＣＰＵ２１）において実行可能な実行プログラムにコンパイルするものである。
プロセッサは、ソースプログラムを直接理解することができないために、図３で示されるようなバイナリコードで表される実行プログラムにより処理がなされる。
【００１４】
第１実施形態におけるテストデータ生成部１５は、ソースプログラムを構成する関数（図２）を単位として抽出された入力変数（int a, int ｂ）の組み合わせに基づくテストデータ（図５）を生成するものである。
そして、生成されたテストデータ（図５）は、第３保持部１３に保持される。
【００１５】
図４のフローチャートに基づいて第１実施形態におけるテストデータ生成部１５のアルゴリズムを説明する（適宜、図１，図２参照）。
テストデータ生成部１５は、第１保持部１１からソースプログラムを読み込み（Ｓ１１）、ソースプログラムの入力変数（int a, int ｂ）を抽出する（Ｓ１２）。
【００１６】
そして、第２保持部１２から実行プログラムを読み込み（Ｓ１３）、実行プログラムの入力変数（R1,R2）を抽出する（Ｓ１４）。
【００１７】
図２４（Ａ）は、実行プログラムから入力変数を抽出するアルゴリズムを示す図である。図２４（Ａ）に示すように、実行プログラムを逆アセンブルし、ソースプログラムと実行プログラムを比較して、ソースプログラムの入力変数に対応する実行プログラムの入力変数を決定する。
【００１８】
図２４（Ｂ）は、実行プログラムから入力変数を抽出する例を示す図である。図２４（Ｂ）の例のように、"c = 0"に対応するアセンブラは"LDI R10,0"でありcとR10が対応し、"a++"に対応するアセンブラは"ADDI R1,R1,1"でありaとR1が対応し、"while(a < b)"に対応するアセンブラは"CMP R1,R2"でありbとR2が対応することを決定する。
【００１９】
さらに、図５に示すように、テストデータ生成部１５は、入力変数の全ての組み合わせについて、テストデータ出力する（Ｓ１５）。
【００２０】
変数aおよびbが8ビットの場合、変数a、bの値の範囲は、-128〜+127であるので、入力変数の全ての組合せは、
(a,b) : (-128,-128) , (-128,-127), ... , (+127,+127)
となる。テストデータは、2の16乗通り必要である。
【００２１】
変数aおよびbが16ビットの場合、変数a、bの値の範囲は、-32768〜+32767であるので、入力変数の全ての組合せは、
(a,b) : (-32768,-32768) , (-32768,-32767), ... , (+32767,+32767)
となる。テストデータは2の32乗通り必要である。
【００２２】
このテストデータの生成は、上述の方法でソースプログラムおよび実行プログラムから抽出した入力変数のいずれか一方に基づいて生成することができる。
なお、図５において、多数あるテストデータがのうち一部を示している。
【００２３】
第３保持部１３は、保持しているテストデータをインタープリタ１７及び実行プログラムの実行手段（ターゲットＣＰＵ２１）に送出する。
第１実施形態における実行プログラムの実行手段（ターゲットＣＰＵ２１）は外部機器２０に設けられている。
このために、第１実施形態のコンパイラ評価装置１０は、外部機器２０に接続して、ソースプログラム及び実行プログラムの一致・不一致を判定する。
【００２４】
ターゲットＣＰＵ２１は、第２保持部１２から実行プログラムを取得し、第３保持部１３から入力変数の組み合わせの異なる複数のテストデータを入力して実行する。そして、ターゲットＣＰＵ２１は、この実行結果を判定部１８に出力する。
インタープリタ１７は、第１保持部１１からソースプログラムを取得し、第３保持部１３から入力変数の組み合わせの異なる複数のテストデータを入力して実行する。そして、インタープリタ１７は、この実行結果を判定部１８に出力する。
【００２５】
図６のフローチャートに基づいてインタープリタ１７のアルゴリズムを説明する（適宜、図１参照）。
インタープリタ１７は、第１保持部１１からソースプログラムを読み込み（Ｓ２１）、ソースプログラムの構文解析を行って中間コードを生成する（Ｓ２２）。
そして、インタープリタ１７は、第３保持部１３からテストデータを読み込み（Ｓ２３）、中間コードを実行し（Ｓ２４）、実行結果を判定部１８に出力する（Ｓ２５）。
【００２６】
判定部１８は、実行プログラムの実行手段（ターゲットＣＰＵ２１）の実行結果及びインタープリタ１７の実行結果を対比して一致するか否かを判定する。
ここで、複数のテストデータについての実行結果のうち、同一のテストデータについてのソースプログラムと実行プログラムの実行結果を対比するためには、同一のテストデータを順にソースプログラムと実行プログラムに入力して実行させて実行結果を順に比較する方法や、実効結果にテストデータの識別情報を付加することでソースプログラムと実行プログラムの実行結果を同一のテストデータについてソートし比較する方法等を適用することができる。
【００２７】
そして、判定部１８は、一致又は不一致の判定結果を結果出力部１９に送出し、さらにこの判定結果に基づいてコンパイラ１４にバグが含まれるか否かの認定結果も結果出力部１９に送出する。
【００２８】
図７のフローチャートに基づいて判定部１８のアルゴリズムを説明する（適宜、図１及び図８参照）。ここで図８は、第１実施形態におけるテストデータに基づく判定結果を示す表である。
判定部１８は、実行プログラムの実行手段（ターゲットＣＰＵ２１）及びインタープリタ１７から、入力変数の組み合わせ（[int a, int b], [R1, R2]）が同一のテストデータの実行結果（c, R10）をそれぞれ読み込む（Ｓ３１）。
そして、これら二つの実行結果（c, R10）を対比して一致しているか否かを判定し（Ｓ３２）、「一致」又は「不一致」の判定結果を出力する（Ｓ３３，Ｓ３４）。
そして、生成したテストデータのうち一つでも「不一致」の判定結果が得られた場合はコンパイラ１４にバグが含まれると認定され、全てが「一致」の場合はバグが発見されないと認定され、その旨が表示される（Ｓ３５）。
【００２９】
（第２実施形態）
次に図１を参照して本発明における第２実施形態について説明する。
なお第２実施形態におけるコンパイラ評価装置１０において、テストデータ生成部１５の作用を除くその他の構成は、第１実施形態と共通するために重複する説明を省略する。
【００３０】
第２実施形態におけるテストデータ生成部１５は、ソースプログラムを構成する関数（図２）を単位として抽出されたプログラムパスの実行又は不実行の組み合わせに基づくテストデータ（図１０）を生成するものである。
ここで、プログラムパスとは、if, while, do-while, for, switch等により規定されたデータ処理の実行順番を制御す命令である。
【００３１】
図９のフローチャートに基づいて第２実施形態におけるテストデータ生成部１５のアルゴリズムを説明する（適宜、図１参照）。
ここで、図９のステップＳ４１からステップＳ４４は、図４のステップＳ１１からステップＳ１４に対応するので重複する説明を省略する。
【００３２】
ソースプログラムの関数を構成するif, switch, while, do-while, for等で規定されるプログラムパスの構造解析が行なわれる（Ｓ４５）。
なお、制御構造の条件分岐に用いられる変数については、全てのプログラムパスを実行するテストデータを生成する。この場合、ランダムに値を割り当てて全てのプログラムパスを実行する値を用いる方法、条件分岐の条件から全てのプログラムパスを実行する値を求める方法、などを用いる。
そして、図１０に示すように、テストデータ生成部１５は、プログラムパスの実行又は不実行の全ての組み合わせについて、対応するテストデータ出力する（Ｓ４６）。
【００３３】
図７のフローチャートに基づいて第２実施形態における判定部１８のアルゴリズムを説明する（適宜、図１及び図１１参照）。図１１は、第２実施形態におけるテストデータに基づく判定結果を示す表である。
判定部１８は、実行プログラムの実行手段（ターゲットＣＰＵ２１）及びインタープリタ１７から、プログラムパスの実行又は不実行の組み合わせ（[int a, int b], [R1, R2]）が同一のテストデータの実行結果（c, R10）をそれぞれ読み込む（Ｓ３１）。
【００３４】
そして、これら二つの実行結果を対比して一致しているか否かを判定し（Ｓ３２）、「一致」又は「不一致」の判定結果を出力する（Ｓ３３，Ｓ３４）。
そして、生成したテストデータのうち一つでも「不一致」の判定結果が得られた場合はコンパイラ１４にバグが含まれると認定され、全てが「一致」の場合はバグが発見されないと認定され、その旨が表示される（Ｓ３５）。
第２実施形態によれば、一致・不一致の判定を行うテストデータの数を削減することができ、コンパイラ１４にバグが含まれるか否かの認定を簡素化できる。
【００３５】
（第３実施形態）
次に図１２を参照して本発明における第３実施形態について説明する。
なお第３実施形態におけるコンパイラ評価装置１０は、実行プログラムの実行手段がターゲットＣＰＵをエミュレートするために内蔵されたエミュレータ２２である点を除き、その他の構成は、第１実施形態及び第２実施形態と共通する。なお、図１２において図１と共通の構成又は機能を有する部分は、同一符号で示し、重複する説明を省略する。
【００３６】
このエミュレータ２２は、第２保持部１２から実行プログラムを取得し、第３保持部１３から複数のテストデータを入力して実行する。そして、エミュレータ２２は、この実行結果を判定部１８に出力する。
【００３７】
図１３のフローチャートに基づいてターゲットＣＰＵのエミュレータ２２のアルゴリズムを説明する（適宜、図１２参照）。
エミュレータ２２は、第２保持部１２から実行プログラムを読み込む（Ｓ５１）。そして、第３保持部１３からテストデータを読み込んで実行プログラムを実行し（Ｓ５２）、実行結果を判定部１８に出力する（Ｓ５３）。
第３実施形態によれば、一つのコンピュータのみで、ソースプログラムと実行プログラムの一致・不一致を判定することができる。
【００３８】
（第４実施形態）
次に図１４を参照して本発明における第４実施形態について説明する。
図１４は第４実施形態におけるコンパイラ評価装置の基本構成を示す構成図を示し、図１５は第４実施形態の変形例を示している。そして、図１４及び図１５は、それぞれ図１及び図１２に対応している。
なお、図１４及び図１５において図１及び図１２と共通の構成又は機能を有する部分は、同一符号で示し、重複する説明を省略する。
【００３９】
第４実施形態に係るコンパイラ評価装置１０は、ソースプログラムを構成する関数（図１６）の内部範囲（ａ，ｂ）を設定するとともにこの内部範囲（ａ，ｂ）に対応する前記実行プログラム（図１７）の比較範囲（Ａ，Ｂ）を設定する範囲設定部１６をさらに備えている。
【００４０】
図１８のフローチャートに基づいて第４実施形態における範囲設定部１６のアルゴリズムを説明する（適宜、図１４参照）。なお図１９は第４実施形態において範囲設定されたプログラム（範囲ａ，Ａ）における実行結果の一致・不一致の判定結果を示し、図２０は範囲設定されたプログラム（範囲ｂ，Ｂ）における実行結果の一致・不一致の判定結果を示している。
【００４１】
範囲設定部１６は、第１保持部１１からソースプログラムを読み込み（Ｓ６１）、関数の内部範囲（ａ，ｂ）を設定する（Ｓ６２）。
なお、この内部範囲の設定方法は、ソースプログラムに#pragma命令で指定する方法、ソースプログラムの何行目〜何行目と別ファイル指定する方法等が挙げられる。
そして、第２保持部１２から実行プログラムを読み込み（Ｓ６３）、内部範囲（ａ，ｂ）に対応する実行プログラムの比較範囲（Ａ，Ｂ）を設定する（Ｓ６４）。
【００４２】
テストデータ生成部１５は、ソースプログラムの内部範囲（ａ，ｂ）及び前記実行プログラムの比較範囲（Ａ，Ｂ）の少なくとも一方に基づいてテストデータを生成する。
第４実施形態によれば、プログラムを構成する関数にさらに内部範囲を設定するので、一致・不一致の判定を行うテストデータの数を削減することができ、コンパイラ１４にバグが含まれるか否かの認定を簡素化できる。
【００４３】
（第５実施形態）
次に図２１を参照して本発明における第５実施形態について説明する。
なお第５実施形態におけるコンパイラ評価装置１０は、範囲設定部１６（図１４，図１５）が、ソースプログラムのプログラムパスを単位として内部範囲（ａ，ｂ：図１６）及び比較範囲（Ａ，Ｂ：図１７）を設定する点を除き、その他の構成は、第４実施形態と共通するために重複する説明を省略する。
【００４４】
図２１のフローチャートに基づいて第５実施形態における範囲設定部１６のアルゴリズムを説明する（適宜、図１４参照）。なお図２２は第５実施形態において範囲設定されたプログラム（範囲ａ，Ａ）における実行結果の一致・不一致の判定結果を示し、図２３は範囲設定されたプログラム（範囲ｂ，Ｂ）における実行結果の一致・不一致の判定結果を示している。
【００４５】
範囲設定部１６は、第１保持部１１からソースプログラムを読み込み（Ｓ７１）、ソースプログラムの関数を構成するif, switch, while, do-while, for等で規定されるプログラムパスを抽出する（Ｓ７２）。
そして、第２保持部１２から実行プログラムを読み込み（Ｓ７３）、内部範囲（ａ，ｂ）に対応する実行プログラムの比較範囲（Ａ，Ｂ）を設定する（Ｓ７４）。
【００４６】
テストデータ生成部１５は、ソースプログラムの内部範囲（ａ，ｂ）及び前記実行プログラムの比較範囲（Ａ，Ｂ）の少なくとも一方に基づいてテストデータを生成する。
第５実施形態によれば、プログラムを構成する関数にさらにプログラムパスを単位として内部範囲を設定するので、一致・不一致の判定を行うテストデータの数を削減することができ、コンパイラ１４にバグが含まれるか否かの認定を簡素化できる。
【００４７】
以上述べた少なくともひとつの実施形態のコンパイラ評価装置によれば、生成したテストデータに対し、ソースプログラムから直接得られる実行結果と実行プログラムから直接得られる実行結果とを対比することにより、コンパイラのバグの有無を評価することが可能となる。
【００４８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更、組み合わせを行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
また、コンパイラ評価装置の構成要素は、コンピュータのプロセッサで実現することも可能であり、コンパイラ評価プログラムにより動作させることが可能である。
【符号の説明】
【００４９】
１０…コンパイラ評価装置、１１…第１保持部、１２…第２保持部、１３…第３保持部、１４…コンパイラ、１５…テストデータ生成部、１６…範囲設定部、１７…インタープリタ、１８…判定部、１９…結果出力部、２０…外部機器、２１…ターゲットＣＰＵ、２２…エミュレータ。
【図１】
2014044678.tif 000003
【図２】
2014044678.tif 000004
【図３】
2014044678.tif 000005
【図４】
2014044678.tif 000006
【図５】
2014044678.tif 000007
【図６】
2014044678.tif 000008
【図７】
2014044678.tif 000009
【図８】
2014044678.tif 000010
【図９】
2014044678.tif 000011
【図１０】
2014044678.tif 000012
【図１１】
2014044678.tif 000013
【図１２】
2014044678.tif 000014
【図１３】
2014044678.tif 000015
【図１４】
2014044678.tif 000016
【図１５】
2014044678.tif 000017
【図１６】
2014044678.tif 000018
【図１７】
2014044678.tif 000019
【図１８】
2014044678.tif 000020
【図１９】
2014044678.tif 000021
【図２０】
2014044678.tif 000022
【図２１】
2014044678.tif 000023
【図２２】
2014044678.tif 000024
【図２３】
2014044678.tif 000025
【図２４】
2014044678.tif 000026