【手続補正書】
【提出日】平成19年4月19日(2007.4.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
対象コードの目的コードへのトランスレーションの間に中間表現を生成する方法であって、
対象コードにおける複数の命令をデコードするステップと、
前記デコードされた命令の中間表現を生成するステップであって、該生成するステップは、前記中間表現における複数のＩＲノードを、少なくともベース・ノードおよび複合ノードを含む複数の可能なタイプのＩＲノードから選択された対象コードの命令によって行われる式、計算、および処理の抽象表現として設けることを含み、前記ベース・ノードのセマンティクスを、より単純なセマンティクスを表わす他のノードに分解することができないように、前記ベース・ノードは、対象コードの最も基本的なセマンティクスを表わし、前記複合ノードによって、プログラム・コードにおける複合命令のセマンティクスは、ベース・ノード表現の場合よりもコンパクトに表現される、生成するステップと、
前記複数の可能なタイプのＩＲノードから少なくとも一つのタイプのＩＲノードを決定するステップであって、前記デコードされた対象コードにおける個々の命令に対する中間表現において生成するように決定するステップと、
を備え、前記ステップは全てコンピュータにより実施される、方法。
【請求項２】
請求項１に記載の方法において、前記ベース・ノードは、複数の可能な対象アーキテクチャに渡って汎用的である、方法。
【請求項３】
請求項１に記載の方法において、前記複合ノードは、直接タイプ命令を表わし、該直接タイプ命令では、定数オペランド値が直接フィールドにおいて直接タイプ命令自体にエンコードされている、方法。
【請求項４】
請求項１に記載の方法において、前記複合ノードを、複数のベース・ノードに分解して、前記デコードされたプログラム・コードにおける命令の同じセマンティクスを表わすようにすることができる、方法。
【請求項５】
請求項１に記載の方法において、前記プログラム・コードは、対象アーキテクチャによって実行されるように構成され、前記方法は、さらに、前記対象アーキテクチャ上で対応して構成可能な特性に対してのみ複合ノードを生成するステップを備える方法。
【請求項６】
請求項１に記載の方法において、前記複数の可能なタイプのＩＲノードは、さらに、ポリモーフィック・ノードを含む、方法。
【請求項７】
請求項６に記載の方法において、前記対象コードは、対象アーキテクチャ上での実行のために構成されるとともに、目的アーキテクチャ上での実行のために前記目的コードに動的にトランスレートされ、前記方法は、さらに、
複数のポリモーフィック・ノードを含むように前記中間表現を生成すること、
を備え、前記複数のポリモーフィック・ノードの各々は、前記対象コードにおける特定の命令に特有の目的アーキテクチャの関数に対する関数ポインタを含む、方法。
【請求項８】
請求項７に記載の方法であって、さらに、
目的アーキテクチャの特性によって、特定の対象命令のセマンティクスが、ベース・ノードとして実現されるときに失われる場合に、複数のポリモーフィック・ノードを生成すること、
を備える方法。
【請求項９】
請求項７に記載の方法において、各ポリモーフィック・ノードは、前記対象コードにおける特定の命令と目的アーキテクチャの関数との組み合わせに特有である、方法。
【請求項１０】
請求項７に記載の方法において、前記決定するステップは、さらに、ポリモーフィック・ノードとして実現すべきポリモーフィック命令のリスト上の命令に対応する対象コードにおける命令を識別することを含み、
対象命令が、前記ポリモーフィック命令のリスト上の命令に対応する場合、前記生成するステップは、前記ポリモーフィック命令のリスト上の命令に対応する対象命令に対してのみポリモーフィック・ノードを生成する、方法。
【請求項１１】
請求項１に記載の方法において、前記複数の可能なタイプのＩＲノードは、さらに、アーキテクチャ特定ノードを含む、方法。
【請求項１２】
請求項１１に記載の方法において、前記対象コードは、対象アーキテクチャ上での実行のために構成されるとともに、目的アーキテクチャ上での実行のために目的コードに動的にトランスレートされ、前記方法は、さらに、
対象アーキテクチャと目的アーキテクチャとの特定の組み合わせに特有のアーキテクチャ特定ノードを含むように中間表現を生成すること、
を備える方法。
【請求項１３】
請求項１２に記載の方法において、前記生成するステップは、さらに、
最初に、前記対象コードにおけるすべての命令を、複数の対象アーキテクチャ特定ノードとして表わすことであって、各対象アーキテクチャ特定ノードは、前記対象コードにおける個々の命令に対応する、表わすこと、
前記対象コードにおける命令が、目的アーキテクチャに特化された変換関数を与える命令であるか否かを判断し、目的アーキテクチャに特化された変換関数を与えると判断された命令に対しては、対象アーキテクチャ特定ノードを目的アーキテクチャ特定ノードに変換すること、
目的アーキテクチャに特化されたコード生成関数を与えるとは識別されない残りの対象アーキテクチャ特定ノードから、ベース・ノードを生成すること、
を含む、方法。
【請求項１４】
請求項１３に記載の方法であって、さらに、
前記目的アーキテクチャ特定ノードから、目的アーキテクチャに対して特化されている対応する目的コードを生成すること、
を備える方法。
【請求項１５】
請求項１３に記載の方法であって、さらに、
前記ベース・ノードから、目的アーキテクチャに対して特化されていない対応する目的コードを生成すること、
を備える方法。
【請求項１６】
請求項７に記載の方法において、前記生成されたポリモーフィック・ノードによって、目的コードを生成する間に割り当てられるべきレジスタが特定される、方法。
【請求項１７】
請求項７に記載の方法において、前記生成されたポリモーフィック・ノードを汎用的なカーネル最適化において利用することは、前記ポリモーフィック・ノードにおける関数ポインタからの情報を推測することによって行なわれ、該情報は、推測されない場合には、前記ポリモーフィック・ノードからは決定不可能な場合もある、方法。
【請求項１８】
請求項１０に記載の方法において、対象命令が、前記ポリモーフィック命令のリスト上の命令に対応する場合、前記中間表現を生成するステップは、前記ポリモーフィック命令のリスト上の命令に対応する対象命令に対してポリモーフィック・ノードまたはベース・ノードのいずれかを生成する、方法。
【請求項１９】
請求項１に記載の方法において、前記トランスレーションは、対象命令セット・アーキテクチャのバイナリ機械コードとしての対象コードから、目的命令セット・アーキテクチャのバイナリ機械コードとしての目的コードへの動的なバイナリ・トランスレーションである、方法。
【請求項２０】
トランスレータ・ソフトウェアを有するコンピュータ可読記憶媒体であって、該トランスレータ・ソフトウェアは、コンピュータにより実行可能なコンピュータ可読コードの形態で前記コンピュータ可読記憶媒体上に常駐し、該コンピュータにより実行可能なコンピュータ可読コードは、対象プログラム・コードを目的プログラム・コードにトランスレートする間に、
前記対象コードにおける複数の命令をデコードするステップと、
前記デコードされた命令の中間表現を生成するステップであって、該生成するステップは、前記中間表現における複数のＩＲノードを、少なくともベース・ノードおよび複合ノードを含む複数の可能なタイプのＩＲノードから選択された対象コードの命令によって行われる式、計算、および処理の抽象表現として設けることを含み、前記ベース・ノードのセマンティクスを、より単純なセマンティクスを表わす他のノードに分解することができないように、前記ベース・ノードは、対象コードの最も基本的なセマンティクスを表わし、前記複合ノードによって、プログラム・コードにおける複合命令のセマンティクスは、ベース・ノード表現の場合よりもコンパクトに表現される、生成するステップと、
前記複数の可能なタイプのＩＲノードから少なくとも一つのタイプのＩＲノードを決定するステップであって、前記デコードされた対象コードにおける個々の命令に対する中間表現において生成するように決定するステップと、
を実行する、コンピュータ可読記憶媒体。
【請求項２１】
請求項２０に記載のコンピュータ可読記憶媒体において、前記ベース・ノードは、複数の可能な対象アーキテクチャに渡って汎用的である、コンピュータ可読記憶媒体。
【請求項２２】
請求項２０に記載のコンピュータ可読記憶媒体において、前記複合ノードは、直接タイプ命令を表わし、該直接タイプ命令では、定数オペランド値が直接フィールドにおいて直接タイプ命令自体にエンコードされている、コンピュータ可読記憶媒体。
【請求項２３】
請求項２０に記載のコンピュータ可読記憶媒体において、前記複合ノードを、複数のベース・ノードに分解して、前記デコードされたプログラム・コードにおける命令の同じセマンティクスを表わすようにすることができる、コンピュータ可読記憶媒体。
【請求項２４】
請求項２０に記載のコンピュータ可読記憶媒体において、前記対象プログラム・コードは、対象アーキテクチャによって実行されるように構成され、前記方法は、さらに、
前記対象アーキテクチャ上で対応して構成可能な特性に対してのみ複合ノードを生成するステップ、
を備える、コンピュータ可読記憶媒体。
【請求項２５】
請求項２０に記載のコンピュータ可読記憶媒体において、前記複数の可能なタイプのＩＲノードは、さらに、ポリモーフィック・ノードを含む、コンピュータ可読記憶媒体。
【請求項２６】
請求項２５に記載のコンピュータ可読記憶媒体において、前記対象プログラム・コードは、対象アーキテクチャ上での実行のために構成されているとともに、目的アーキテクチャ上での実行のために目的コードに動的にトランスレートされ、前記トランスレータ・ソフトウェアは、さらに、
ポリモーフィック・ノードを含むように中間表現を生成するステップであって、前記ポリモーフィック・ノードは、前記対象コードにおける特定の命令に特有の目的アーキテクチャの関数に対する関数ポインタを含む、生成するステップ、
を実行するためのコンピュータにより実行可能なコンピュータ可読コードを含む、コンピュータ可読記憶媒体。
【請求項２７】
請求項２６に記載のコンピュータ可読記憶媒体において、前記トランスレータ・ソフトウェアは、さらに、目的アーキテクチャの特性によって、特定の対象命令のセマンティクスが、ベース・ノードとして実現されたときに失われる場合に、ポリモーフィック・ノードを生成するための、コンピュータにより実行可能なコンピュータ可読コードを含む、コンピュータ可読記憶媒体。
【請求項２８】
請求項２６に記載のコンピュータ可読記憶媒体において、各ポリモーフィック・ノードは、前記対象コードにおける特定の命令と目的アーキテクチャの関数との組み合わせに特有である、コンピュータ可読記憶媒体。
【請求項２９】
請求項２６に記載のコンピュータ可読記憶媒体において、前記ＩＲノードのタイプを決定するためのコンピュータにより実行可能なコンピュータ可読コードは、さらに、
ポリモーフィック・ノードとして実現すべきポリモーフィック命令のリスト上の命令に対応する対象コードにおける命令を識別し、
対象命令が、前記ポリモーフィック命令のリスト上の命令に対応する場合、前記ポリモーフィック命令のリスト上の命令に対応する対象命令に対してのみポリモーフィック・ノードを生成する、コンピュータ可読記憶媒体。
【請求項３０】
請求項２０に記載のコンピュータ可読記憶媒体において、前記複数の可能なタイプのＩＲノードは、さらに、アーキテクチャ特定ノードを含む、コンピュータ可読記憶媒体。
【請求項３１】
請求項３０に記載のコンピュータ可読記憶媒体において、前記対象プログラム・コードは、対象アーキテクチャ上での実行のために構成されているとともに、目的アーキテクチャ上での実行のために目的コードに動的にトランスレートされ、前記トランスレータ・ソフトウェアは、さらに、
対象アーキテクチャと目的アーキテクチャとの特定の組み合わせに特有のアーキテクチャ特定ノードを含むように中間表現を生成するステップ、
を実行するためのコンピュータにより実行可能なコンピュータ可読コードを含む、コンピュータ可読記憶媒体。
【請求項３２】
請求項３１に記載のコンピュータ可読記憶媒体において、前記トランスレータ・ソフトウェアは、さらに、
最初に、前記対象コードにおけるすべての命令を、複数の対象アーキテクチャ特定ノードとして表わすステップであって、各対象アーキテクチャ特定ノードは、前記対象コードにおける個々の命令に対応する、表わすステップと
前記対象コードにおける命令が、目的アーキテクチャに特化された変換関数を与える命令であるか否かを判断し、目的アーキテクチャに特化された変換関数を与えると判断された命令に対しては、対象アーキテクチャ特定ノードを目的アーキテクチャ特定ノードに変換するステップと、
目的アーキテクチャに特化されたコード生成関数を与えるとは識別されない残りの対象アーキテクチャ特定ノードから、ベース・ノードを生成するステップと、
を実行するためのコンピュータにより実行可能なコンピュータ可読コードを含む、コンピュータ可読記憶媒体。
【請求項３３】
請求項３２に記載のコンピュータ可読記憶媒体において、前記トランスレータ・ソフトウェアは、さらに、前記目的アーキテクチャ特定ノードから、目的アーキテクチャに対して特化されている対応する目的コードを生成するためのコンピュータにより実行可能なコンピュータ可読コードを含む、コンピュータ可読記憶媒体。
【請求項３４】
請求項３１に記載のコンピュータ可読記憶媒体において、前記トランスレータ・ソフトウェアは、さらに、前記ベース・ノードから、目的アーキテクチャに対して特化されていない対応する目的コードを生成するためのコンピュータにより実行可能なコンピュータ可読コードを含む、コンピュータ可読記憶媒体。
【請求項３５】
請求項２６に記載のコンピュータ可読記憶媒体において、前記生成されたポリモーフィック・ノードによって、目的コードを生成する間に割り当てられるべきレジスタが特定される、コンピュータ可読記憶媒体。
【請求項３６】
請求項２６に記載のコンピュータ可読記憶媒体において、前記生成されたポリモーフィック・ノードを汎用的なカーネル最適化において利用することは、前記ポリモーフィック・ノードにおける関数ポインタからの情報を推測することによって行なわれ、該情報は、推測されない場合には、前記ポリモーフィック・ノードからは決定不可能な場合もある、コンピュータ可読記憶媒体。
【請求項３７】
プロセッサと該プロセッサに結合されたメモリとを有するとともに、目的コンピューティング環境において使用され、対象コンピューティング環境において適切な対象プログラム・コードをトランスレートして、前記目的コンピューティング環境に適切な目的プログラム・コードを生成するためのトランスレータ装置であって、
前記対象プログラム・コードにおける命令をデコードするように構成されたデコーディング機構と、
前記デコードされた命令の中間表現を生成するように構成された中間表現生成機構であって、該生成機構は、前記中間表現における複数のＩＲノードを、少なくともベース・ノードおよび複合ノードを含む複数の可能なタイプのＩＲノードから選択された対象プログラム・コードの命令によって行われる式、計算、および処理の抽象表現として設けることを含み、前記ベース・ノードのセマンティクスを、より単純なセマンティクスを表わす他のノードに分解することができないように、前記ベース・ノードは、対象プログラム・コードの最も基本的なセマンティクスを表わし、前記複合ノードによって、対象プログラム・コードにおける複合命令のセマンティクスは、ベース・ノード表現の場合よりもコンパクトに表現される、中間表現生成機構と、
前記デコードされた対象プログラム・コードにおける個々の命令に対する中間表現においてどのタイプのＩＲノードを生成するのかを決定するように構成された中間表現タイプ決定機構と、
を備えるトランスレータ装置。
【請求項３８】
請求項３７に記載のトランスレータ装置において、前記ベース・ノードは、複数の可能な対象アーキテクチャに渡って汎用的である、トランスレータ装置。
【請求項３９】
請求項３７に記載のトランスレータ装置において、前記複合ノードは、直接タイプ命令を表わし、該直接タイプ命令では、定数オペランド値が直接フィールドにおいて直接タイプ命令自体にエンコードされている、トランスレータ装置。
【請求項４０】
請求項３７に記載のトランスレータ装置において、前記複合ノードを、複数のベース・ノードに分解して、前記デコードされたプログラム・コードにおける命令の同じセマンティクスを表わすようにすることができる、トランスレータ装置。
【請求項４１】
請求項３７に記載のトランスレータ装置において、前記プログラム・コードは、対象アーキテクチャによって実行されるように構成され、前記中間表現生成機構は、さらに、対象アーキテクチャ上で対応して構成可能な特性に対してのみ複合ノードを生成するための複合ノード生成機構を含む、トランスレータ装置。
【請求項４２】
請求項３７に記載のトランスレータ装置において、前記複数の可能なタイプのＩＲノードは、さらに、ポリモーフィック・ノードを含む、トランスレータ装置。
【請求項４３】
請求項４２に記載のトランスレータ装置において、前記対象プログラム・コードは、対象アーキテクチャ上での実行のために構成されるとともに、目的アーキテクチャ上での実行のために目的コードに動的にトランスレートされ、前記中間表現生成機構は、さらに、
ポリモーフィック・ノードを含むように中間表現を生成するためのポリモーフィック・ノード生成機構であって、前記ポリモーフィック・ノードは、前記対象コードにおける特定の命令に特有の目的アーキテクチャの関数に対する関数ポインタを含む、ポリモーフィック・ノード生成機構、
を含む、トランスレータ装置。
【請求項４４】
請求項４３に記載のトランスレータ装置において、前記ポリモーフィック・ノード生成機構は、目的アーキテクチャの特性によって、特定の対象命令のセマンティクスが、ベース・ノードとして実現されたときに失われる場合に、ポリモーフィック・ノードを生成する、トランスレータ装置。
【請求項４５】
請求項４３に記載のトランスレータ装置において、各ポリモーフィック・ノードは、前記対象コードにおける特定の命令と目的アーキテクチャの関数との組み合わせに特有である、トランスレータ装置。
【請求項４６】
請求項４３に記載のトランスレータ装置において、前記中間表現タイプ決定機構は、さらに、ポリモーフィック・ノードとして実現すべきポリモーフィック命令のリスト上の命令に対応する対象コードにおける命令を識別するためのポリモーフィック識別機構を含み、
対象命令が、前記ポリモーフィック命令のリスト上の命令に対応する場合、前記中間表現生成機構は、前記ポリモーフィック命令のリスト上の命令に対応する対象命令に対してのみポリモーフィック・ノードを生成する、トランスレータ装置。
【請求項４７】
請求項３７に記載のトランスレータ装置において、前記複数の可能なタイプのＩＲノードは、さらに、アーキテクチャ特定ノードを含む、トランスレータ装置。
【請求項４８】
請求項４７に記載のトランスレータ装置において、前記対象プログラム・コードは、対象アーキテクチャ上での実行のために構成されるとともに、目的アーキテクチャ上での実行のために目的コードに動的にトランスレートされ、前記中間表現生成機構は、さらに、
対象アーキテクチャと目的アーキテクチャとの特定の組み合わせに特有のアーキテクチャ特定ノードを含むように中間表現を生成するためのアーキテクチャ特定ノード生成機構、
を含む、トランスレータ装置。
【請求項４９】
請求項４８に記載のトランスレータ装置において、前記中間表現生成機構は、
最初に、前記対象プログラム・コードにおけるすべての命令を、複数の対象アーキテクチャ特定ノードとして表わすことであって、各対象アーキテクチャ特定ノードは、前記対象プログラム・コードにおける個々の命令に対応する、表わすこと、
前記対象プログラム・コードにおける命令が、目的アーキテクチャに特化された変換関数を与える命令であるか否かを判断すること、
目的アーキテクチャに特化された変換関数を与えると判断された命令に対しては、対象アーキテクチャ特定ノードを目的アーキテクチャ特定ノードに変換すること、
目的アーキテクチャに特化されたコード生成関数を与えるとは識別されない残りの対象アーキテクチャ特定ノードから、ベース・ノードを生成すること、
を実行するように構成されている、トランスレータ装置。
【請求項５０】
請求項４８に記載のトランスレータ装置であって、さらに、
前記目的アーキテクチャ特定ノードから、目的アーキテクチャに対して特化されている対応する目的コードを生成するための特化目的コード生成機構、
を備えるトランスレータ装置。
【請求項５１】
請求項４８に記載のトランスレータ装置であって、さらに、
前記ベース・ノードから、目的アーキテクチャに対して特化されていない対応する目的コードを生成するための非特化目的コード生成機構、
を備えるトランスレータ装置。
【請求項５２】
請求項４３に記載のトランスレータ装置において、前記生成されたポリモーフィック・ノードによって、目的コードを生成する間に割り当てられるべきレジスタが特定される、トランスレータ装置。
【請求項５３】
請求項４３に記載のトランスレータ装置において、前記生成されたポリモーフィック・ノードを汎用的なカーネル最適化において利用することは、前記ポリモーフィック・ノードにおける関数ポインタからの情報を推測することによって行なわれ、該情報は、推測されない場合には、前記ポリモーフィック・ノードからは決定不可能な場合もある、トランスレータ装置。
【請求項５４】
請求項４６に記載のトランスレータ装置において、対象命令が、前記ポリモーフィック命令のリスト上の命令に対応する場合、前記中間表現生成機構は、前記ポリモーフィック命令のリスト上の命令に対応する対象命令に対してポリモーフィック・ノードまたはベース・ノードのいずれかを生成する、トランスレータ装置。