JP2010198629A - プログラムコード変換方法 - Google Patents
プログラムコード変換方法 Download PDFInfo
- Publication number
- JP2010198629A JP2010198629A JP2010094372A JP2010094372A JP2010198629A JP 2010198629 A JP2010198629 A JP 2010198629A JP 2010094372 A JP2010094372 A JP 2010094372A JP 2010094372 A JP2010094372 A JP 2010094372A JP 2010198629 A JP2010198629 A JP 2010198629A
- Authority
- JP
- Japan
- Prior art keywords
- register
- intermediate representation
- code
- representation
- generating
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/47—Retargetable compilers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
【解決手段】プログラムコードの第1の部分の最初の変換において、プログラムコードの前記第1の部分を優勢な条件セット下で実行するのに必要とされる中間表現だけを生成及び記憶し、プログラムコードの前記第1の部分と同じ部分6が後で入力されたときは常に、サブジェクトコードの第1の部分のための中間表現が後続の条件に対して以前に生成及び記憶されたかどうかを判定し、そのような中間表現が以前に生成されていない場合は、プログラムコードの前記第1の部分を前記後続の条件で実行するのに必要とされる追加の中間表現を生成することにより、前記プログラムコードの中間表現をメモリ内に生成して、エミュレーション実行する。
【選択図】図5
Description
表現オブジェクトを生成するコンピュータ実施ステップであって、各表現オブジェクトが、プログラム中に生じる異なるサブジェクトコード要素を表し、直接的に、又は他の表現オブジェクトからの参照を介して間接的に関係するレジスタオブジェクトから参照されるコンピュータ実施ステップとを含む。
サブジェクトコードの要素は、サブジェクトコード命令の演算又は副次演算である。各サブジェクトコード命令はこのような要素をいくつか含むこともでき、したがって、いくつかの表現オブジェクトを生成して、単一のサブジェクトコード命令を表すこともできる。
(i)プログラムコードによって生成されることになる可変値を保持するための複数のレジスタオブジェクトを生成すること、ならびに
(ii)固定値、及び/又は前記固定値と前記プログラムコードに従った前記可変値との関係を表す、複数の表現オブジェクトを生成することを含み、
前記オブジェクトは、すべてのレジスタオブジェクトをネットワークの最下部の基本ルート又はツリートランクのレベルに有する分岐したツリーのようなネットワークに構成され、レジスタオブジェクトは他のどのレジスタオブジェクトにも供給されない。
中間表現を形成するときは、中間表現によって表されているサブジェクトプロセッサの状況(例えばそのレジスタ又はメモリ空間の状況)の表現を含めることが必要である。本発明ではこれは、抽象レジスタを作成することにより、特に効率的な方式で行われる。
(i)プログラムコードによって生成されることになる可変値を保持するための複数のレジスタオブジェクトを生成すること、ならびに
(ii)固定値、及び/又は前記固定値と前記プログラムコードに従った前記可変値との関係を表す、複数の表現オブジェクトを生成することを含み、
少なくとも1つの可変サイズのレジスタが複数のレジスタオブジェクトによって表され、可変サイズのレジスタの可能な各サイズにつき1つのレジスタオブジェクトが提供される。
1つの又はそれぞれの可変サイズのプロセッサレジスタを表す、関連する抽象レジスタオブジェクトのセットを生成するコンピュータ実施ステップであって、このセットが可変サイズの各レジスタの可能な各幅につき1つの抽象レジスタを含むコンピュータ実施ステップと、
可変サイズのレジスタへのあるフィールド幅の書込み動作ごとに、同じ幅の抽象レジスタに書き込むコンピュータ実施ステップと、
どの抽象レジスタが有効データを含むかの記録を保持するコンピュータ実施ステップであって、この記録が書込み動作ごとに更新されるコンピュータ実施ステップと、
有効データが前記異なるサイズの抽象レジスタのセットのうちの1つ以上あってそれらを可変サイズのレジスタに対して行われる同じ読取り動作と同じ効果をもたらすように結合しなければならないかどうかを、所与のフィールド幅の書込み動作ごとに前記記録から判定するコンピュータ実施ステップと、
a)そのように結合が必要とされないと判定された場合は、適切なレジスタから直接に読み取り、あるいは
b)複数のレジスタからのデータをそのように結合しなければならないと判定された場合は、それらのレジスタの内容を結合するコンピュータ実施ステップを含む。
i)アクセスに必要とされるデータが1つの有効抽象レジスタ内に完全にある場合は、そのレジスタだけがアクセスされる。
ii)アクセスに必要とされるデータが複数の有効抽象レジスタ内にある場合は、それらの有効抽象レジスタからデータが結合されて、アクセスが行われる。
a)前記抽象レジスタのうち1つだけに有効データがあるときは、そのレジスタがアクセスされる。
b)アクセスの幅に対応するサイズのレジスタ中に有効データがあり、それよりも小さいどのレジスタ中にも有効データがない場合は、そのアクセスの幅にサイズが対応するそのレジスタだけがアクセスされる。
c)有効データを含むレジスタが、アクセスの幅に対応するサイズのレジスタよりも長い場合は、有効データを含むレジスタのうち最小のレジスタがアクセスされる。
a)読取り動作の幅に対応するか又はそれよりも小さいサイズの2つ又はそれ以上のレジスタ中に有効データがある場合は、これらの各レジスタからのデータが結合される。
b)読取り動作のサイズに対応するサイズのレジスタ中にデータがなく、より大きいレジスタ及びより小さいレジスタ中にデータがある場合は、これらの各レジスタからのデータが結合される。
d0=((d0+x)&0xff)|(d0&0xffffff00)
この式は、ターゲットプロセッサレジスタ上で32ビット追加を行い、ボトム8ビットを抽出し、次いでトップ24ビットをそれらの元の値に復元する。
i)コードのBasic Blockは、代替かつ未使用の入口条件を有することができる。これは、変換を行う時に検出することができる。
ii)コードのBasic Blockは、代替かつ未使用の可能な効果又は機能を有することができる。一般に、これは、変換されたコードが実行されるときにだけ検出可能となる。
本発明の第3の態様によれば、コンピュータプログラムコードの中間表現を生成する方法が提供され、この方法は、
サブジェクトコードの所与の部分を最初に変換する際に、プログラムコードのその部分を優勢な条件セットで実行するのに必要な中間表現だけを生成及び記憶するコンピュータ実施ステップと、
サブジェクトコードの同じ部分が後で入力されたときは常に、サブジェクトコードのその部分のための中間表現が後続の条件に対して以前に生成及び記憶されたかどうかを判定し、そのような中間表現が以前に生成されていない場合は、サブジェクトコードの前記部分を前記後続の条件で実行するのに必要な追加の中間表現を生成するコンピュータ実施ステップとを含む。
(i)プログラムコードによって生成されることになる可変値を保持するための複数のレジスタオブジェクトを生成すること、ならびに
(ii)固定値、及び/又は前記固定値と前記プログラムコードに従った前記可変値との関係を表す、複数の表現オブジェクトを生成することを含み、前記中間表現は、コンピュータコードのブロックに対して生成及び記憶され、同じコードブロックが後で再入力された場合には後で再利用され、前記第1のコンピュータプログラムコードの少なくとも1ブロックが、代替の未使用入口条件又は効果又は機能を有することができ、前記中間表現は、プログラムコードのそのブロックをその時の優勢な条件で実行するのに必要なとき、最初にだけ生成及び記憶される。
各IR Blockに対応するターゲットコードを記憶するコンピュータ実施ステップと、
プログラムが所与の入口条件に対するBasic Blockの実行を必要とするときに、
a)その所与の入口条件に対するそのBasic Blockを表す記憶済みターゲットコードがある場合は、前記記憶済みターゲットコードを使用し、あるいは
b)その所与の入口条件に対するそのBasic Blockを表す記憶済みターゲットコードがない場合は、その所与の入口条件に対するそのBasic Blockを表す別のIR Blockを生成するコンピュータ実施ステップを含む。
複数の可能な効果又は機能を有する特定のサブジェクトコード命令の第1の反復時に、その反復で必要とされる特定の機能だけを表す特殊ケース中間表現を生成及び記憶するコンピュータ実施ステップと、同じサブジェクトコード命令の後続の各反復で、前記後続の反復で必要とされる機能に対して特殊ケース中間表現が生成されているかどうかを判定し、そのような特殊ケース中間表現が以前に生成されていない場合に、その機能特有の追加の特殊ケース中間表現を生成するコンピュータ実施ステップとを含むことが好ましい。
(a)前記第1のコンピュータプログラムコードのブロックの中間表現を生成することと、
(b)前記中間表現から前記第2のコンピュータプログラムコードのブロックを生成することと、
(c)第2コンピュータプログラムコードの前記ブロックを前記第2のプログラム可能なマシン上で実行することと、
(d)前記第2のプログラム可能なマシン上の第1のコンピュータプログラムコードのエミュレートされる現在の実行のために必要とされる、少なくとも第1のコンピュータプログラムコードのブロックについてステップa〜cをリアルタイムで繰り返すこと、
とを含む。
Claims (48)
- プログラムコードの中間表現を生成する方法であって、
抽象レジスタを表す複数のレジスタオブジェクトを生成するコンピュータ実施ステップであって、単一のレジスタオブジェクトがそれぞれの抽象レジスタを表すコンピュータ実施ステップと、
表現オブジェクトを生成するコンピュータ実施ステップであって、各表現オブジェクトが、プログラム中に生じる異なるサブジェクトコード要素を表し、直接的に、又は他の表現オブジェクトからの参照を介して間接的に関係するレジスタオブジェクトから参照されるコンピュータ実施ステップとを含む方法。 - プログラム可能なマシン上で実行するために書かれたコンピュータプログラムコードの中間表現を生成する方法であって、
(i)プログラムコードによって生成されることになる可変値を保持するためのレジスタオブジェクトを生成すること、ならびに
(ii)固定値、及び/又は前記固定値と前記プログラムコードに従った前記可変値との関係を表す、複数の表現オブジェクトを生成することを含み、
前記オブジェクトは、すべてのレジスタオブジェクトをネットワークの最下部の基本ルート又はツリートランクのレベルに有する分岐したツリー状のネットワークに構成され、前記レジスタオブジェクトは他のどのレジスタオブジェクトにも供給されない方法。 - 前記プログラムコードがサブジェクトプロセッサの命令セットで表される、請求項1又は2に記載の方法。
- 前記レジスタオブジェクトが前記サブジェクトプロセッサのレジスタに対応する抽象レジスタを表す、前記請求項のいずれかに記載の方法。
- ただ1つの有効なエントリーポイント命令を有しかつただ1つの有効なエクジットポイント命令を有する、プログラムコードの基本ブロックに対し、前記各ステップが順次行われる、前記請求項のいずれかに記載の方法。
- 少なくともいくつかの表現オブジェクトが複数のレジスタオブジェクトに供給される、前記請求項のいずれかに記載の方法。
- 表現オブジェクトが複製されない、前記請求項のいずれかに記載の方法。
- サブジェクトコードの所与の要素に対して単一の表現オブジェクトが生成され、各表現オブジェクトが、関係するすべてのレジスタオブジェクトから参照される、前記請求項のいずれかに記載の方法。
- オブジェクトが冗長又は不要になった場合にそれが除去される、前記請求項のいずれかに記載の方法。
- 冗長又は不要なオブジェクトが、レジスタと表現オブジェクトとのネットワークが構築されるときにそのオブジェクトに対してなされる参照の継続カウントを維持することによって識別される、請求項9に記載の方法。
- 各表現オブジェクトに対し、他の表現オブジェクト又は抽象レジスタからその表現オブジェクトへの参照の数のカウントが維持され、特定の表現オブジェクトに関連するカウントが、その表現オブジェクトが作成されるか除去されるたびに調整される、請求項10に記載の方法。
- 表現オブジェクトに対する前記カウントが0のとき、その表現オブジェクトと、その表現オブジェクトからのすべての参照とが除去される請求項11に記載の方法。
- 少なくとも1つの可変サイズのレジスタが複数のレジスタオブジェクトによって表され、可変サイズのレジスタの可能な各サイズにつき1つのレジスタオブジェクトが提供される、前記請求項のいずれかに記載の方法。
- 適切なサイズに対応するレジスタオブジェクトに書き込み、どのレジスタオブジェクトが有効データを含むかの記録を保持することによって、可変サイズのレジスタへの書込み動作が行われる、請求項13に記載の方法。
- 有効データが複数の対応するレジスタオブジェクトにあってそれを可変サイズのレジスタからの読取りと同じ効果をもたらすように結合しなければならないかどうかを前記記録から判定することにより、可変サイズのレジスタからの読取り動作が行われ、
i)そのような結合が必要でないと判定された場合は、適切なレジスタオブジェクトから直接に読み取り、
ii)そのような結合が必要であると判定された場合は、適切なレジスタオブジェクトの内容を結合して読取り値を提供する、請求項14に記載の方法。 - サブジェクトプロセッサのレジスタが1つ又は複数の可変サイズのレジスタを含む場合、サブジェクトプロセッサのレジスタに対応する抽象レジスタを表す複数のレジスタオブジェクトを生成するステップがさらに、1つの又はそれぞれの可変サイズのプロセッサレジスタを表す関連する抽象レジスタオブジェクトのセットを生成することを含む方法であって、前記セットは、可変サイズの各レジスタの可能な各幅につき1つの抽象レジスタを含み、前記方法は、
可変サイズのレジスタへのあるフィールド幅の書込み動作ごとに、同じ幅の抽象レジスタに書き込むコンピュータ実施ステップと、
どの抽象レジスタが有効データを含むかの記録を保持するコンピュータ実施ステップであって、前記記録は書込み動作ごとに更新されるコンピュータ実施ステップと、
有効データが複数の前記異なるサイズの抽象レジスタのセットにあってそれを可変サイズのレジスタに対して行われる同じ読取り動作と同じ効果をもたらすように結合しなければならないかどうかを、所与のフィールド幅の書込み動作ごとに前記記録から判定するコンピュータ実施ステップと、
a)そのように結合が必要とされないと判定された場合は、適切なレジスタから直接に読み取り、あるいは
b)複数のレジスタからのデータをそのように結合しなければならないと判定された場合は、それらのレジスタの内容を結合するコンピュータ実施ステップを含む請求項4及びそれに従属するいずれかの請求項に記載の方法。 - 複数の抽象レジスタの内容を結合しなければならないか否か、また結合しなければならない場合にはどれを結合しなければならないかを決定するステップが、異なるサイズの抽象レジスタの各セットに関して以下の条件、すなわち
i)アクセスに必要とされるデータが1つの有効抽象レジスタ内に完全にある場合は、そのレジスタだけがアクセスされ、
ii)アクセスに必要とされるデータが複数の有効抽象レジスタ内にある場合は、それらの有効抽象レジスタからデータが結合されてアクセスが行われる、という条件に従って決定される請求項16に記載の方法。 - 前記中間表現が記憶され、同じコードブロックが後で再入力された場合に後で再利用される、前記請求項のいずれかに記載の方法。
- 前記第1のコンピュータプログラムコードの少なくとも1ブロックが、代替の未使用入口条件又は効果又は機能を有することができ、レジスタオブジェクトを生成するステップが、プログラムコードのその部分をその時の優勢な条件で実行するのに必要な中間表現を最初にだけ生成及び記憶する請求項18に記載の方法。
- それにより以前に記憶された中間表現が現在優勢な同じ条件セットに対するものであったかどうかを、変換すべき所与のコードブロックに対して判定し、そうでない場合は、前記コードブロックを実行するのに必要な追加の中間表現を現在優勢な新しい条件セットに対して生成及び記憶する、請求項19に記載の方法。
- サブジェクトコードの所与の部分を最初に変換する際に、プログラムコードのその部分を優勢な条件セットで実行するのに必要な中間表現だけを生成及び記憶するコンピュータ実施ステップと、
サブジェクトコードの同じ部分が後で入力されたときは常に、サブジェクトコードのその部分のための中間表現が後続の条件に対して以前に生成及び記憶されたかどうかを判定し、そのような中間表現が以前に生成されていない場合は、サブジェクトコードの前記部分を前記後続の条件で実行するのに必要な追加の中間表現を生成するコンピュータ実施ステップとをさらに含む前記請求項のいずれかに記載の方法。 - 前記中間表現がサブジェクトプログラムの実行中に動的に生成される、前記請求項のいずれかに記載の方法。
- コンパイル及び/又は変換するために書かれ、第1のプログラム可能なマシン上で実行される第1のコンピュータプログラムコードが、異なる第2のプログラム可能なマシン上で実行するための第2のコンピュータプログラムコードに動的に変換され、
(a)前記第1のコンピュータプログラムコードのブロックの中間表現を生成すること、
(b)前記中間表現から前記第2のコンピュータプログラムコードのブロックを生成すること、
(c)第2のコンピュータプログラムコードの前記ブロックを前記第2のプログラム可能なマシン上で実行すること、及び
(d)前記第2のプログラム可能なマシン上で第1のコンピュータプログラムコードをエミュレートする現行の実行に必要な、第1のコンピュータプログラムコードの少なくとも1つのブロックに対し、ステップa〜cをリアルタイムで繰り返すことを含む、請求項22に記載の方法。 - 複数の可能な効果又は機能を有する特定のサブジェクトコード命令の第1の反復時に、その反復で必要とされる特定の機能だけを表す特殊ケース中間表現を生成及び記憶するコンピュータ実施ステップと、
同じサブジェクトコード命令の後続の各反復で、前記後続の反復で必要とされる必要な機能に対して特殊ケース中間表現が生成されているかどうかを判定し、そのような特殊ケース中間表現が以前に生成されていない場合に、その機能特有の追加の特殊ケース中間表現を生成するコンピュータ実施ステップを含む請求項22又は23に記載の方法。 - 前記特殊ケース中間表現が生成及び記憶されるとき、必要な機能が関連の記憶済み特殊ケース中間表現によって表される機能と同じかどうかを各サブジェクトコード命令の後続の反復時に判定するための関連テストプロシージャが生成及び記憶され、追加の特殊ケース中間表現が必要な場合は、その特殊ケース中間表現に関連する追加のテストプロシージャがその追加の特殊ケース中間表現と共に生成及び記憶される請求項24に記載の方法。
- 特定のサブジェクトコード命令に対する追加の特殊ケース中間表現及び追加の関連テストプロシージャが、少なくとも最初はいずれかの既存の特殊ケース中間表現及び記憶された関連テストプロシージャに対する従属関係で記憶され、したがって、サブジェクトコード命令の第2の反復以降に、必要とされる機能の特殊ケース中間表現が存在すると判定されるか又は必要とされる特殊ケース中間表現が存在しないと判定されるまで前記テストプロシージャをそれが生成及び記憶された順に行うことによって、必要とされる特殊ケース中間表現が以前に生成されたかどうかの判定が行われ、必要とされる中間表現が存在しないと判定された場合は、さらに追加の中間表現及び別の関連テストプロシージャが生成される請求項25に記載の方法。
- 生成された順にテストプロシージャを順序付けるのではなく、使用頻度のより高い特殊ケース中間表現に関連するテストプロシージャが使用頻度のより低い特殊ケース中間表現に関連したテストプロシージャの前に実行されるようにテストプロシージャの順序を調整することによって中間表現が最適化される請求項26に記載の方法。
- プログラム可能なマシン上で実行するために書かれたコンピュータコードの中間表現を生成する方法であって、
(i)プログラムコードによって生成されることになる可変値を保持するための複数のレジスタオブジェクトを生成すること、ならびに
(ii)固定値、及び/又は前記固定値と前記プログラムコードに従った前記可変値との関係を表す、複数の表現オブジェクトを生成することを含み、
少なくとも1つの可変サイズのレジスタが複数のレジスタオブジェクトによって表され、可変サイズのレジスタの可能な各サイズにつき1つのレジスタオブジェクトが提供される方法。 - 適切なサイズに対応するレジスタオブジェクトに書き込み、どのレジスタオブジェクトが有効データを含むかの記録を保持することによって、可変サイズのレジスタへの書込み動作が行われる、請求項28に記載の方法。
- 有効データが複数の対応するレジスタオブジェクトにあってそれを可変サイズのレジスタからの読取りと同じ効果をもたらすように結合しなければならないかどうかを前記記録から判定することにより、可変サイズのレジスタからの読取り動作が行われ、
i)そのような結合が必要でないと判定された場合は、適切なレジスタオブジェクトから直接に読み取り、
ii)そのような結合が必要であると判定された場合は、適切なレジスタオブジェクトの内容を結合して読取り値を提供する、請求項29に記載の方法。 - 少なくとも1つの可変サイズのレジスタを含むサブジェクトプロセッサの命令セットで表されるプログラムコードの中間表現を生成する方法であって、
可変サイズのレジスタを表す関連する抽象レジスタオブジェクトのセットを生成するコンピュータ実施ステップと、
可変サイズのレジスタへのあるフィールド幅の書込み動作ごとに、同じ幅の抽象レジスタに書き込むコンピュータ実施ステップと、
どの抽象レジスタが有効データを含むかの記録を保持するコンピュータ実施ステップであって、前記記録が書込み動作ごとに更新されるコンピュータ実施ステップと、
有効データが複数の前記異なるサイズの抽象レジスタのセットのうちにあってそれを可変サイズのレジスタに対して行われる同じ読取り動作と同じ効果をもたらすように結合しなければならないどうかを、所与のフィールド幅の書込み動作ごとに前記記録から判定するコンピュータ実施ステップと、
a)そのように結合が必要とされないと判定された場合は、適切なレジスタから直接に読み取り、あるいは
b)複数のレジスタからのデータをそのように結合しなければならないと判定された場合は、それらのレジスタの内容を結合するコンピュータ実施ステップを含む方法。 - 複数の抽象レジスタの内容を結合しなければならないか否か、また結合しなければならない場合にはどれを結合しなければならないかを決定するステップが、異なるサイズの抽象レジスタの各セットに関して以下の条件、すなわち
i)アクセスに必要とされるデータが1つの有効抽象レジスタ内に完全にある場合は、そのレジスタだけがアクセスされ、
ii)アクセスに必要とされるデータが複数の有効抽象レジスタ内にある場合は、それらの有効抽象レジスタからデータが結合されてアクセスが行われる、という条件に従って決定される、請求項31に記載の方法。 - コンピュータプログラムコードの中間表現を生成する方法であって、
サブジェクトコードの所与の部分を最初に変換する際に、プログラムコードのその部分を優勢な条件セットで実行するのに必要な中間表現だけを生成及び記憶するコンピュータ実施ステップと、
サブジェクトコードの同じ部分が後で入力されたときは常に、サブジェクトコードのその部分のための中間表現が後続の条件に対して以前に生成及び記憶されたかどうかを判定し、そのような中間表現が以前に生成されていない場合は、サブジェクトコードの前記部分を前記後続の条件で実行するのに必要な追加の中間表現を生成するコンピュータ実施ステップとを含む方法。 - 前記条件が入口条件であり、
プログラムによって必要とされるときにプログラムコードのBasic Blockごとに中間表現の中間表現ブロック(IR Block)を生成するコンピュータ実施ステップであって、各IR Blockが特定の入口条件に対するプログラムコードの各Basic Blockを表すコンピュータ実施ステップと、
各IR Blockに対応するターゲットコードを記憶するコンピュータ実施ステップと、
プログラムが所与の入口条件に対するBasic Blockの実行を必要とするときに、
a)その所与の入口条件に対するそのBasic Blockを表す記憶済みターゲットコードがある場合は、前記記憶済みターゲットコードを使用し、あるいは
b)その所与の入口条件に対するそのBasic Blockを表す記憶済みターゲットコードがない場合は、その所与の入口条件に対するそのBasic Blockを表す別のIR Blockを生成するコンピュータ実施ステップを含む請求項33に記載の方法。 - プログラムの実行中にプログラムの中間表現が動的に生成され、
複数の可能な効果又は機能を有する特定のサブジェクトコード命令の第1の反復時に、その反復で必要とされる特定の機能だけを表す特殊ケース中間表現を生成及び記憶するコンピュータ実施ステップと、
同じサブジェクトコード命令の後続の各反復で、前記後続の反復で必要とされる必要な機能に対して特殊ケース中間表現が生成されているかどうかを判定し、そのような特殊ケース中間表現が以前に生成されていない場合に、その機能特有の追加の特殊ケース中間表現を生成するコンピュータ実施ステップとを含む請求項33に記載の方法。 - 前記特殊ケース中間表現が生成及び記憶されるとき、必要な機能が関連する記憶済み特殊ケース中間表現によって表される機能と同じかどうかを各サブジェクトコード命令の後続の反復時に判定するための関連テストプロシージャが生成及び記憶され、追加の特殊ケース中間表現が必要な場合は、その特殊ケース中間表現に関連する追加のテストプロシージャが、その追加の特殊ケース中間表現と共に生成及び記憶される請求項33に記載の方法。
- 特定のサブジェクトコード命令に対する追加の特殊ケース中間表現及び追加の関連テストプロシージャが、少なくとも最初はいずれかの既存の特殊ケース中間表現及び記憶済み関連テストプロシージャに対する従属関係で記憶され、したがって、サブジェクトコード命令の第2の反復以降に、必要とされる機能の特殊ケース中間表現が存在すると判定されるか又は必要とされる中間表現が存在しないと判定されるまで前記テストプロシージャをそれが生成及び記憶された順に行うことによって、必要とされる特殊ケース中間表現が以前に生成されたかどうかの判定が行われ、必要とされる中間表現が存在しないと判定された場合は、さらに追加の中間表現及び別の関連テストプロシージャが生成される請求項36に記載の方法。
- 生成された順にテストプロシージャを順序付けるのではなく、使用頻度のより高い特殊ケース中間表現に関連するテストプロシージャが使用頻度のより低い特殊ケース中間表現に関連したテストプロシージャの前に実行されるようにテストプロシージャの順序を調整することによって中間表現が最適化される請求項37に記載の方法。
- プログラム可能なマシン上で実行するために書かれたコンピュータコードの中間表現を生成する方法であって、
(i)プログラムコードによって生成されることになる可変値を保持するための複数のレジスタオブジェクトを生成すること、ならびに
(ii)固定値、及び/又は前記固定値と前記プログラムコードに従った前記可変値との関係を表す、複数の表現オブジェクトを生成することを含み、
前記中間表現は、コンピュータコードのブロックに対して生成及び記憶され、同じコードブロックが後で再入力された場合は後で再利用され、前記第1のコンピュータプログラムコードの少なくとも1ブロックが、代替の未使用入口条件又は効果又は機能を有することができ、前記中間表現は、プログラムコードのそのブロックをその時の優勢な条件で実行するのに必要なとき、最初にだけ生成及び記憶される方法。 - それにより以前に記憶された中間表現が現在優勢な同じ条件セットに対するものであったかどうかを、変換すべき所与のコードブロックに対して判定し、そうでない場合は、コードのブロックを実行するのに必要な追加の中間表現を現在優勢な新しい条件セットに対して生成及び記憶する、請求項39に記載の方法。
- コンピュータプログラムコードのターゲットコード表現を生成する方法であって、
サブジェクトコードの所与の部分を最初に変換する際に、プログラムコードのその部分を優勢な条件セットで実行するのに必要なターゲットコードだけを生成及び記憶するコンピュータ実施ステップと、
サブジェクトコードの同じ部分が後で入力されたときは常に、サブジェクトコードのその部分のためのターゲットコードが後続の条件に対して以前に生成及び記憶されたかどうかを判定し、そのようなターゲットコードが以前に生成されていない場合は、サブジェクトコードの前記部分を前記後続の条件で実行するのに必要な追加のターゲットコードを生成するコンピュータ実施ステップとを含む方法。 - コンパイル及び/又は変換するために書かれ、第1のプログラム可能なマシン上で実行される第1のコンピュータプログラムコードを、異なる第2のプログラム可能なマシン上で実行するための第2のコンピュータプログラムコードに動的に変換する方法であって、
(a)前記第1のコンピュータプログラムコードのブロックの中間表現を生成すること、
(b)前記中間表現から前記第2のコンピュータプログラムコードのブロックを生成すること、
(c)第2のコンピュータプログラムコードの前記ブロックを前記第2のプログラム可能なマシン上で実行すること、及び
(d)前記第2のプログラム可能なマシン上で第1のコンピュータプログラムコードをエミュレートする現行の実行に必要な、第1のコンピュータプログラムコードの少なくとも1つのブロックに対し、ステップa〜cをリアルタイムで繰り返すことを含む方法。 - 第1のタイプのプロセッサによって実行するために書かれたコンピュータプログラムを、第2のタイプのプロセッサによって実行できるように変換する方法であって、請求項1から38までのいずれか一項に記載にしたがって中間表現を生成することを含む方法。
- 前記変換が動的であってプログラムの実行中に行われる、請求項43に記載の方法。
- コンピュータプログラムを最適化する方法であって、請求項1から40までのいずれか一項の記載にしたがって中間表現を生成すること、及び前記中間表現を最適化することを含む方法。
- 第1のタイプのプロセッサによって実行するために書かれたコンピュータプログラムを、そのプロセッサによってより効率的に実行できるように最適化するのに使用される、請求項45に記載の方法。
- 請求する方法の各ステップを行うための手段を備えた、前記請求項のいずれかの方法を行うためのシステム。
- 添付の図面を参照しながら以下に実質的に述べる、プログラムコードの中間表現を生成する方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB9822075.9A GB9822075D0 (en) | 1998-10-10 | 1998-10-10 | Program code conversion |
US11595299P | 1999-01-14 | 1999-01-14 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000576360A Division JP4573189B2 (ja) | 1998-10-10 | 1999-10-11 | プログラムコード変換方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010198629A true JP2010198629A (ja) | 2010-09-09 |
JP4640685B2 JP4640685B2 (ja) | 2011-03-02 |
Family
ID=26314485
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000576360A Expired - Fee Related JP4573189B2 (ja) | 1998-10-10 | 1999-10-11 | プログラムコード変換方法 |
JP2010094369A Expired - Lifetime JP4709933B2 (ja) | 1998-10-10 | 2010-04-15 | プログラムコード変換方法 |
JP2010094371A Expired - Lifetime JP4640684B2 (ja) | 1998-10-10 | 2010-04-15 | プログラムコード変換方法 |
JP2010094370A Expired - Lifetime JP4640683B2 (ja) | 1998-10-10 | 2010-04-15 | プログラムコード変換方法 |
JP2010094372A Expired - Lifetime JP4640685B2 (ja) | 1998-10-10 | 2010-04-15 | プログラムコード変換方法 |
Family Applications Before (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000576360A Expired - Fee Related JP4573189B2 (ja) | 1998-10-10 | 1999-10-11 | プログラムコード変換方法 |
JP2010094369A Expired - Lifetime JP4709933B2 (ja) | 1998-10-10 | 2010-04-15 | プログラムコード変換方法 |
JP2010094371A Expired - Lifetime JP4640684B2 (ja) | 1998-10-10 | 2010-04-15 | プログラムコード変換方法 |
JP2010094370A Expired - Lifetime JP4640683B2 (ja) | 1998-10-10 | 2010-04-15 | プログラムコード変換方法 |
Country Status (8)
Country | Link |
---|---|
US (11) | US7409680B2 (ja) |
EP (3) | EP1119807B1 (ja) |
JP (5) | JP4573189B2 (ja) |
AT (2) | ATE457492T1 (ja) |
AU (1) | AU6211899A (ja) |
DE (2) | DE69924857T2 (ja) |
ES (1) | ES2340370T3 (ja) |
WO (1) | WO2000022521A1 (ja) |
Families Citing this family (96)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4573189B2 (ja) * | 1998-10-10 | 2010-11-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムコード変換方法 |
US7058932B1 (en) * | 1999-04-19 | 2006-06-06 | Unisys Corporation | System, computer program product, and methods for emulation of computer programs |
US7353163B2 (en) * | 1999-04-27 | 2008-04-01 | Transitive Limited | Exception handling method and apparatus for use in program code conversion |
US6802056B1 (en) * | 1999-06-30 | 2004-10-05 | Microsoft Corporation | Translation and transformation of heterogeneous programs |
GB0309056D0 (en) * | 2003-04-22 | 2003-05-28 | Transitive Technologies Ltd | Block translation optimizations for program code conversion |
GB0315165D0 (en) * | 2003-05-02 | 2003-08-06 | Transitive Ltd | Improved architecture for generating intermediate representations for program code conversion |
GB2401217B (en) | 2003-05-02 | 2005-11-09 | Transitive Ltd | Improved architecture for generating intermediate representations for program code conversion |
US20070186076A1 (en) * | 2003-06-18 | 2007-08-09 | Jones Anthony M | Data pipeline transport system |
JP2007526539A (ja) * | 2003-06-18 | 2007-09-13 | アンブリック, インコーポレイテッド | 集積回路開発システム |
US7617490B2 (en) * | 2003-09-10 | 2009-11-10 | Intel Corporation | Methods and apparatus for dynamic best fit compilation of mixed mode instructions |
US20050102488A1 (en) * | 2003-11-07 | 2005-05-12 | Bullis George A. | Firmware description language for accessing firmware registers |
US7770034B2 (en) * | 2003-12-16 | 2010-08-03 | Intel Corporation | Performance monitoring based dynamic voltage and frequency scaling |
US8694802B2 (en) * | 2004-04-30 | 2014-04-08 | Apple Inc. | System and method for creating tamper-resistant code |
US7464375B2 (en) * | 2004-06-24 | 2008-12-09 | International Business Machines Corporation | Method for flattening hierarchically structured flows |
JP4846226B2 (ja) * | 2004-10-26 | 2011-12-28 | 株式会社日立ソリューションズ | 情報処理装置、情報処理方法、およびプログラム |
US7861234B1 (en) * | 2005-02-23 | 2010-12-28 | Oracle America, Inc. | System and method for binary translation to improve parameter passing |
KR101244063B1 (ko) | 2005-03-11 | 2013-03-19 | 인터내셔널 비지네스 머신즈 코포레이션 | 프로그램 코드 변환시의 실행 제어 |
GB2424092A (en) * | 2005-03-11 | 2006-09-13 | Transitive Ltd | Switching between code translation and execution using a trampoline |
GB2424727B (en) | 2005-03-30 | 2007-08-01 | Transitive Ltd | Preparing instruction groups for a processor having a multiple issue ports |
GB2425372B (en) | 2005-04-20 | 2007-06-13 | Transitive Ltd | Method and apparatus for precise handling of exceptions during program code conversion |
US7805708B2 (en) * | 2005-05-13 | 2010-09-28 | Texas Instruments Incorporated | Automatic tool to eliminate conflict cache misses |
KR100725393B1 (ko) * | 2005-05-19 | 2007-06-07 | 삼성전자주식회사 | 자바 가상 머신에서 바이트 코드의 수행 시간을 줄이는시스템 및 방법 |
GB2426840A (en) | 2005-06-04 | 2006-12-06 | Transitive Ltd | Method of executing program code where a portion of the target code calls a native code portion which then calls a second target code portion. |
EP1889158B1 (en) | 2005-06-04 | 2015-04-22 | International Business Machines Corporation | Method and apparatus for combined execution of native code and target code during program code conversion |
GB2427045B (en) | 2005-06-06 | 2007-11-21 | Transitive Ltd | Method and apparatus for converting program code with access coordination for a shared resource |
US7757289B2 (en) * | 2005-12-12 | 2010-07-13 | Finjan, Inc. | System and method for inspecting dynamically generated executable code |
GB0525597D0 (en) * | 2005-12-16 | 2006-01-25 | Isis Innovation | Emulation system |
US9830174B2 (en) * | 2005-12-22 | 2017-11-28 | Synopsys, Inc. | Dynamic host code generation from architecture description for fast simulation |
US7770050B2 (en) * | 2006-05-03 | 2010-08-03 | Sony Computer Entertainment Inc. | Method and apparatus for resolving clock management issues in emulation involving both interpreted and translated code |
US7792666B2 (en) * | 2006-05-03 | 2010-09-07 | Sony Computer Entertainment Inc. | Translation block invalidation prehints in emulation of a target system on a host system |
US7813909B2 (en) * | 2006-05-03 | 2010-10-12 | Sony Computer Entertainment Inc. | Register mapping in emulation of a target system on a host system |
GB2435531A (en) * | 2006-02-27 | 2007-08-29 | Sharp Kk | Control Flow Protection Mechanism |
US8751946B2 (en) * | 2006-04-05 | 2014-06-10 | International Business Machines Corporation | Enhanced display of properties for a program object |
US8812556B2 (en) * | 2006-04-06 | 2014-08-19 | International Business Machines Corporation | Storing modification data for recreating modifications |
US7716653B2 (en) * | 2006-04-06 | 2010-05-11 | International Business Machines Corporation | Configurable importers and resource writers for converting data into another format |
EP2013723B1 (en) * | 2006-05-03 | 2019-06-12 | Sony Interactive Entertainment Inc. | Register mapping in emulation of a target system on a host system |
JP4778359B2 (ja) * | 2006-05-17 | 2011-09-21 | エヌイーシーコンピュータテクノ株式会社 | エミュレーション方法及びコンピュータシステム |
US8108844B2 (en) * | 2006-06-20 | 2012-01-31 | Google Inc. | Systems and methods for dynamically choosing a processing element for a compute kernel |
US8375368B2 (en) * | 2006-06-20 | 2013-02-12 | Google Inc. | Systems and methods for profiling an application running on a parallel-processing computer system |
US8443348B2 (en) * | 2006-06-20 | 2013-05-14 | Google Inc. | Application program interface of a parallel-processing computer system that supports multiple programming languages |
US8146066B2 (en) | 2006-06-20 | 2012-03-27 | Google Inc. | Systems and methods for caching compute kernels for an application running on a parallel-processing computer system |
US8024708B2 (en) | 2006-06-20 | 2011-09-20 | Google Inc. | Systems and methods for debugging an application running on a parallel-processing computer system |
US7814486B2 (en) * | 2006-06-20 | 2010-10-12 | Google Inc. | Multi-thread runtime system |
US8136104B2 (en) * | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for determining compute kernels for an application in a parallel-processing computer system |
US20070294675A1 (en) * | 2006-06-20 | 2007-12-20 | Transitive Limited | Method and apparatus for handling exceptions during binding to native code |
US8381202B2 (en) * | 2006-06-20 | 2013-02-19 | Google Inc. | Runtime system for executing an application in a parallel-processing computer system |
US8261270B2 (en) * | 2006-06-20 | 2012-09-04 | Google Inc. | Systems and methods for generating reference results using a parallel-processing computer system |
US8136102B2 (en) * | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for compiling an application for a parallel-processing computer system |
GB2442497B (en) | 2006-10-02 | 2010-03-31 | Transitive Ltd | Method and apparatus for administering a process filesystem with respect to program code conversion |
GB2442566B (en) | 2006-10-02 | 2009-02-11 | Transitive Ltd | Computer system and method of adapting a computer system to support a register window architecture |
GB2442495B (en) | 2006-10-02 | 2009-04-01 | Transitive Ltd | Method and apparatus for handling dynamically linked function cells with respect to program code conversion |
EP2092424B1 (en) | 2006-10-19 | 2015-12-30 | Checkmarx Ltd. | Locating security vulnerabilities in source code |
GB0623276D0 (en) | 2006-11-22 | 2007-01-03 | Transitive Ltd | Memory consistency protection in a multiprocessor computing system |
US8341609B2 (en) * | 2007-01-26 | 2012-12-25 | Oracle International Corporation | Code generation in the presence of paged memory |
US8413125B2 (en) | 2007-01-26 | 2013-04-02 | Oracle International Corporation | Asynchronous dynamic compilation based on multi-session profiling to produce shared native code |
US8601452B2 (en) * | 2007-03-02 | 2013-12-03 | Oracle International Corporation | Compiler for JAVA and .NET |
GB2447968B (en) | 2007-03-30 | 2010-07-07 | Transitive Ltd | Improvements in and relating to floating point operations |
US8245202B2 (en) * | 2007-04-18 | 2012-08-14 | Sony Computer Entertainment Inc. | Processor emulation using speculative forward translation |
GB2448523B (en) | 2007-04-19 | 2009-06-17 | Transitive Ltd | Apparatus and method for handling exception signals in a computing system |
US20090122067A1 (en) * | 2007-11-13 | 2009-05-14 | Microsoft Corporation | Open fonts including human-readable fonts for compilation |
US8060356B2 (en) | 2007-12-19 | 2011-11-15 | Sony Computer Entertainment Inc. | Processor emulation using fragment level translation |
US7991915B2 (en) * | 2008-05-05 | 2011-08-02 | Sentilla Corporation | Software platform for radio network |
GB0813833D0 (en) | 2008-07-29 | 2008-09-03 | Transitive Ltd | Apparatus and method for handling page protection faults in a computing system |
US8346531B2 (en) * | 2008-11-05 | 2013-01-01 | Oracle America, Inc. | Handling mutex locks in a dynamic binary translation across heterogeneous computer systems |
EP2216695B1 (de) * | 2009-02-09 | 2013-03-27 | Siemens Aktiengesellschaft | Verfahren zum Betrieb eines Automatisierungssystems, korrespondierendes Computerprogramm und System oder Gerät, das nach dem Verfahren arbeitet |
US8276128B2 (en) * | 2009-07-14 | 2012-09-25 | Unisys Corporation | Systems, methods, and computer programs for dynamic binary translation in a master control program interpreter |
US8024374B2 (en) * | 2009-07-24 | 2011-09-20 | Oracle International Corporation | Computer object conversion using an intermediate object |
KR101247259B1 (ko) * | 2009-12-17 | 2013-04-01 | 한국전자통신연구원 | 가상화 장치 및 그 처리 방법 |
JP5844809B2 (ja) | 2010-08-24 | 2016-01-20 | チェックマークス リミテッド | プログラミングルール違反に対するソースコードマイニング |
JP5614348B2 (ja) * | 2011-03-18 | 2014-10-29 | 富士通株式会社 | 命令処理方法、命令処理装置、及び命令処理プログラム |
US20130024674A1 (en) | 2011-07-20 | 2013-01-24 | International Business Machines Corporation | Return address optimisation for a dynamic code translator |
US8819649B2 (en) * | 2011-09-09 | 2014-08-26 | Microsoft Corporation | Profile guided just-in-time (JIT) compiler and byte code generation |
US9417855B2 (en) * | 2011-09-30 | 2016-08-16 | Intel Corporation | Instruction and logic to perform dynamic binary translation |
US8600727B2 (en) * | 2011-10-11 | 2013-12-03 | Unisys Corporation | Streamlined execution of emulated code using block-based translation mode |
TW201339861A (zh) | 2012-03-30 | 2013-10-01 | Ibm | 提供較小目標編碼空間之碼轉換的方法、電腦裝置與程式產品 |
US9557974B2 (en) * | 2012-07-10 | 2017-01-31 | Oracle International Corporation | System and method for supporting compatibility checking for lambda expression |
US9262416B2 (en) | 2012-11-08 | 2016-02-16 | Microsoft Technology Licensing, Llc | Purity analysis using white list/black list analysis |
US8752021B2 (en) * | 2012-11-08 | 2014-06-10 | Concurix Corporation | Input vector analysis for memoization estimation |
RU2514142C1 (ru) * | 2012-12-25 | 2014-04-27 | Закрытое акционерное общество "Лаборатория Касперского" | Способ повышения эффективности работы аппаратного ускорения эмуляции приложений |
US8990789B2 (en) * | 2013-04-18 | 2015-03-24 | Facebook, Inc. | Optimizing intermediate representation of script code by eliminating redundant reference count operations |
US9152400B2 (en) | 2013-04-18 | 2015-10-06 | Facebook, Inc. | Eliminating redundant reference count operations in intermediate representation of script code |
KR101462347B1 (ko) * | 2013-07-08 | 2014-12-04 | 충북대학교 산학협력단 | 가상 머신 바이너리 변환 방법 |
EP3049921A4 (en) * | 2013-09-26 | 2017-05-17 | Intel Corporation | Methods and apparatus to validate translated guest code in a dynamic binary translator |
US20160187862A1 (en) * | 2014-12-29 | 2016-06-30 | Sling Media Pvt Ltd | Systems and methods for home automation via a media device |
PT3427148T (pt) | 2016-03-11 | 2022-03-23 | Lzlabs Gmbh | Compilador de módulo de carregamento |
US10191745B2 (en) * | 2017-03-31 | 2019-01-29 | Intel Corporation | Optimized call-return and binary translation |
IL259201B (en) | 2017-05-10 | 2021-12-01 | Checkmarx Ltd | Using the same query language for static and dynamic application security testing tools |
US11196737B2 (en) | 2019-04-30 | 2021-12-07 | Bank Of America Corporation | System for secondary authentication via contactless distribution of dynamic resources |
US10998937B2 (en) | 2019-04-30 | 2021-05-04 | Bank Of America Corporation | Embedded tag for resource distribution |
US11234235B2 (en) | 2019-04-30 | 2022-01-25 | Bank Of America Corporation | Resource distribution hub generation on a mobile device |
US11074055B2 (en) * | 2019-06-14 | 2021-07-27 | International Business Machines Corporation | Identification of components used in software binaries through approximate concrete execution |
US11532309B2 (en) * | 2020-05-04 | 2022-12-20 | Austin Cox | Techniques for converting natural speech to programming code |
US11836258B2 (en) | 2020-07-28 | 2023-12-05 | Checkmarx Ltd. | Detecting exploitable paths in application software that uses third-party libraries |
WO2022265411A1 (ko) * | 2021-06-16 | 2022-12-22 | 주식회사 모레 | 프로그램의 중간표현에 대한 최적화 적용 가능성을 판단하는 방법 및 시스템 |
US11900087B1 (en) * | 2022-03-23 | 2024-02-13 | Amazon Technologies, Inc. | Application binary replatforming as a service |
WO2023248424A1 (ja) * | 2022-06-23 | 2023-12-28 | 日本電気株式会社 | 演算装置、演算方法、および、記録媒体 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0293948A (ja) * | 1988-09-30 | 1990-04-04 | Fuji Xerox Co Ltd | 計算機システム |
JPH02151931A (ja) * | 1988-12-02 | 1990-06-11 | Nec Corp | 中間言語テキストの再利用方式 |
JPH02236638A (ja) * | 1989-03-10 | 1990-09-19 | Hitachi Ltd | レジスタ割付け管理方式 |
JPH04316133A (ja) * | 1991-04-15 | 1992-11-06 | Nec Corp | プログラムのインタプリタ処理方式 |
JPH0553821A (ja) * | 1991-06-17 | 1993-03-05 | Fujitsu Ltd | コンパイル処理方式 |
JPH09171467A (ja) * | 1995-12-21 | 1997-06-30 | Nec Corp | エミュレーション装置及びその方法 |
JPH09265400A (ja) * | 1996-03-28 | 1997-10-07 | Hitachi Ltd | コンパイル最適化方式 |
Family Cites Families (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US549121A (en) * | 1895-11-05 | Deflector for blast-stackers | ||
US467290A (en) * | 1892-01-19 | Paint-can | ||
US4667290A (en) * | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
JPS63245529A (ja) | 1987-03-31 | 1988-10-12 | Toshiba Corp | レジスタ退避復元装置 |
JP2834171B2 (ja) | 1989-02-06 | 1998-12-09 | 株式会社日立製作所 | コンパイル方法 |
JPH0630063B2 (ja) * | 1989-02-17 | 1994-04-20 | 株式会社東芝 | マイクロプロセッサ |
US5119465A (en) * | 1989-06-19 | 1992-06-02 | Digital Equipment Corporation | System for selectively converting plurality of source data structures through corresponding source intermediate structures, and target intermediate structures into selected target structure |
US5274820A (en) * | 1989-08-14 | 1993-12-28 | International Business Machines Corporation | Method and system for eliminating operation codes from intermediate prolog instructions |
JPH03229327A (ja) * | 1990-02-05 | 1991-10-11 | Mitsubishi Electric Corp | 計算機プログラム実行方式 |
US5210837A (en) * | 1990-06-15 | 1993-05-11 | Digital Equipment Corporation | Methods and apparatus for transforming machine language program control into high-level language constructs by manipulating graphical program representations |
IL100990A (en) | 1991-02-27 | 1995-10-31 | Digital Equipment Corp | Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher |
US5659753A (en) * | 1991-02-27 | 1997-08-19 | Digital Equipment Corporation | Interface for symbol table construction in a multilanguage optimizing compiler |
JP3602857B2 (ja) * | 1991-04-23 | 2004-12-15 | 株式会社日立製作所 | 多機種対応型情報処理システム、および、方法 |
US5339428A (en) * | 1991-09-04 | 1994-08-16 | Digital Equipment Corporation | Compiler allocating a register to a data item used between a use and store of another data item previously allocated to the register |
US5448737A (en) * | 1992-03-17 | 1995-09-05 | International Business Machines Corporation | System and method for optimizing computer code using a compact data flow representation |
JP3450382B2 (ja) * | 1992-09-24 | 2003-09-22 | 株式会社東芝 | 画像処理装置 |
US5491821A (en) * | 1993-02-24 | 1996-02-13 | International Business Machines Corporation | Method and system for incremental processing of computer objects |
US5471633A (en) * | 1993-09-30 | 1995-11-28 | Intel Corporation | Idiom recognizer within a register alias table |
JP3276479B2 (ja) * | 1993-10-05 | 2002-04-22 | 富士通株式会社 | コンパイル方式 |
US5787285A (en) * | 1995-08-15 | 1998-07-28 | International Business Machines Corporation | Apparatus and method for optimizing applications for multiple operational environments or modes |
US5850554A (en) * | 1995-12-29 | 1998-12-15 | Intel Corporation | Compiler tool set for efficiently generating and easily managing multiple program versions of different types |
FR2743646B1 (fr) * | 1996-01-12 | 1998-03-06 | Sgs Thomson Microelectronics | Coprocesseur d'arithmetique modulaire comportant un circuit de division entiere |
FR2743907B1 (fr) * | 1996-01-18 | 1998-02-27 | Sgs Thomson Microelectronics | Procede de production d'un parametre de correction d'erreur associe a la mise en oeuvre d'operation modulaire selon la methode de montgomery |
US6226789B1 (en) | 1996-01-29 | 2001-05-01 | Compaq Computer Corporation | Method and apparatus for data flow analysis |
US5930509A (en) * | 1996-01-29 | 1999-07-27 | Digital Equipment Corporation | Method and apparatus for performing binary translation |
US5768593A (en) * | 1996-03-22 | 1998-06-16 | Connectix Corporation | Dynamic cross-compilation system and method |
US5901317A (en) | 1996-03-25 | 1999-05-04 | Sun Microsystems, Inc. | Method and system for register allocation using multiple interference graphs |
US5805895A (en) * | 1996-06-09 | 1998-09-08 | Motorola, Inc. | Method and apparatus for code translation optimization |
US5901316A (en) * | 1996-07-01 | 1999-05-04 | Sun Microsystems, Inc. | Float register spill cache method, system, and computer program product |
US5832205A (en) | 1996-08-20 | 1998-11-03 | Transmeta Corporation | Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed |
US6199152B1 (en) * | 1996-08-22 | 2001-03-06 | Transmeta Corporation | Translated memory protection apparatus for an advanced microprocessor |
US5872950A (en) * | 1997-03-31 | 1999-02-16 | International Business Machines Corporation | Method and apparatus for managing register renaming including a wraparound array and an indication of rename entry ages |
US5784588A (en) * | 1997-06-20 | 1998-07-21 | Sun Microsystems, Inc. | Dependency checking apparatus employing a scoreboard for a pair of register sets having different precisions |
CA2283776C (en) | 1997-06-25 | 2003-11-11 | Transmeta Corporation | Combining hardware and software to provide an improved microprocessor |
US6072953A (en) * | 1997-09-30 | 2000-06-06 | International Business Machines Corporation | Apparatus and method for dynamically modifying class files during loading for execution |
US6631514B1 (en) * | 1998-01-06 | 2003-10-07 | Hewlett-Packard Development, L.P. | Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations |
FR2775369B1 (fr) * | 1998-02-26 | 2001-08-03 | Sgs Thomson Microelectronics | Procede de mise en oeuvre d'une multiplication modulaire specifique relative a la methode de montgomery |
US6820266B1 (en) * | 1998-02-27 | 2004-11-16 | Oracle International Corporation | Application code conversion architecture |
US6075942A (en) * | 1998-05-04 | 2000-06-13 | Sun Microsystems, Inc. | Encoding machine-specific optimization in generic byte code by using local variables as pseudo-registers |
US6427234B1 (en) * | 1998-06-11 | 2002-07-30 | University Of Washington | System and method for performing selective dynamic compilation using run-time information |
KR20010072477A (ko) * | 1998-08-13 | 2001-07-31 | 썬 마이크로시스템즈, 인코포레이티드 | 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치 |
JP4573189B2 (ja) * | 1998-10-10 | 2010-11-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムコード変換方法 |
US20020147969A1 (en) * | 1998-10-21 | 2002-10-10 | Richard A. Lethin | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
US7353163B2 (en) * | 1999-04-27 | 2008-04-01 | Transitive Limited | Exception handling method and apparatus for use in program code conversion |
US7143401B2 (en) * | 2000-02-17 | 2006-11-28 | Elbrus International | Single-chip multiprocessor with cycle-precise program scheduling of parallel execution |
US7543284B2 (en) * | 2003-04-22 | 2009-06-02 | Transitive Limited | Partial dead code elimination optimizations for program code conversion |
US7200841B2 (en) * | 2003-04-22 | 2007-04-03 | Transitive Limited | Method and apparatus for performing lazy byteswapping optimizations during program code conversion |
US7536682B2 (en) * | 2003-04-22 | 2009-05-19 | International Business Machines Corporation | Method and apparatus for performing interpreter optimizations during program code conversion |
-
1999
- 1999-10-11 JP JP2000576360A patent/JP4573189B2/ja not_active Expired - Fee Related
- 1999-10-11 ES ES03020509T patent/ES2340370T3/es not_active Expired - Lifetime
- 1999-10-11 EP EP99949129A patent/EP1119807B1/en not_active Expired - Lifetime
- 1999-10-11 AU AU62118/99A patent/AU6211899A/en not_active Abandoned
- 1999-10-11 WO PCT/GB1999/003168 patent/WO2000022521A1/en active IP Right Grant
- 1999-10-11 AT AT03020509T patent/ATE457492T1/de not_active IP Right Cessation
- 1999-10-11 DE DE69924857T patent/DE69924857T2/de not_active Expired - Lifetime
- 1999-10-11 EP EP03020509A patent/EP1380946B1/en not_active Expired - Lifetime
- 1999-10-11 EP EP03020510A patent/EP1385090B1/en not_active Expired - Lifetime
- 1999-10-11 AT AT99949129T patent/ATE293808T1/de not_active IP Right Cessation
- 1999-10-11 DE DE69942011T patent/DE69942011D1/de not_active Expired - Lifetime
-
2001
- 2001-04-06 US US09/827,971 patent/US7409680B2/en not_active Expired - Fee Related
- 2001-04-06 US US09/828,049 patent/US7426722B2/en not_active Expired - Fee Related
- 2001-04-06 US US09/827,974 patent/US7203933B2/en not_active Expired - Lifetime
-
2002
- 2002-06-06 US US10/164,772 patent/US7328431B2/en not_active Expired - Fee Related
- 2002-06-06 US US10/165,457 patent/US7210133B2/en not_active Expired - Lifetime
- 2002-06-06 US US10/165,012 patent/US7356810B2/en not_active Expired - Fee Related
- 2002-06-06 US US10/165,029 patent/US7421686B2/en not_active Expired - Fee Related
- 2002-06-06 US US10/165,378 patent/US7346900B2/en not_active Expired - Fee Related
- 2002-06-06 US US10/164,789 patent/US7203934B2/en not_active Expired - Lifetime
-
2007
- 2007-03-27 US US11/728,723 patent/US8037461B2/en not_active Expired - Fee Related
- 2007-03-27 US US11/728,957 patent/US8006237B2/en not_active Expired - Fee Related
-
2010
- 2010-04-15 JP JP2010094369A patent/JP4709933B2/ja not_active Expired - Lifetime
- 2010-04-15 JP JP2010094371A patent/JP4640684B2/ja not_active Expired - Lifetime
- 2010-04-15 JP JP2010094370A patent/JP4640683B2/ja not_active Expired - Lifetime
- 2010-04-15 JP JP2010094372A patent/JP4640685B2/ja not_active Expired - Lifetime
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0293948A (ja) * | 1988-09-30 | 1990-04-04 | Fuji Xerox Co Ltd | 計算機システム |
JPH02151931A (ja) * | 1988-12-02 | 1990-06-11 | Nec Corp | 中間言語テキストの再利用方式 |
JPH02236638A (ja) * | 1989-03-10 | 1990-09-19 | Hitachi Ltd | レジスタ割付け管理方式 |
JPH04316133A (ja) * | 1991-04-15 | 1992-11-06 | Nec Corp | プログラムのインタプリタ処理方式 |
JPH0553821A (ja) * | 1991-06-17 | 1993-03-05 | Fujitsu Ltd | コンパイル処理方式 |
JPH09171467A (ja) * | 1995-12-21 | 1997-06-30 | Nec Corp | エミュレーション装置及びその方法 |
JPH09265400A (ja) * | 1996-03-28 | 1997-10-07 | Hitachi Ltd | コンパイル最適化方式 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4709933B2 (ja) | プログラムコード変換方法 | |
US7725883B1 (en) | Program interpreter | |
US8448152B2 (en) | High-level language, architecture-independent probe program compiler | |
JPH10320214A (ja) | コンパイルシステム及びコンピュータプログラム製品 | |
US6658655B1 (en) | Method of executing an interpreter program | |
AU663311B2 (en) | Multilanguage optimizing compiler using templates in multiple pass code generation | |
JPH02176938A (ja) | 機械語命令最適化方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100903 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100924 Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100924 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20101116 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20101116 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20101116 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20101119 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4640685 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131210 Year of fee payment: 3 |
|
EXPY | Cancellation because of completion of term |