JP5209073B2 - 対象プログラム・コードを目的プログラム・コードに変換するための方法、並びにコンピュータ・プログラム及びコンピュータ - Google Patents
対象プログラム・コードを目的プログラム・コードに変換するための方法、並びにコンピュータ・プログラム及びコンピュータ Download PDFInfo
- Publication number
- JP5209073B2 JP5209073B2 JP2011030163A JP2011030163A JP5209073B2 JP 5209073 B2 JP5209073 B2 JP 5209073B2 JP 2011030163 A JP2011030163 A JP 2011030163A JP 2011030163 A JP2011030163 A JP 2011030163A JP 5209073 B2 JP5209073 B2 JP 5209073B2
- Authority
- JP
- Japan
- Prior art keywords
- target
- native
- code
- function
- program code
- 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.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims abstract description 149
- 238000004590 computer program Methods 0.000 title claims description 3
- 230000006870 function Effects 0.000 claims abstract description 341
- 238000013519 translation Methods 0.000 claims abstract description 36
- 238000006243 chemical reaction Methods 0.000 claims description 58
- 238000013515 script Methods 0.000 description 22
- 239000003550 marker Substances 0.000 description 17
- 230000008878 coupling Effects 0.000 description 14
- 238000010168 coupling process Methods 0.000 description 14
- 238000005859 coupling reaction Methods 0.000 description 14
- 238000013507 mapping Methods 0.000 description 14
- 230000009466 transformation Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 230000008275 binding mechanism Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000005457 optimization Methods 0.000 description 7
- 230000014509 gene expression Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000000844 transformation Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N Silicium dioxide Chemical compound O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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
- 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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- 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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Description
以下は、本発明による種々の実施形態による実現可能な種々の態様および優位性の概要である。この概要は、当業者が、後に続く詳細な構成の説明を迅速に理解するための助けとなる導入部として設けられている。概要は、添付の請求項の範囲を限定するものではなく、また決して限定することが意図されているわけではない。
対象プログラム106は、対象実行ファイル107および多くの対象ライブラリを含む。対象ライブラリは、独占的ライブラリ109およびシステム・ライブラリ111を含む。トランスレータ105は、ネイティブ結合を用いて、対象システム・ライブラリ関数111に対する対象プログラム106呼び出しを、ネイティブ・システム・ライブラリ117における関数に対する呼び出しに置換する。
ネイティブ結合メカニズム22では、トランスレータ19が、特定の対象コード17関数を、それらのネイティブ・コード28対応ファイルと関連づける必要がある。その結果、トランスレータ19は、どの対象関数を結合すべきか、およびどのネイティブ関数に対して対象関数を結合すべきかを知る。トランスレータ19は、ネイティブ結合メカニズム22の実装に依存して、種々の方法でこの関数マッピング情報を取得することができる。
ネイティブ関数を呼び出すときに、トランスレータ19は、目的アーキテクチャの呼び出し規約に適合しなければならない。比較して、目的コード21が目的アーキテクチャ呼び出し規約に準拠することは、トランスレータ19が目的コード21の全体を通して何らかの一貫した呼び出し規約に準拠する限り、必ずしも必要ではない。加えて、トランスレータ19は、対象装置状態(目的コード21において表わされる)とネイティブ装置状態(ネイティブ・コード28において表わされる)との間のデータ変換を実行することを必要としうる。両状態とも、ネイティブ関数の入力パラメータおよびその戻り値(もしあれば)に対するものである。そのようなデータ変換の例は、(i)エンディアン変換(すなわち、バイト交換(swapping))、(ii)データ構造アライメント(alignment)、(iii)対象アドレスと目的アドレスとの間の変換、及び(iv)値変換(たとえば、定数変換または値スケーリング)、を含む。
いくつかの実施形態において、ネイティブ結合に対するパラメータ変換509は、ネイティブ・コード28によって部分的に行なわれる。ネイティブ・コード・スタブは、トランスレータ19によって最適化されないという不利な点を有する。これらの実施形態において、目的コード21が、なんらかのパラメータ変換を実行し、ネイティブ呼び出し規約を用いてネイティブ呼び出しスタブを呼び出す。次に、呼び出しスタブのネイティブ・コード28は、さらなるパラメータ変換を実行し、基礎となるネイティブ関数を呼び出す。
一実施形態において、ネイティブ・コード・パラメータ変換509は、統一された呼び出しスタブ関数インターフェースを規定することによって容易にされる。統一された呼び出しスタブ関数インターフェースは、すべてのネイティブ呼び出しスタブに対する固定された関数署名と、対応するデータ形式とを規定し、それは、トランスレータ120が、基礎となるネイティブ関数の関数署名(プロトタイプ)を何ら知ることなしに、呼び出しスタブを呼び出すことを許す。これは、呼び出しスタブが、高レベルのプログラミング言語(たとえばCまたはC++)において実装されることを許し、それは、ネイティブ結合メカニズムが、トランスレータ19のエンド・ユーザにとって、より利用しやすいものとする。
他の実施形態において、ネイティブ・コード・パラメータ変換が、特別目的のネイティブ結合プログラミング言語(以後、「スクリプト言語」と呼ぶ)を用いて実装される。実行前または実行中に、トランスレータ19は、呼び出しスタブ関数実装スクリプト言語を構文解析し、それを、ネイティブ実行可能モジュールにコンパイルする。次に、前述した通り、呼び出しスタブ・モジュールがトランスレータ実行ファイルとリンクされ、(ネイティブ)呼び出しスタブ機能がネイティブ呼び出し規約を用いて呼び出される。
他の実施形態において、ネイティブ結合に対するパラメータ変換は、目的コードにおいて全体的に実施される。本実施形態において、トランスレータ19は、デコード時にネイティブ結合呼び出しを検出し、且つ、IRツリー(それは最終的に目的コードとして生成される)としてパラメータ変換をエンコードする。パラメータ変換とネイティブ関数プロトタイプの詳細とをIRにおいて表わすことによって、呼び出しスタブ・コードは、対象コードに統合されることになる(呼び出しスタブのIRは、対象コードのIRと区別できない)。これは、トランスレータが、パラメータ変換コードに対して最適化(たとえば、グループ・ブロック)を施すことを許す。対照的に、ネイティブ・コードにおいて実行されるパラメータ変換、たとえばネイティブ・コード呼び出しスタブにおいて行なわれる対象レジスタの関数パラメータへのマッピング(前述)は、トランスレータの外であり、最適化されることができない。
他の実施形態において、トランスレータ19は、スキゾ呼び出し、すなわち「S−呼び出し」と呼ばれるメカニズムを用いる。このメカニズムでは、対象コード単位がコンパイルされるときに対象コードに挿入されるトランスレータ固有のネイティブ結合命令(S呼び出しコマンドと呼ばれる)を含むように対象命令セットを拡張することによって、目的コード・パラメータ変換が容易にされる。トランスレータ19が対象コードをデコードするとき、トランスレータ19は、これらのS−呼び出しコマンドを検出し且つインタープリットし、そして適切なIR(または目的コード)をプラントしてパラメータ変換を実行する。
他の実施形態において、スキゾ呼び出しコマンドと普通の対象命令とを含む呼び出しスタブは、対象コードの別個にコンパイルされる単位内に配置される。特別目的のネイティブ結合用結合点の記述言語(前述したように)は、対象コード箇所を結合点として特定するためにトランスレータ19によって使用される。トランスレータ19がそのような結合点に到達すると、制御フローは変えられて、外部のスキゾ・スタブを代わりに実行する。この点から以降では、トランスレータの作用は、スキゾ呼び出しに対して説明した作用と同じである。外部のスキゾ・スタブは、S−呼び出しコマンドを対象コードに直接挿入できないとき(たとえば対象ライブラリ/アプリケーションに対するソース・コードが利用できないとき)に、S呼び出しコマンドを用いることを許す。
代替的な実施形態において、目的コード・パラメータ変換は、前述された通り、特別目的のネイティブ結合実装スクリプト言語(「スクリプト言語」)によって容易にされる。この実施形態において、実行時に、トランスレータが、ネイティブ結合スクリプトを、パラメータ変換のIR表現にインタープリットする。トランスレータは、パラメータ変換IRを現在のブロックのIRフォレストに統合し、それは、その後に、最適化されて、目的コードとして生成される。そのようなトランスレータは、スクリプト言語を構文解析し且つデコードすることができるフロント・エンド・コンポーネントを含まなければならない。
代替的な実施形態において、目的コード・パラメータ変換は、前述された通り、統一された呼び出しスタブ関数インターフェースを定義することによって容易にされる。統一された呼び出しスタブ関数インターフェースは、すべてのネイティブ呼び出しスタブに対する固定された関数署名と、対応するデータ形式とを定義し、それは、トランスレータが、基礎となるネイティブ関数の関数署名(プロトタイプ)を何ら知ることなしに、呼び出しスタブをネイティブ関数として呼び出すことを許す。これは、呼び出しスタブが高レベル・プログラミング言語(たとえばCまたはC++)において実装されることを許し、それは、ネイティブ結合メカニズムがトランスレータ19のエンド・ユーザにとって、より利用しやすいものとする。
(1)対象プロセッサによって実行可能な対象プログラム・コード(17)を、目的プロセッサ(13)によって実行可能な目的プログラム・コード(21)にトランスレーションする間に、ネイティブ・コード(28)を実行するためのネイティブ結合を行なうための方法であって、前記ネイティブ・コード(28)は、前記目的プロセッサ(13)によって実行可能なコードであり、前記方法は、
対応するネイティブ・コード(28)を有する特定の対象プログラム・コード(17)を特定すること、
前記特定された対象プログラム・コード(17)に対応するネイティブ・コード(28)を特定すること、
前記特定された対象プログラム・コード(17)のトランスレート済みバージョンを実行する代わりに、前記対応するネイティブ・コード(28)を実行すること、
を備える方法。
(2)(1)に記載の方法において、
前記特定された対象プログラム・コード(17)が対象関数(109)に対応し、前記特定されたネイティブ・コード(28)がネイティブ関数(117)に対応し、
前記ネイティブ・コード(28)を実行するステップは、
前記対象プログラム・コード(17)のトランスレーションにおいて、前記対象関数(109)の代わりに前記ネイティブ関数(117)を実行することを含む、方法。
(3)(2)に記載の方法において、
前記ネイティブ関数(117)を実行するステップは、
ゼロ以上の関数パラメータを目的コード表現からネイティブ・コード(28)表現に変換すること、
前記ネイティブ関数(117)を、前記ネイティブ関数(117)のプロトタイプに基づいて、前記変換された関数パラメータを用いて呼び出すこと、
前記呼び出されたネイティブ関数(117)のゼロ以上の戻り値を、ネイティブ・コード(28)表現から目的コード表現に変換すること、
を含む、方法。
(4)(3)に記載の方法において、前記変換するステップにおける少なくとも1つの変換は、該変換の中間表現を生成する、方法。
(5)(3)または(4)に記載の方法において、前記変換するステップにおける少なくとも1つの変換は、目的コードを生成する、方法。
(6)(3)、(4)、または(5)に記載の方法において、前記ネイティブ関数(117)を実行するステップはさらに、
目的コードにおいて、すべての対象レジスタ値を目的コード表現からネイティブ・コード(28)表現に変換すること、
統一された呼び出しスタブ・インターフェースに基づいて、前記変換された対象レジスタを用いて、目的コードからネイティブ・コード(28)呼び出しスタブ関数を呼び出すこと、
ネイティブ関数(117)のプロトタイプに基づいて、特定の対象レジスタおよび/またはパラメータ・スタックを用いて、ネイティブ・コード(28)呼び出しスタブ関数からネイティブ関数(117)を呼び出すこと、
を含む、方法。
(7)(3)〜(6)のうちのいずれか一に記載の方法において、前記ネイティブ関数(117)を実行するステップは、
関数パラメータを、目的コード表現からネイティブ・コード(28)表現に変換すること、
前記ネイティブ関数(117)のプロトタイプに基づいて、前記変換された関数パラメータを用いて、前記ネイティブ関数(117)を呼び出すこと、
前記呼び出されたネイティブ関数(117)の結果を、ネイティブ・コード(28)表現から目的コード表現に変換すること、
を含む、方法。
(8)(3)〜(7)のうちのいずれか一に記載の方法において、前記関数パラメータを変換するステップおよび前記ネイティブ関数(117)呼び出すステップは、対象コードにおいて、対象命令セットに加えられるトランスレータ固有の命令によって記述される、方法。
(9)(1)〜(8)のうちのいずれか一に記載の方法において、前記特定の対象コードおよびその対応するネイティブ・コード(28)を特定するステップは、結合点の記述を用いて行なわれる、方法。
(10)(9)に記載の方法において、前記結合点の記述は対象関数(109)およびネイティブ関数(117)を含み、該対象関数(109)は、対応するネイティブ・コード(28)を有する特定の対象プログラム・コード(17)を特定し、該ネイティブ関数(117)は、前記対応するネイティブ・コード(28)を特定する、方法。
(11)(10)に記載の方法であって、さらに、
対象コードのトランスレーションの間に、前記結合点の記述に含まれる前記対象関数(109)に遭遇すると、目的コード内に、前記ネイティブ関数(117)に対する呼び出しスタブを挿入すること、
を備える方法。
(12)(9)、(10)、または(11)に記載の方法において、前記結合点の記述を、トランスレーションを行なうトランスレータ内に埋め込む、方法。
(13)(9)〜(12)のうちのいずれか一に記載の方法であって、さらに、
トランスレーション実行の開始時に、前記結合点の記述を、記憶された結合点の記述ファイルから読み取ること、
を備える方法。
(14)(9)〜(13)のうちのいずれか一に記載の方法において、前記結合点の記述は、対象コード内の箇所および対応するネイティブ関数(117)を含み、該対象コード内の箇所は、対応するネイティブ・コード(28)を有する特定の対象プログラム・コード(17)を特定し、該ネイティブ関数(117)は、前記対応するネイティブ・コード(28)を特定する、方法。
(15)(9)〜(14)のうちのいずれか一に記載の方法において、前記結合点の記述は、対象コード内の箇所および呼び出すべきコードに対する参照を含み、該対象コード内の箇所は、対応するネイティブ・コード(28)を有する特定の対象プログラム・コード(17)を特定し、該呼び出すべきコードに対する参照は、前記対応するネイティブ・コード(28)を特定する、方法。
(16)(15)に記載の方法において、前記呼び出すべきコードは目的コードである、方法。
(17)(9)〜(16)のうちのいずれか一に記載の方法において、前記結合点の記述は、対象関数(109)呼び出しの前、後、あるいはその代わりに目的コード内に挿入されるネイティブ関数(117)呼び出しを含む、方法。
(18)(9)〜(17)のうちのいずれか一に記載の方法であって、さらに、
対象対ネイティブ関数(117)マッピングを、前記対象プログラムの記号テーブル内でエンコードすること、
前記対象プログラムの前記記号テーブル内のエントリを特別なネイティブ結合マーカと取り替えること、
前記特別なネイティブ結合マーカを、このマーカにトランスレーションの間に遭遇したときに、呼び出すべき適切なネイティブ関数(117)を特定する結合点の記述としてインタープリットすること、
を含む実行時記号パッチングを実行する方法。
(19)(9)〜(18)のうちのいずれか一に記載の方法において、前記結合点の記述は、外部のスキゾ呼び出しコマンドに対する対応を含み、該スキゾ呼び出しコマンドはトランスレータ固有のネイティブ結合命令であり、前記方法は、
前記対象コードのトランスレーションの間に、外部のスキゾ呼び出しコマンドを特定する結合点の記述に遭遇したときに、トランスレーションのフローを変えて、前記外部のスキゾ呼び出しコマンドの実行とすることを備える方法。
(20)(19)に記載の方法において、前記外部のスキゾ呼び出しコマンド実行ステップは、
前記外部のスキゾ呼び出しコマンドをインタープリットすること、
前記外部のスキゾ呼び出しコマンドの中間表現を生成することであって、前記コマンドは、関数パラメータを目的コード表現からネイティブ・コード(28)表現に変換し、ネイティブ関数(117)のプロトタイプに基づいて、該変換された関数パラメータを用いて、ネイティブ関数(117)を呼び出す、生成すること、
を含む、方法。
(21)(19)に記載の方法において、前記外部のスキゾ呼び出しコマンド実行ステップは、
前記外部のスキゾ呼び出しコマンドをインタープリットすること、
前記外部のスキゾ呼び出しコマンドに対する目的コードを生成することであって、前記コマンドは、関数パラメータを目的コード表現からネイティブ・コード(28)表現に変換し、ネイティブ関数(117)のプロトタイプに基づいて、該変換された関数パラメータを用いて、ネイティブ関数(117)を呼び出す、生成すること、
を含む、方法。
(22)(1)〜(21)のうちのいずれか一に記載の方法であって、さらに、
スキゾ呼び出しコマンドを対象コードに挿入することであって、該スキゾ呼び出しコマンドは、トランスレータ固有のネイティブ結合命令である、挿入すること、
対象コードのトランスレーションの間に前記スキゾ呼び出しコマンドを検出すること、を備える方法。
(23)(22)に記載の方法であって、さらに、
対象コードのトランスレーションの間にスキゾ呼び出しコマンドに遭遇したときに、トランスレーションのフローを変えてスキゾ呼び出しコマンドの実行とすること、
を備える方法。
(24)(23)に記載の方法において、前記スキゾ呼び出しコマンド実行ステップは、
前記外部のスキゾ呼び出しコマンドをインタープリットすること、
前記スキゾ呼び出しコマンドの中間表現を生成することであって、前記コマンドは、関数パラメータを目的コード表現からネイティブ・コード(28)表現に変換し、ネイティブ関数(117)のプロトタイプに基づいて、該変換された関数パラメータを用いて、ネイティブ関数(117)を呼び出す、生成すること、
を含む、方法。
(25)(23)に記載の方法において、前記スキゾ呼び出しコマンド実行ステップは、
前記スキゾ呼び出しコマンドをインタープリットすること、
前記スキゾ呼び出しコマンドに対する目的コードを生成することであって、前記コマンドは、関数パラメータを目的コード表現からネイティブ・コード(28)表現に変換し、ネイティブ関数(117)のプロトタイプに基づいて、該変換された関数パラメータを用いて、ネイティブ関数(117)を呼び出す、生成すること、
を含む、方法。
(26)(22)〜(25)のうちのいずれか一に記載の方法において、前記スキゾ呼び出しコマンドは、複数のサブ・コンポーネント命令を含む可変長命令である、方法。
(27)(26)に記載の方法において、前記複数のサブ・コンポーネント命令はスキゾ・エスケープ・サブコンポーネント命令を含み、前記スキゾ呼び出しコマンドを検出するステップはさらに、前記スキゾ・エスケープ・サブコンポーネント命令を検出することを含む、方法。
(28)(27に記載の方法において、前記スキゾ・エスケープ・サブ・コンポーネント命令はさらに、スキゾ呼び出しコマンドのその他のサブ・コンポーネント命令によって表わされるスキゾ呼び出しコマンドの形式を特定する、方法。
(29)(1)〜(28)のうちのいずれか一に記載の方法であって、さらに、
ネイティブ結合スクリプトを含むネイティブ結合実施スクリプト言語を構文解析してデコードすること、
トランスレーションの間に前記ネイティブ結合スクリプトをインタープリットすること、
前記ネイティブ結合スクリプトの中間表現を生成して、関数パラメータを目的コード表現からネイティブ・コード(28)表現に変換すること、
を備える方法。
(30)(29)に記載の方法であって、さらに、
前記ネイティブ結合スクリプトの中間表現を、対象コードのブロックに対する中間表現フォレストに統合すること、
前記中間表現フォレストに対する目的コードを生成すること、
を備える方法。
(31)(1)〜(30)のうちのいずれか一に記載の方法であって、さらに、
目的コードにおいて、すべての対象レジスタ値を目的コード表現からネイティブ・コード(28)表現に変換すること、
統一された呼び出しスタブ・インターフェースに基づいて、前記変換された対象レジスタを用いて、目的コードからネイティブ・コード(28)呼び出しスタブ関数を呼び出すこと、
前記ネイティブ・コード(28)呼び出しスタブ関数をインタープリットすること、
ネイティブ・コード(28)呼び出しスタブ関数結合スクリプトの中間表現を生成して、関数パラメータを目的コード表現からネイティブ・コード(28)表現に変換すること、を備える方法。
(32)(21)または(21)に従属するいずれか一に記載の方法であって、さらに、
ネイティブ・コード(28)呼び出しスタブ関数の中間表現を、対象コードのブロックに対する中間表現フォレストに統合すること、
前記中間表現フォレストに対する目的コードを生成すること、
を備える方法。
(33)(3)または(3)に従属するいずれか一に記載の方法において、
前記ネイティブ関数(117)を実行するステップはさらに、
目的コードにおいて、すべての対象レジスタ値を目的コード表現からネイティブ・コード(28)表現に変換すること、
前記変換された対象レジスタを用いて、目的コードから、ネイティブ・コード(28)呼び出しスタブ関数を呼び出すこと、
ネイティブ関数(117)のプロトタイプに基づいて、特定の対象レジスタおよび/またはパラメータ・スタックを用いて、ネイティブ・コード(28)呼び出しスタブ関数から、ネイティブ関数(117)を呼び出すこと、
を含む、方法。
(34)(1)〜(33)うちのいずれか一に記載の方法であって、さらに、
ネイティブ・コード(28)呼び出しスタブ関数のスクリプト言語の実施を構文解析すること、
前記構文解析されたネイティブ・コード(28)呼び出しスタブ関数をコンパイルして、ネイティブ・コード(28)実行可能モジュールにすること、
前記ネイティブ・コード(28)実行可能モジュールを、トランスレーションを行なうための実行ファイルとリンクさせること、
を備える方法。
(35)(34)に記載の方法において、前記ネイティブ・コード(28)実行可能モジュールは、
目的コードにおいて、すべての対象レジスタ値を目的コード表現からネイティブ・コード(28)表現に変換すること、
前記変換された対象レジスタを用いて、目的コードから、ネイティブ・コード(28)呼び出しスタブ関数を呼び出すこと、
ネイティブ関数(117)のプロトタイプに基づいて、特定の対象レジスタおよび/またはパラメータ・スタックを用いて、前記ネイティブ・コード(28)呼び出しスタブ関数から、ネイティブ関数(117)を呼び出すこと、
に対して実行可能である、方法。
(36)(34)または(35)に記載の方法において、前記特定の対象コードおよびその対応するネイティブ・コード(28)を特定するステップは、結合点の記述を用いて行なわれ、前記結合点の記述は、対象関数(109)およびネイティブ・コード(28)呼び出しスタブ関数を含み、該対象関数(109)は、対応するネイティブ・コード(28)を有する特定の対象プログラム・コード(17)を特定し、該ネイティブ・コード(28)呼び出しスタブ関数は、前記対応するネイティブ・コード(28)を特定する、方法。
(37)(36)に記載の方法であって、さらに、
前記ネイティブ・コード(28)実行可能モジュールのスクリプト言語の実施において、前記ネイティブ・コード(28)呼び出しスタブ関数のネイティブ関数(117)の身元をエンコードすること、
を備える方法。
(38)(3)または(3)に従属するいずれか一に記載の方法において、前記ネイティブ関数(117)を実行するステップはさらに、
目的コードにおいて、すべての対象レジスタ値を目的コード表現からネイティブ・コード(28)表現に変換すること、
前記変換された対象レジスタを用いて、目的コードから、目的コード呼び出しスタブ関数を呼び出すこと、
ネイティブ関数(117)のプロトタイプに基づいて、特定の対象レジスタおよび/またはパラメータ・スタックを用いて、目的コード呼び出しスタブ関数からネイティブ関数(117)を呼び出すこと、
を含む、方法。
(39)(38)に記載の方法であって、さらに、
前記ネイティブ関数(117)を実行するステップの中間表現を生成すること、
前記ネイティブ関数(117)を実行するステップの中間表現を、対象コードのブロックに対する中間表現フォレストに統合すること、
前記中間表現フォレストに対する目的コードを生成すること、
を備える方法。
(40)(1)〜(39)のうちのいずれか一に記載の方法において、前記実行すべき対象関数(109)はシステム呼び出しである、方法。
(41)(1)〜(40)のうちのいずれか一に記載の方法において、前記実行すべき対象関数(109)はライブラリ関数である、方法。
(42)(1)〜(41)のうちのいずれか一の方法を行なうように、コンピュータによって実行可能であるコンピュータ読取可能なコードの形態のソフトウェアが常駐するコンピュータ読取可能な記憶媒体。
(43)目的プロセッサ(13)と、
(1)〜(41)のうちのいずれか一の方法を行なうためのトランスレータ・コードとの組み合わせ。
(1) 対象プロセッサによって実行可能な対象プログラム・コードを、目的プロセッサによって実行可能であり且つトランスレータによって実行時にトランスレートされて生成される目的プログラム・コードに変換するための方法であって、コンピュータが、
前記対象プログラム・コードを複数の対象プログラム・コード単位に分割するステップと、
1以上の前記分割された対象プログラム・コード単位を1以上の目的プログラム・コード単位に変換するステップと、
前記目的プロセッサ上で前記変換された目的プログラム・コード単位を実行するステップと
を実行することを含み、
前記変換するステップは、
前記対象プログラム・コード中の対象関数を特定するステップであって、前記対象プログラム・コード中の対象関数はネイティブ・コードの対応する関数を有し、前記ネイティブ・コードが前記目的プロセッサによって実行可能なコードであり且つ前記トランスレータの外で直接コンパイルされて事前に生成されたものである、前記対象関数を特定するステップと、
前記ネイティブ・コードの前記ネイティブ関数を特定するステップであって、前記ネイティブ・コードの前記ネイティブ関数は前記特定された対象関数に対応する、前記ネイティブ関数を特定するステップと
を含み、
前記実行するステップは、
前記特定された対象関数の変換されたコードを実行する代わりに、前記目的プロセッサ上で前記ネイティブ関数を実行するステップ
を含む、前記方法。
(2) 前記ネイティブ関数を実行するステップは、
関数パラメータを、目的コードからネイティブ・コードに変換するステップと、
前記ネイティブ関数のプロトタイプに従う前記変換された関数パラメータを、前記ネイティブ関数を呼び出すステップと、
前記呼び出されたネイティブ関数の戻り値を、ネイティブ・コードから目的コードに変換するステップと
を含む、(1)に記載の方法。
(3) 前記変換するステップにおける変換は、該変換の中間コードを生成する、(1)に記載の方法。
(4) 前記変換するステップにおける変換は、目的コードを生成する、(1)に記載の方法。
(5) 前記ネイティブ関数を実行するステップは、
目的コードにおいて、すべての対象レジスタ値を目的コードからネイティブ・コード表現に変換するステップと、
統一された呼び出しスタブ・インターフェースに従う前記変換された対象レジスタを用いて、ネイティブ・コード呼び出しスタブ関数を目的コードから呼び出すステップと、
ネイティブ関数のプロトタイプに従う特定の対象レジスタ及び/又はパラメータ・スタックを用いて、前記ネイティブ関数を前記呼び出されたネイティブ・コード呼び出しスタブ関数から呼び出すステップと
をさらに含む、(1)〜(4)のいずれか一に記載の方法。
(6) 前記ネイティブ関数を実行するステップは、
関数パラメータを、目的コードからネイティブ・コードに変換するステップと、
前記ネイティブ関数のプロトタイプに従う前記変換された関数パラメータを用いて、前記ネイティブ関数を呼び出すステップと、
前記呼び出されたネイティブ関数の結果を、ネイティブ・コードから目的コードに変換するステップと
を含む、(1)〜(5)のいずれか一に記載の方法。
(7) 前記関数パラメータを変換するステップ及び前記ネイティブ関数呼び出すステップは、対象コードにおいて、対象命令セットに加えられるトランスレータ固有の命令によって記述される、(2)〜(6)のいずれか一に記載の方法。
(8) 前記対象関数の特定及びその対応するネイティブ関数の特定が、結合点の記述を用いて行なわれる、(1)〜(7)のいずれか一に記載の方法。
(9) 前記対象コードのトランスレーションの間に、前記結合点の記述から特定される前記対象関数に遭遇すると、前記目的コード内に、前記ネイティブ関数に対する呼び出しスタブを挿入するステップをさらに含む、(8)に記載の方法。
(10) 前記結合点の記述は、前記トランスレーションを行なうトランスレータ内に埋め込まれる、(8)又は(9)に記載の方法。
(11) トランスレーション実行の開始時に、前記結合点の記述を、記憶された結合点の記述ファイルから読み取るステップをさらに含む、(8)〜(10)のいずれか一に記載の方法。
(12) 前記結合点の記述は、対象コード内の位置及び対応するネイティブ関数を用いて行われる、(8)〜(11)のいずれか一に記載の方法。
(13) 前記結合点の記述は、対象コード内の位置及び呼び出されるべきコードに対する参照を用いて行われる、(8)〜(12)のいずれか一に記載の方法。
(14) 前記呼び出されるべきコードは目的コードである、(13)に記載の方法。
(15) 前記結合点の記述は、対象関数呼び出しの前、後、あるいはその代わりに目的コード内に挿入されるネイティブ関数呼び出しを用いて行われる、(8)〜(14)のいずれか一に記載の方法。
(16) 前記コンピュータが、
実行時シンボル・パッチングを実行するステップをさらに含み、
前記実行時シンボル・パッチングを実行するステップが、
前記対象プログラムのシンボル・テーブル内で対象対ネイティブ関数マッピングをエンコードするステップと、
前記対象プログラムの前記シンボル・テーブル内のエントリを特別なネイティブ結合マーカと取り替えるステップと、
前記特別なネイティブ結合マーカを、このマーカにトランスレーションの間に遭遇したときに、結合点の記述としてインタープリットして、呼び出すべき適切なネイティブ関数を特定するステップと
を含む、(8)〜(15)のいずれか一に記載の方法。
(17) 前記外部の呼び出しコマンドはトランスレータ固有のネイティブ結合命令であり、
前記方法は、前記コンピュータが、
前記対象コードのトランスレーションの間に、外部の呼び出しコマンドを特定する結合点の記述に遭遇したときに、トランスレーションのフローを変えて、前記外部の呼び出しコマンドを実行するステップを含む、(8)〜(16)のいずれか一に記載の方法。
(18) 前記外部の呼び出しコマンドを実行するステップは、
前記外部の呼び出しコマンドをインタープリットするステップと、
前記外部の呼び出しコマンドの中間コードを生成するステップとであって、前記コマンドは、関数パラメータを目的コードからネイティブ・コードに変換し、ネイティブ関数のプロトタイプに従う前記変換された関数パラメータを用いて、ネイティブ関数を呼び出す、前記生成するステップと
を含む、(17)に記載の方法。
(19) 前記外部の呼び出しコマンドを実行するステップは、
前記外部の呼び出しコマンドをインタープリットするステップと、
前記外部の呼び出しコマンドに対する目的コードを生成するステップであって、前記コマンドは、関数パラメータを目的コードからネイティブ・コードに変換し、ネイティブ関数のプロトタイプに従う前記変換された関数パラメータを用いて、ネイティブ関数を呼び出す、前記生成するステップと
を含む、(17)に記載の方法。
(20) 前記コンピュータが、
外部の呼び出しコマンドを対象コードに挿入するステップとであって、前記外部の呼び出しコマンドは、トランスレータ固有のネイティブ結合命令である、前記挿入するステップと、
対象コードのトランスレーションの間に前記外部の呼び出しコマンドを検出するステップと、
をさらに実行することを含む、(1)〜(19)のいずれか一に記載の方法。
(21) 前記コンピュータが、
対象コードのトランスレーションの間に前記外部の呼び出しコマンドに遭遇したときに、トランスレーションのフローを変えて前記外部の呼び出しコマンドを実行するステップをさらに含む、(20)に記載の方法。
(22) 前記外部の呼び出しコマンドを実行するステップは、
前記外部の呼び出しコマンドをインタープリットするステップと、
前記外部の呼び出しコマンドの中間コードを生成するステップとであって、前記コマンドは、関数パラメータを目的コードからネイティブ・コードに変換し、ネイティブ関数のプロトタイプに従う前記変換された関数パラメータを用いて、ネイティブ関数を呼び出す、前記生成するステップと
を含む、(21)に記載の方法。
(23) 前記外部の呼び出しコマンドを実行するステップは、
前記外部の呼び出しコマンドをインタープリットするステップと、
前記外部の呼び出しコマンドに対する目的コードを生成するステップであって、前記コマンドは、関数パラメータを目的コードからネイティブ・コードに変換し、ネイティブ関数のプロトタイプに従う前記変換された関数パラメータを用いて、ネイティブ関数を呼び出す、前記生成するステップと
を含む、(21)に記載の方法。
(24) 前記外部の呼び出しコマンドは、複数のサブ・コンポーネント命令を含む可変長命令である、(20)〜(23)のいずれか一に記載の方法。
(25) 前記複数のサブ・コンポーネント命令はエスケープ・サブコンポーネント命令を含み、
前記スキゾ呼び出しコマンドを検出するステップは、前記エスケープ・サブコンポーネント命令を検出するステップをさらに含む、(24)に記載の方法。
(26) 前記エスケープ・サブコンポーネント命令はさらに、外部の呼び出しコマンドのその他のサブ・コンポーネント命令によって表わされる前記外部の呼び出しコマンドの形式を特定する、(25)に記載の方法。
(27) 前記コンピュータが、
ネイティブ結合実装スクリプト言語を構文解析してデコードするステップと、
トランスレーションの間に、前記ネイティブ結合実装スクリプト言語で作られたネイティブ結合スクリプトをインタープリットするステップと、
前記ネイティブ結合スクリプトの中間コードを生成して、関数パラメータを目的コードからネイティブ・コードに変換するステップと
をさらに実行することを含む、(1)〜(27)のいずれか一に記載の方法。
(28) 前記ネイティブ結合スクリプトの中間コードを、対象コードのブロックに対する中間コード・フォレストに統合するステップと、
前記中間コード・フォレストに対する目的コードを生成するステップと
をさらに含む、(27)に記載の方法。
(29) 前記コンピュータが、
目的コードにおいて、すべての対象レジスタ値を目的コードからネイティブ・コードに変換するステップと、
統一された呼び出しスタブ・インターフェースに従う前記変換された対象レジスタを用いて、ネイティブ・コード呼び出しスタブ関数を目的コードから呼び出すステップと、
前記ネイティブ・コード呼び出しスタブ関数をインタープリットするステップと、
ネイティブ・コード呼び出しスタブ関数結合スクリプトの中間コードを生成して、関数パラメータを目的コードからネイティブ・コードに変換するステップと
をさらに実行することを含む、(1)〜(28)のいずれか一に記載の方法。
(30) 前記コンピュータが、
ネイティブ・コード呼び出しスタブ関数の中間コードを、対象コードのブロックに対する中間コード・フォレストに統合するステップと、
前記中間コード・フォレストに対する目的コードを生成するステップと
をさらに実行することを含む、(19)に記載の方法。
(31) 前記ネイティブ関数を実行するステップは、
目的コードにおいて、すべての対象レジスタ値を目的コードからネイティブ・コードに変換するステップと、
前記変換された対象レジスタを用いて、目的コードから、ネイティブ・コード呼び出しスタブ関数を呼び出すステップと、
ネイティブ関数のプロトタイプに従う特定の対象レジスタ及び/又はパラメータ・スタックを用いて、ネイティブ関数をネイティブ・コード呼び出しスタブ関数から呼び出すステップと
をさらに含む、(1)に記載の方法。
(32) 前記コンピュータが、
ネイティブ・コード呼び出しスタブ関数実装スクリプト言語を構文解析するステップと、
前記構文解析されたネイティブ・コード呼び出しスタブ関数をコンパイルして、ネイティブ・コード実行可能モジュールにするステップと、
前記ネイティブ・コード実行可能モジュールを、トランスレーションを行なうための実行ファイルとリンクさせるステップと
をさらに実行することを含む、(1)〜(31)のいずれか一に記載の方法。
(33) 前記ネイティブ・コード実行可能モジュールは、
目的コードにおいて、すべての対象レジスタ値を目的コードからネイティブ・コードに変換するステップと、
前記変換された対象レジスタを用いて、ネイティブ・コード呼び出しスタブ関数を目的コードから呼び出すステップと、
ネイティブ関数のプロトタイプに従う特定の対象レジスタ及び/又はパラメータ・スタックを用いて、ネイティブ関数を前記ネイティブ・コード呼び出しスタブ関数から呼び出すステップと
に対して実行可能である、(32)に記載の方法。
(34) 前記対象関数及びその対応するネイティブ関数を特定するステップは、結合点の記述を用いて行なわれ、
前記結合点の記述は、対象関数及びネイティブ・コード呼び出しスタブ関数を用いて行われる、(32)又は(33)に記載の方法。
(35) 前記コンピュータが、
前記ネイティブ・コード実行可能モジュールのスクリプト言語中の前記ネイティブ・コード呼び出しスタブ関数のネイティブ関数の識別子をハード・コードするステップを実行するステップをさらに含む、(34)に記載の方法。
(36) 前記ネイティブ関数を実行するステップは、
目的コードにおいて、すべての対象レジスタ値を目的コードからネイティブ・コードに変換するステップと、
前記変換された対象レジスタを用いて、目的コード呼び出しスタブ関数を目的コードから呼び出すステップと、
ネイティブ関数のプロトタイプに従う特定の対象レジスタ及び/又はパラメータ・スタックを用いて、ネイティブ関数を目的コード呼び出しスタブ関数から呼び出すステップと
をさらに含む、(1)に記載の方法。
(37) 前記コンピュータが、
前記ネイティブ関数を実行するステップにおいて、中間コードを生成するステップと、
前記生成された中間コードを、対象コードのブロックに対する中間コード・フォレストに統合するステップと、
前記中間コード・フォレストに対する目的コードを生成するステップと
をさらに実行することを含む、(36)に記載の方法。
(38) 前記実行されるべき対象関数は、システム呼び出し関数、又は、ライブラリ関数である、(1)〜(37)のいずれか一に記載の方法。
(39) コンピュータに(1)〜(38)のいずれか一に記載の方法の各ステップを実行させるコンピュータ・プログラム。
(40) コンピュータであって、
目的プロセッサと、
前記目的プロセッサによって(1)〜(38)のいずれか一に記載の方法の各ステップが実行されるトランスレータ・コードを含むメモリと
を備えている、前記コンピュータ。
Claims (13)
- 対象プロセッサによって実行可能な対象プログラム・コードを、目的プロセッサによって実行可能であり且つトランスレータによって実行時にトランスレートされて生成される目的プログラム・コードに変換するための方法であって、コンピュータが、
(a)中間表現(IR:Intermediate Representation)ツリーを介して、1以上の対象プログラム・コード単位を1以上の目的プログラム・コード単位に変換するステップと、
(b)前記目的プロセッサ上で前記変換された目的プログラム・コード単位を実行するステップと
を実行することを含み、
前記ステップ(a)は、
(a1)少なくとも1つの対象プログラム・コード単位を特定するステップと、
(a2)前記特定された対象プログラム・コード単位に対応するネイティブ・コード単位を特定するステップであって、前記特定されたネイティブ・コード単位は前記目的プロセッサによって実行可能である、前記特定するステップと
を含み、
前記ステップ(a1)及び(a2)は、前記対象プログラム・コードの変換中に前記対象プロセッサによって違法命令としてインタープリットされるトランスレータ特有の命令として外部の呼び出しコマンドに遭遇し、前記外部の呼び出しコマンドをデコードし、そして前記外部の呼び出しコマンドに基づいて前記中間表現ツリーを生成することによって実行され、
前記ステップ(b)は、前記特定された対象プログラム・コード単位の変換されたコードを実行する代わりに、前記特定された対象プログラム・コード単位に対応する前記ネイティブ・コード単位を実行することを含む、前記方法。 - 前記外部の呼び出しコマンドは、複数のサブ・コンポーネント命令を含む可変長命令である、請求項1に記載の方法。
- 前記複数のサブ・コンポーネント命令は、外部の呼び出しコマンドのその他のサブ・コンポーネント命令によって表わされる前記外部の呼び出しコマンドの形式を特定するエスケープ・サブコンポーネント命令を含み、
前記ステップ(a)は、前記エスケープ・サブコンポーネント命令を検出するステップをさらに含む、請求項2に記載の方法。 - 前記特定された対象プログラム・コード単位が対象関数に対応し、且つ、前記特定されたネイティブ・コード単位がネイティブ関数に対応する、請求項1に記載の方法。
- 前記コンピュータが、
関数パラメータを、目的プログラム・コードからネイティブ・コードに変換するステップと、
前記ネイティブ関数のプロトタイプに従う前記変換された関数パラメータを用いて、前記ネイティブ関数を呼び出すステップと、
前記呼び出されたネイティブ関数の戻り値を、ネイティブ・コードから目的プログラム・コードに変換するステップと
を実行することをさらに含む、請求項4に記載の方法。 - 前記変換するステップにおける変換は、該変換の中間コードを生成する、請求項1に記載の方法。
- 前記コンピュータが、
目的プログラム・コードにおいて、すべての対象レジスタ値を、目的プログラム・コードからネイティブ・コードに変換するステップと、
統一された呼び出しスタブ・インターフェースに従う前記変換された対象レジスタ値を用いて、ネイティブ・コード呼び出しスタブ関数を目的プログラム・コードから呼び出すステップと、
ネイティブ関数のプロトタイプに従う特定の対象レジスタ及び/又はパラメータ・スタックを用いて、前記ネイティブ関数を前記呼び出されたネイティブ・コード呼び出しスタブ関数から呼び出すステップと
を実行することをさらに含む、請求項5に記載の方法。 - 前記コンピュータが、
前記対象プログラム・コードのトランスレーションの間に、前記外部の呼び出しコマンドに遭遇すると、前記目的プログラム・コード内に、前記ネイティブ関数に対する呼び出しスタブを挿入するステップをさらに実行することを含む、請求項1に記載の方法。 - 実行されるべき対象プログラム・コード単位が、システム呼び出し関数である、請求項1に記載の方法。
- 実行されるべき対象プログラム・コード単位が、ライブラリ関数である、請求項1に記載の方法。
- コンピュータに請求項1〜10のいずれか一項に記載の方法の各ステップを実行させるコンピュータ・プログラム。
- コンピュータであって、
目的プロセッサと、
対象プロセッサによって実行可能な対象プログラム・コードを格納し、且つ、前記目的プロセッサによって請求項1〜10のいずれか一項に記載の方法の各ステップが実行されるトランスレータ・コードを含むメモリと
を備えている、前記コンピュータ。 - コンピュータであって、
目的プロセッサと、
対象プロセッサによって実行可能な対象プログラム・コードを格納し、且つ、前記対象プログラム・コードを前記目的プロセッサによって実行される目的プログラム・コードに変換するトランスレータを含むメモリであって、前記トランスレータが前記目的プロセッサによって実行されるときに、
(a)中間表現(IR:Intermediate Representation)ツリーを介して、1以上の前記対象プログラム・コード単位を1以上の目的プログラム・コード単位に変換し、
(b)前記目的プロセッサ上で前記変換された目的プログラム・コード単位を実行し、
前記(a)において変換することは、
(a1)少なくとも1つの対象プログラム・コードを特定し、
(a2)前記特定された対象プログラム・コード単位に対応するネイティブ・コード単位を特定し、前記特定されたネイティブ・コード単位は前記目的プロセッサによって実行可能であり、
前記(a1)及び(a2)は、前記対象プログラム・コードの変換中に前記対象プロセッサによって違法命令としてインタープリットされるトランスレータ特有の命令として外部の呼び出しコマンドに遭遇し、前記外部の呼び出しコマンドをデコードし、そして前記外部の呼び出しコマンドに基づいて前記中間表現ツリーを生成することによって実行され、
前記(b)は、前記特定された対象プログラム・コード単位の変換されたコードを実行する代わりに、前記特定された対象プログラム・コード単位に対応する前記ネイティブ・コード単位を実行する、前記コンピュータ。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB0316531.3A GB0316531D0 (en) | 2003-07-15 | 2003-07-15 | Method and apparatus for performing native binding |
GB0316531.3 | 2003-07-15 | ||
GB0320717A GB2404042B (en) | 2003-07-15 | 2003-09-04 | Method and apparatus for performing native binding |
GB0320717.2 | 2003-09-04 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006519993A Division JP4931583B2 (ja) | 2003-07-15 | 2004-07-13 | ネイティブ結合を行なうための方法および装置 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2011123917A JP2011123917A (ja) | 2011-06-23 |
JP2011123917A5 JP2011123917A5 (ja) | 2011-09-29 |
JP5209073B2 true JP5209073B2 (ja) | 2013-06-12 |
Family
ID=27763852
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006519993A Expired - Lifetime JP4931583B2 (ja) | 2003-07-15 | 2004-07-13 | ネイティブ結合を行なうための方法および装置 |
JP2011030163A Expired - Lifetime JP5209073B2 (ja) | 2003-07-15 | 2011-02-15 | 対象プログラム・コードを目的プログラム・コードに変換するための方法、並びにコンピュータ・プログラム及びコンピュータ |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006519993A Expired - Lifetime JP4931583B2 (ja) | 2003-07-15 | 2004-07-13 | ネイティブ結合を行なうための方法および装置 |
Country Status (7)
Country | Link |
---|---|
US (2) | US8091076B2 (ja) |
EP (1) | EP2015177A1 (ja) |
JP (2) | JP4931583B2 (ja) |
CN (1) | CN100483341C (ja) |
GB (2) | GB0316531D0 (ja) |
HK (1) | HK1068700A1 (ja) |
TW (1) | TWI370990B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12028224B1 (en) | 2023-02-17 | 2024-07-02 | International Business Machines Corporation | Converting an architecture document to infrastructure as code |
Families Citing this family (102)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7139565B2 (en) | 2002-01-08 | 2006-11-21 | Seven Networks, Inc. | Connection architecture for a mobile network |
US7917468B2 (en) | 2005-08-01 | 2011-03-29 | Seven Networks, Inc. | Linking of personal information management data |
US8468126B2 (en) | 2005-08-01 | 2013-06-18 | Seven Networks, Inc. | Publishing data in an information community |
US7853563B2 (en) | 2005-08-01 | 2010-12-14 | Seven Networks, Inc. | Universal data aggregation |
US7441271B2 (en) | 2004-10-20 | 2008-10-21 | Seven Networks | Method and apparatus for intercepting events in a communication system |
US7706781B2 (en) | 2004-11-22 | 2010-04-27 | Seven Networks International Oy | Data security in a mobile e-mail service |
FI117152B (fi) | 2004-12-03 | 2006-06-30 | Seven Networks Internat Oy | Sähköpostiasetusten käyttöönotto matkaviestimelle |
GB2424092A (en) * | 2005-03-11 | 2006-09-13 | Transitive Ltd | Switching between code translation and execution using a trampoline |
US7752633B1 (en) * | 2005-03-14 | 2010-07-06 | Seven Networks, Inc. | Cross-platform event engine |
US8438633B1 (en) | 2005-04-21 | 2013-05-07 | Seven Networks, Inc. | Flexible real-time inbox access |
WO2006136660A1 (en) | 2005-06-21 | 2006-12-28 | Seven Networks International Oy | Maintaining an ip connection in a mobile network |
GB0517357D0 (en) | 2005-08-25 | 2005-10-05 | Corizon Ltd | User interface generation |
US7769395B2 (en) | 2006-06-20 | 2010-08-03 | Seven Networks, Inc. | Location-based operations and messaging |
US8286238B2 (en) * | 2006-09-29 | 2012-10-09 | Intel Corporation | Method and apparatus for run-time in-memory patching of code from a service processor |
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 |
GB2442497B (en) * | 2006-10-02 | 2010-03-31 | Transitive Ltd | Method and apparatus for administering a process filesystem with respect to program code conversion |
GB0623276D0 (en) * | 2006-11-22 | 2007-01-03 | Transitive Ltd | Memory consistency protection in a multiprocessor computing system |
WO2008091101A1 (en) * | 2007-01-22 | 2008-07-31 | E3Net Co., Ltd. | Program generating apparatus in cross platform |
US8805425B2 (en) | 2007-06-01 | 2014-08-12 | Seven Networks, Inc. | Integrated messaging |
US8693494B2 (en) | 2007-06-01 | 2014-04-08 | Seven Networks, Inc. | Polling |
US8364181B2 (en) | 2007-12-10 | 2013-01-29 | Seven Networks, Inc. | Electronic-mail filtering for mobile devices |
US9002828B2 (en) | 2007-12-13 | 2015-04-07 | Seven Networks, Inc. | Predictive content delivery |
US8862657B2 (en) | 2008-01-25 | 2014-10-14 | Seven Networks, Inc. | Policy based content service |
US20090193338A1 (en) | 2008-01-28 | 2009-07-30 | Trevor Fiatal | Reducing network and battery consumption during content delivery and playback |
US8787947B2 (en) | 2008-06-18 | 2014-07-22 | Seven Networks, Inc. | Application discovery on mobile devices |
US8078158B2 (en) | 2008-06-26 | 2011-12-13 | Seven Networks, Inc. | Provisioning applications for a mobile device |
US8909759B2 (en) | 2008-10-10 | 2014-12-09 | Seven Networks, Inc. | Bandwidth measurement |
US8843904B2 (en) * | 2010-01-26 | 2014-09-23 | International Business Machines Corporation | Automated building and retargeting of architecture-dependent assets |
WO2012018477A2 (en) | 2010-07-26 | 2012-02-09 | Seven Networks, Inc. | Distributed implementation of dynamic wireless traffic policy |
US8838783B2 (en) | 2010-07-26 | 2014-09-16 | Seven Networks, Inc. | Distributed caching for resource and mobile network traffic management |
CA2806557C (en) | 2010-07-26 | 2014-10-07 | Michael Luna | Mobile application traffic optimization |
EP3407673B1 (en) | 2010-07-26 | 2019-11-20 | Seven Networks, LLC | Mobile network traffic coordination across multiple applications |
CN102141929B (zh) * | 2010-10-21 | 2014-05-07 | 华为技术有限公司 | 应用程序的运行方法、模拟器、宿主机及系统 |
WO2012060996A2 (en) | 2010-11-01 | 2012-05-10 | Michael Luna | Caching adapted for mobile application behavior and network conditions |
US8843153B2 (en) | 2010-11-01 | 2014-09-23 | Seven Networks, Inc. | Mobile traffic categorization and policy for network use optimization while preserving user experience |
US8484314B2 (en) | 2010-11-01 | 2013-07-09 | Seven Networks, Inc. | Distributed caching in a wireless network of content delivered for a mobile application over a long-held request |
WO2012060995A2 (en) | 2010-11-01 | 2012-05-10 | Michael Luna | Distributed caching in a wireless network of content delivered for a mobile application over a long-held request |
US8166164B1 (en) | 2010-11-01 | 2012-04-24 | Seven Networks, Inc. | Application and network-based long poll request detection and cacheability assessment therefor |
US8903954B2 (en) | 2010-11-22 | 2014-12-02 | Seven Networks, Inc. | Optimization of resource polling intervals to satisfy mobile device requests |
WO2012071283A1 (en) | 2010-11-22 | 2012-05-31 | Michael Luna | Aligning data transfer to optimize connections established for transmission over a wireless network |
US8549464B2 (en) | 2010-11-22 | 2013-10-01 | Microsoft Corporation | Reusing expression graphs in computer programming languages |
WO2012094675A2 (en) | 2011-01-07 | 2012-07-12 | Seven Networks, Inc. | System and method for reduction of mobile network traffic used for domain name system (dns) queries |
WO2012103253A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
CN108874693B (zh) | 2011-01-27 | 2022-09-23 | 英特尔公司 | 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射 |
WO2012103367A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest to native block address mappings and management of native code storage |
WO2012103359A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
WO2012103245A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines Inc. | Guest instruction block with near branching and far branching sequence construction to native instruction block |
US9141360B1 (en) * | 2011-03-16 | 2015-09-22 | Google Inc. | Web application module translation service |
US8694978B1 (en) * | 2011-03-25 | 2014-04-08 | Google Inc. | Function side-effect modeling by prototyping |
EP2700021A4 (en) | 2011-04-19 | 2016-07-20 | Seven Networks Llc | MANAGEMENT OF COMMON RESOURCES AND VIRTUAL RESOURCES IN A NETWORKED ENVIRONMENT |
GB2493473B (en) | 2011-04-27 | 2013-06-19 | Seven Networks Inc | System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief |
US8621075B2 (en) | 2011-04-27 | 2013-12-31 | Seven Metworks, Inc. | Detecting and preserving state for satisfying application requests in a distributed proxy and cache system |
US8468507B2 (en) * | 2011-06-10 | 2013-06-18 | Microsoft Corporation | Binding executable code at runtime |
US8990515B2 (en) | 2011-06-14 | 2015-03-24 | Microsoft Technology Licensing, Llc | Aliasing buffers |
WO2013015994A1 (en) | 2011-07-27 | 2013-01-31 | Seven Networks, Inc. | Monitoring mobile application activities for malicious traffic on a mobile device |
EP2789138B1 (en) | 2011-12-06 | 2016-09-14 | Seven Networks, LLC | A mobile device and method to utilize the failover mechanisms for fault tolerance provided for mobile traffic management and network/device resource conservation |
US8934414B2 (en) | 2011-12-06 | 2015-01-13 | Seven Networks, Inc. | Cellular or WiFi mobile traffic optimization based on public or private network destination |
US9277443B2 (en) | 2011-12-07 | 2016-03-01 | Seven Networks, Llc | Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol |
GB2498064A (en) | 2011-12-07 | 2013-07-03 | Seven Networks Inc | Distributed content caching mechanism using a network operator proxy |
US9832095B2 (en) | 2011-12-14 | 2017-11-28 | Seven Networks, Llc | Operation modes for mobile traffic optimization and concurrent management of optimized and non-optimized traffic |
US8861354B2 (en) | 2011-12-14 | 2014-10-14 | Seven Networks, Inc. | Hierarchies and categories for management and deployment of policies for distributed wireless traffic optimization |
EP2792188B1 (en) | 2011-12-14 | 2019-03-20 | Seven Networks, LLC | Mobile network reporting and usage analytics system and method using aggregation of data in a distributed traffic optimization system |
US8909202B2 (en) | 2012-01-05 | 2014-12-09 | Seven Networks, Inc. | Detection and management of user interactions with foreground applications on a mobile device in distributed caching |
WO2013116856A1 (en) | 2012-02-02 | 2013-08-08 | Seven Networks, Inc. | Dynamic categorization of applications for network access in a mobile network |
US9326189B2 (en) | 2012-02-03 | 2016-04-26 | Seven Networks, Llc | User as an end point for profiling and optimizing the delivery of content and data in a wireless network |
US9081896B1 (en) * | 2012-03-21 | 2015-07-14 | Amazon Technologies, Inc. | Generating a replacement binary for emulation of an application |
EP2828747A4 (en) * | 2012-03-22 | 2016-04-20 | Intel Corp | SYSTEMS AND METHODS FOR TREATING HYBRID EMULATION AND CORE FUNCTION |
JP5976917B2 (ja) * | 2012-03-22 | 2016-08-24 | インテル コーポレイション | ネスト構造化されたエミュレーションおよび動的リンキング環境 |
CN103365668B (zh) * | 2012-03-26 | 2017-12-26 | 联想(北京)有限公司 | 一种动态链接库装载和链接的方法、装置 |
US9678728B1 (en) * | 2012-03-29 | 2017-06-13 | Emc International Company | Version compatibility |
US8812695B2 (en) | 2012-04-09 | 2014-08-19 | Seven Networks, Inc. | Method and system for management of a virtual network connection without heartbeat messages |
WO2013155208A1 (en) | 2012-04-10 | 2013-10-17 | Seven Networks, Inc. | Intelligent customer service/call center services enhanced using real-time and historical mobile application and traffic-related statistics collected by a distributed caching system in a mobile network |
WO2014011216A1 (en) | 2012-07-13 | 2014-01-16 | Seven Networks, Inc. | Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications |
US8819648B2 (en) | 2012-07-20 | 2014-08-26 | International Business Machines Corporation | Control flow management for execution of dynamically translated non-native code in a virtual hosting environment |
CN103443763B (zh) * | 2012-08-08 | 2016-10-05 | 英特尔公司 | 包含对重写虚拟函数的调用的支持的isa桥接 |
KR102013582B1 (ko) * | 2012-09-07 | 2019-08-23 | 삼성전자 주식회사 | 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법 |
US9161258B2 (en) | 2012-10-24 | 2015-10-13 | Seven Networks, Llc | Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion |
NO334888B1 (no) * | 2012-11-09 | 2014-06-30 | Outracks Technologies As | Fremgangsmåte for automatisk å generere tegneoperasjoner fra grafikkressurser |
US9307493B2 (en) | 2012-12-20 | 2016-04-05 | Seven Networks, Llc | Systems and methods for application management of mobile device radio state promotion and demotion |
US9241314B2 (en) | 2013-01-23 | 2016-01-19 | Seven Networks, Llc | Mobile device with application or context aware fast dormancy |
US8874761B2 (en) | 2013-01-25 | 2014-10-28 | Seven Networks, Inc. | Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols |
US8750123B1 (en) | 2013-03-11 | 2014-06-10 | Seven Networks, Inc. | Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network |
WO2014151652A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines Inc | Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor |
CN109358948B (zh) | 2013-03-15 | 2022-03-25 | 英特尔公司 | 用于支持推测的访客返回地址栈仿真的方法和装置 |
US9065765B2 (en) | 2013-07-22 | 2015-06-23 | Seven Networks, Inc. | Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network |
US9348565B2 (en) * | 2014-03-12 | 2016-05-24 | International Business Machines Corporation | Compact data marshaller generation |
US10120663B2 (en) | 2014-03-28 | 2018-11-06 | Intel Corporation | Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture |
US20150379169A1 (en) * | 2014-06-27 | 2015-12-31 | Yong Wu | Efficient emulation for pseudo-wrapped callback handling in binary translation software |
US10007497B2 (en) * | 2015-04-10 | 2018-06-26 | Google Llc | Binary translation on shared object level |
WO2016162720A1 (en) * | 2015-04-10 | 2016-10-13 | Google Inc. | Binary translation into native client |
US9335982B1 (en) * | 2015-04-28 | 2016-05-10 | Microsoft Technology Licensing, Llc | Processor emulation using multiple translations |
GB2537936B (en) * | 2015-05-01 | 2020-01-22 | Advanced Risc Mach Ltd | System and method for translating a guest instruction of a guest architecture into at least one host instruction of a host architecture |
JP5942018B1 (ja) * | 2015-06-23 | 2016-06-29 | 株式会社エクサ | ソースコード変換プログラム |
US10303498B2 (en) * | 2015-10-01 | 2019-05-28 | Microsoft Technology Licensing, Llc | Performance optimizations for emulators |
US10452409B2 (en) * | 2015-10-23 | 2019-10-22 | Oracle International Corporation | Universal adapter for native calling |
US10282182B2 (en) * | 2016-09-23 | 2019-05-07 | Intel Corporation | Technologies for translation cache management in binary translation systems |
US10019244B1 (en) * | 2016-09-28 | 2018-07-10 | Amazon Technologies, Inc. | Interpreting program code using a symbol table |
US11556317B2 (en) | 2020-05-22 | 2023-01-17 | Fujitsu Limited | Instruction translation support method and information processing apparatus |
US11635947B2 (en) | 2020-05-22 | 2023-04-25 | Fujitsu Limited | Instruction translation support method and information processing apparatus |
US11231918B1 (en) | 2020-08-31 | 2022-01-25 | Microsoft Technologly Licensing, LLC | Native emulation compatible application binary interface for supporting emulation of foreign code |
US11403100B2 (en) * | 2020-08-31 | 2022-08-02 | Microsoft Technology Licensing, Llc | Dual architecture function pointers having consistent reference addresses |
US11042422B1 (en) | 2020-08-31 | 2021-06-22 | Microsoft Technology Licensing, Llc | Hybrid binaries supporting code stream folding |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5379432A (en) * | 1993-07-19 | 1995-01-03 | Taligent, Inc. | Object-oriented interface for a procedural operating system |
US5930509A (en) * | 1996-01-29 | 1999-07-27 | Digital Equipment Corporation | Method and apparatus for performing binary translation |
US6314558B1 (en) * | 1996-08-27 | 2001-11-06 | Compuware Corporation | Byte code instrumentation |
US5937193A (en) * | 1996-11-27 | 1999-08-10 | Vlsi Technology, Inc. | Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof |
US6026238A (en) * | 1997-08-18 | 2000-02-15 | Microsoft Corporatrion | Interface conversion modules based upon generalized templates for multiple platform computer systems |
US6199202B1 (en) * | 1998-01-06 | 2001-03-06 | Hewlett-Packard Company | Method and apparatus for the inter-operation of differing architectural and run time conventions |
US6609144B1 (en) * | 1998-05-04 | 2003-08-19 | Matsushita Electric Industrial Co., Ltd. | Program reception/execution apparatus that can commence execution of a machine program having only received the program in part, and a program transmission apparatus that enables such execution |
US6463582B1 (en) * | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
US8065504B2 (en) * | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
EP1052806B1 (en) * | 1999-05-13 | 2006-03-22 | Canon Kabushiki Kaisha | Apparatus for searching a device on a network |
JP2000330792A (ja) * | 1999-05-18 | 2000-11-30 | Matsushita Electric Ind Co Ltd | バイトコードプログラム実行制御システム |
GB9920676D0 (en) * | 1999-09-01 | 1999-11-03 | Tao Group Ltd | Translating and executing object-oriented computer programs |
GB9921720D0 (en) * | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
AU2002245075A1 (en) * | 2000-11-13 | 2002-07-08 | Sun Microsystems, Inc. | Method and apparatus for increasing performance of an interpreter |
US6836884B1 (en) * | 2001-06-04 | 2004-12-28 | Microsoft Corporation | Method and system for editing software programs |
US7107584B2 (en) * | 2001-10-23 | 2006-09-12 | Microsoft Corporation | Data alignment between native and non-native shared data structures |
US6907519B2 (en) * | 2001-11-29 | 2005-06-14 | Hewlett-Packard Development Company, L.P. | Systems and methods for integrating emulated and native code |
JP4044756B2 (ja) * | 2001-12-11 | 2008-02-06 | 松下電器産業株式会社 | プログラム変換装置、プログラム変換方法、及び当該プログラム変換装置を実現するプログラム |
GB0202728D0 (en) * | 2002-02-06 | 2002-03-27 | Transitive Technologies Ltd | Condition code flag emulation for program code conversion |
US7124445B2 (en) * | 2002-06-21 | 2006-10-17 | Pace Anti-Piracy, Inc. | Protecting software from unauthorized use by converting source code modules to byte codes |
WO2004073278A1 (en) * | 2003-02-14 | 2004-08-26 | Research In Motion Limited | System and method of compact messaging in network communications |
US7360206B1 (en) * | 2003-03-13 | 2008-04-15 | Network Appliance, Inc. | Method for an interpreter to control a native function call based on a signature of the native function |
-
2003
- 2003-07-15 GB GBGB0316531.3A patent/GB0316531D0/en not_active Ceased
- 2003-09-04 GB GB0320717A patent/GB2404042B/en not_active Expired - Lifetime
-
2004
- 2004-07-13 JP JP2006519993A patent/JP4931583B2/ja not_active Expired - Lifetime
- 2004-07-13 EP EP08165859A patent/EP2015177A1/en not_active Withdrawn
- 2004-07-13 TW TW093120867A patent/TWI370990B/zh not_active IP Right Cessation
- 2004-07-13 CN CNB2004800201024A patent/CN100483341C/zh not_active Expired - Lifetime
-
2005
- 2005-02-04 HK HK05100972A patent/HK1068700A1/xx not_active IP Right Cessation
-
2008
- 2008-09-25 US US12/237,945 patent/US8091076B2/en active Active
- 2008-10-01 US US12/243,497 patent/US8108842B2/en active Active
-
2011
- 2011-02-15 JP JP2011030163A patent/JP5209073B2/ja not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12028224B1 (en) | 2023-02-17 | 2024-07-02 | International Business Machines Corporation | Converting an architecture document to infrastructure as code |
Also Published As
Publication number | Publication date |
---|---|
JP2011123917A (ja) | 2011-06-23 |
EP2015177A1 (en) | 2009-01-14 |
CN1823323A (zh) | 2006-08-23 |
TWI370990B (en) | 2012-08-21 |
JP2007529063A (ja) | 2007-10-18 |
US20090100416A1 (en) | 2009-04-16 |
GB2404042A (en) | 2005-01-19 |
JP4931583B2 (ja) | 2012-05-16 |
US8108842B2 (en) | 2012-01-31 |
HK1068700A1 (en) | 2005-04-29 |
US8091076B2 (en) | 2012-01-03 |
GB2404042B (en) | 2005-06-29 |
CN100483341C (zh) | 2009-04-29 |
US20090094586A1 (en) | 2009-04-09 |
GB0320717D0 (en) | 2003-10-08 |
GB0316531D0 (en) | 2003-08-20 |
TW200517959A (en) | 2005-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5209073B2 (ja) | 対象プログラム・コードを目的プログラム・コードに変換するための方法、並びにコンピュータ・プログラム及びコンピュータ | |
KR101154726B1 (ko) | 네이티브 바인딩을 수행하는 방법 빛 장치 | |
JP2007529063A5 (ja) | ||
TWI453671B (zh) | 用於程式碼轉換期間之本機碼和目標碼的組合執行之方法與裝置 | |
JP4841118B2 (ja) | ソフトウェア開発インフラストラクチャ | |
US5884083A (en) | Computer system to compile non-incremental computer source code to execute within an incremental type computer system | |
JP4536718B2 (ja) | プログラム・コード変換用の中間表現を生成するための改善されたアーキテクチャ | |
US8453128B2 (en) | Method and system for implementing a just-in-time compiler | |
AU2892200A (en) | Automatic stub/adapter generator | |
JPH10320214A (ja) | コンパイルシステム及びコンピュータプログラム製品 | |
Cifuentes et al. | The design of a resourceable and retargetable binary translator | |
US20120233603A1 (en) | Apparatus and method for accelerating java translation | |
NO329240B1 (no) | System og fremgangsmate for forklarende definering og bruk av undergrupper innenfor dokumentkoding | |
US7207036B2 (en) | Preprocessing of interfaces to allow fast call through | |
JP2010506252A5 (ja) | ||
Korenčik | Decompiling binaries into LLVM IR using McSema and Dyninst | |
Chen et al. | Type-preserving compilation for large-scale optimizing object-oriented compilers | |
Hasu et al. | Source-to-Source Compilation via Submodules. | |
Kågström et al. | Cibyl: an environment for language diversity on mobile devices | |
Bothner | Compiling Java for embedded systems | |
Rohou et al. | CLI-based compilation flows for the C language | |
Pimás | Migrating Bee Smalltalk to a Different Instruction Set Architecture | |
Mráček | A decompiler for Objective-C | |
Leijen | The lazy virtual machine specification | |
Goldshtein et al. | Performance Patterns |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20110811 Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110811 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120126 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120409 Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20120409 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121002 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20121226 Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121226 |
|
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: 20130207 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20130207 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20130207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130220 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160301 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5209073 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |