JP5128602B2 - Method and apparatus for making dynamically linked function calls for program code conversion - Google Patents

Method and apparatus for making dynamically linked function calls for program code conversion Download PDF

Info

Publication number
JP5128602B2
JP5128602B2 JP2009529783A JP2009529783A JP5128602B2 JP 5128602 B2 JP5128602 B2 JP 5128602B2 JP 2009529783 A JP2009529783 A JP 2009529783A JP 2009529783 A JP2009529783 A JP 2009529783A JP 5128602 B2 JP5128602 B2 JP 5128602B2
Authority
JP
Japan
Prior art keywords
code
function
subject
target
translator
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.)
Active
Application number
JP2009529783A
Other languages
Japanese (ja)
Other versions
JP2010506252A5 (en
JP2010506252A (en
Inventor
バラクラフ ブラウン、アレクサンダー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from GB0619389A external-priority patent/GB2442495B/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010506252A publication Critical patent/JP2010506252A/en
Publication of JP2010506252A5 publication Critical patent/JP2010506252A5/ja
Application granted granted Critical
Publication of JP5128602B2 publication Critical patent/JP5128602B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、一般に計算機の分野に関し、より詳細には、例えば動的にリンクされた関数呼び出しを含むプログラムコード変換を行うコード変換装置、エミュレータ、及びアクセラレータにおいて有用な、プログラムコード変換の方法及び装置に関する。   The present invention relates generally to the field of computers, and more particularly to a program code conversion method and apparatus useful in code converters, emulators, and accelerators that perform program code conversion including, for example, dynamically linked function calls. About.

組み込みCPU及び非組み込みCPU市場にわたって、有力な命令セットアーキテクチャ(ISA)が知られており、それらのアーキテクチャに対して、多数のソフトウェアが存在し、そのソフトウェアは、性能に関して「加速される」ことが可能であり、またはプロセッサが、その関連するソフトウェアに透過的にアクセスすることが可能な場合に、より一層良好なコスト/性能という利点をもたらすことができる無数の高機能プロセッサへ「変換される」(トランスレートされる)ことが可能である。また、ISAに合わせて固定され、かつ性能又は市場範囲の点において進化が不可能であるが、「合成CPU」共通アーキテクチャの恩恵を享受するであろう、有力なCPUアーキテクチャが存在することも知られている。 Over the embedded and non-embedded CPU markets, leading instruction set architectures (ISAs) are known, for which there are numerous software programs that can be “accelerated” with respect to performance. "Transformed" into a myriad of advanced processors that are possible or can provide even better cost / performance benefits if the processor can transparently access its associated software. (Translated) . It is also known that there is a powerful CPU architecture that is fixed to the ISA and cannot be evolved in terms of performance or market scope, but will benefit from the “synthetic CPU” common architecture. It has been.

第1タイプのコンピュータプロセッサ(“サブジェクト”プロセッサ、対象プロセッサともいう)に関して記述されるプログラムコードを、第2タイプのプロセッサ(“ターゲット”プロセッサ、目的プロセッサともいう)上で実行することが大抵の場合望ましい。この場合、エミュレータまたはトランスレータを使用してプログラムコード変換を実行することにより、サブジェクト・プログラムをターゲット・プロセッサ上で実行することが可能となる。国際公開第WO00/22521号パンフレットには、本発明の実施形態に用い得るようなアクセラレーション、変換、及び共通アーキテクチャ機能を容易にする、プログラムコード変換方法及び装置が開示されている。 In most cases, the program code described for a first type of computer processor ( also referred to as a “subject” processor , also referred to as a target processor) is executed on a second type of processor ( also referred to as a “target” processor , also referred to as a target processor ). desirable. In this case, the subject program can be executed on the target processor by executing the program code conversion using an emulator or a translator . International Publication No. WO 00/22521 discloses a program code conversion method and apparatus that facilitates acceleration, conversion, and common architecture functions as may be used in embodiments of the present invention.

変換されるべきサブジェクト・プログラムは大抵、サブジェクト・コードの多数のユニットを備え、サブジェクト・コードはサブジェクト・アプリケーションと多数のサブジェクト・ライブラリを含み、そのいくつかは所有権のあるものである可能性があり、そのいくつかは、サブジェクトOS(“システムライブラリ”)の一部として提供される。サブジェクト・プログラムが実行される際、関数呼び出しとしてのサブジェクト・コードのこれらの異なるユニット間の制御フローのパスがライブラリに対して形成される。   The subject program to be converted usually comprises a large number of units of subject code, which includes a subject application and a large number of subject libraries, some of which may be proprietary. Some of which are provided as part of the subject OS ("system library"). When the subject program is executed, a path of control flow between these different units of subject code as function calls is formed to the library.

例えばサン マイクロシステムズ Inc.のソラリス(Solaris)のような、特定のオペレーティング・システムにおいては、関数呼び出しを、その関数を実行するライブラリ・コードへリンクするプロセスが実行時に実施されることが可能であり、この手続きは動的リンクとして知られている。動的リンクは、動的リンカー・コードにより実行され、手続きリンクテーブル(PLT)として知られる中間制御構造の使用を含む。 For example, Sun Microsystems Inc. On certain operating systems, such as Solaris (Solaris) , the process of linking a function call to the library code that executes the function can be performed at runtime, and this procedure is dynamic Known as a link. Dynamic linking is performed by dynamic linker code and involves the use of an intermediate control structure known as a procedure linkage table (PLT).

PLTはコンパイルされたプログラムの不可欠な要素であり、そのプログラムに必要とされるライブラリ関数の各々に対するリンク情報を含む入力を備える。プログラムの標準的な実行において、ライブラリ関数への最初の呼び出しが起きた場合、制御フローはその関数に関連したPLT入力へジャンプする。その関数に対するPLT入力は、動的リンカー・コードを含むことによりそのステージのリンクプロセスを制御する。動的リンカー・コードは、当該関数に対するリンク情報を更新させる。リンク情報を更新することにより、動的リンカー・コードは、その関数に対するPLT入力から、その関数を実行するライブラリ・コードへのリンクを形成する。このようにして構築されたリンクは、プログラムの実行の終了まで持続する。 A PLT is an integral part of a compiled program and has inputs that contain link information for each of the library functions required for that program. In standard execution of a program, when the first call to a library function occurs, control flow jumps to the PLT input associated with that function. The PLT input for the function controls the stage linking process by including dynamic linker code. The dynamic linker code causes the link information for the function to be updated. By updating the link information, the dynamic linker code forms a link from the PLT input for the function to the library code that executes the function. The link constructed in this way lasts until the end of program execution.

その結果、動的リンカー・コードは、ライブラリにおいてコードの制御フローを渡して関数が実行されるようにすることができる。
プログラムによる関数の後続の呼び出しは、事前にPLT入力に対して行われたように、制御フローを渡す。PLT入力は、関数を実行するライブラリ・コードへのリンクと共に更新されたので、これら後続の呼び出しにおいて、PLTは制御フローをPLTからライブラリへ直接的に渡す。これら後続の呼び出しは、PLT入力の更なる更新も、動的リンカーの更なる呼び出しも必要としない。
As a result, the dynamic linker code can pass the control flow of code in the library so that the function is executed.
Subsequent calls to the function by the program pass control flow as it was done for the PLT input in advance. Since the PLT input has been updated with a link to the library code that performs the function, in these subsequent calls, the PLT passes control flow directly from the PLT to the library. These subsequent calls do not require further updates of the PLT input or further calls of the dynamic linker.

特定のオペレーティング・システムにおいて、関数に対するPLT入力と、その関数を実行するためのコードを含むライブラリとの間のリンク形成の実行は、グローバル・オフセット・テーブルのような、PLTに関連するデータを書き換える効果を有する。その結果、書き換えられたグローバル・オフセット・デーブルは、PLT入力においてコードによってランタイムに読み込まれることが可能であり、リンクの形成を可能にする。例えばソラリスのような、特定の別のオペレーティング・システムにおいては、特定の関数に対するPLT入力と、その関数を含むライブラリとの間のリンク形成の実行は、PLT入力自体を形成する実行可能なコードを書き換える別の効果を有する。 In a particular operating system, performing link formation between a PLT input for a function and a library containing code to execute the function rewrites data associated with the PLT, such as a global offset table Has an effect. As a result, the global offset Deburu was rewritten et al., It is possible to read at runtime by the code in the PLT input, to allow the formation of a link. In certain other operating systems, such as Solaris, for example, performing a link formation between a PLT input for a particular function and a library containing that function results in executable code that forms the PLT input itself. Has another effect of rewriting .

上述のような中間制御構造としてのPLTの使用、特に、関数が呼び出される第一の時間においてPLTを備えるコードを書き換えることによる、PLTにおけるリンク情報の書き換えは、動的リンク方法に不可欠な要素としてPLTを用いるサブジェクト・コードに対するプログラムコード変換を複雑にする。 Use of PLT as intermediate control structure as described above, in particular, by rewriting the code comprising a PLT in a first time the function is called, rewriting the link information in the PLT, as an integral part in the dynamic link method Complicates program code conversion for subject code using PLT.

書き換えられたサブジェクト・コード(対象コードともいう)は、既に変換されたターゲット・コード(目的コードともいう)に対応する可能性があるので、ランタイムにおけるコード書き換えは、動的トランスレータに対して問題を提起する。サブジェクト・コードのそのような書き換えが生じた場合、書き換えられたサブジェクト・コードの全てのターゲット・コード変換は、識別され、かつ陳腐化したものとして廃棄されなければならない。従って、トランスレータは、書き換えられている特定のサブジェクト・コード・アドレスに対応する全てのターゲット・コード・シーケンス(すなわち、変換)を識別できなくてはならない。 Rewriting et a subject code (also referred to as target code), there is a possibility that correspond to previously translated target code (also referred to as object code), the code rewriting in runtime problem for dynamic translator Pose. If such rewriting subject code occurs, all target code conversion of the subject code rewriting it was is identified, and must be discarded as obsolete. Therefore, translator, all target code sequence corresponding to a particular subject code addresses are rewritten et al (i.e., conversion) must be able to identify.

動的トランスレータにおいて、所与のサブジェクト・アドレスに対応するターゲット・コードを発見して消去することは困難であり、時に不可能ですらある。ある状況においては、変換の間に最適化が適用され、その変換は、それが示すサブジェクト・アドレスの範囲にもはや正確に関連付けることが不可能な変換を生じさせる。これらの状況において、サブジェクト・プログラムが、特定のサブジェクト・アドレスにおいて自身のコードを書き換える場合、トランスレータは、どの個別の変換されたターゲット・コードが無効にされるべきかを識別するすべがない。加えて、マルチスレッド環境における変換されたターゲット・コードの安全な消去は、更なる問題を提起する可能性がある。 In a dynamic translator , it is difficult and sometimes impossible to find and erase the target code corresponding to a given subject address. In some situations, optimization is applied during the transformation, which results in a transformation that can no longer be accurately associated with the range of subject addresses it represents. In these situations, if the subject program rewrites its code at a particular subject address, the translator has no way of identifying which individual translated target code should be invalidated. In addition, secure erasure of translated target code in a multi-threaded environment can pose additional problems.

コード書き換えに関連する技術は、国際公開第WO05/008487号パンフレットにおいて記載されている。これらの技術は有用であるが、本発明は、ランタイムのPLTにおいて生じるコード書き換えの多数の集中により、国際公開第WO05/008487号パンフレットに記載されているような技術が、PLTの更新を処理する非効率的な方法となり得ることを確認した。このような技術は、無効な変換されたターゲット・コードが実行されないことを保証し得るが、これらの技術を用いてPLTの更新を処理する場合、制御フローの管理はプロセッサ及びメモリ資源の観点で高価であることが分かった。 Techniques related to code rewriting are described in International Publication No. WO05 / 008487. Although these techniques are useful, the present invention handles the PLT update by techniques such as those described in International Publication No. WO 05/008487 due to the large concentration of code rewriting that occurs in runtime PLTs. It was confirmed that this could be an inefficient method. Such techniques may ensure that invalid translated target code is not executed, but when using these techniques to handle PLT updates, control flow management is in terms of processor and memory resources. It turned out to be expensive.

更に、発明者は、ソラリスオペレーティング・システムにおいて、動的リンカーにより使用されるPLTの更新方法は、ある別のオペレーティング・システムにおける動的リンカーと比較して、標準的な動的リンクされたプログラムを実行するのに必要とされるパーティションの数を顕著に増加させることを確認した。   In addition, the inventor found that the PLT update method used by the dynamic linker in the Solaris operating system is a standard dynamic linked program compared to the dynamic linker in some other operating system. It has been confirmed that it significantly increases the number of partitions required to run.

サブジェクト・プログラム・コードの変換に関して動的にリンクされた関数呼び出しを行う方法が、本方法を活用するコンピュータ装置と共に提供される。好適な実施形態においては、中間制御構造に対応するターゲット・コードを生成することなく、関数リンクテーブルを用いて、サブジェクト・コードにおいて関数呼び出しからサブジェクト・コード関数へリンクを設定することを可能とする。サブジェクト・コードをターゲット・コードへ変換する働きをするトランスレータを含むコンピュータ装置は、サブジェクト・プログラムにおいて動的にリンクされた関数呼び出しが識別されるように構成されても良く、かつ関数を実行するコードとの直接的な関連付けであって、関数を実行するトランスレータによって関数リンクテーブルに集約される情報に基づいた関連付けを特徴付けるターゲット・コードが生成されるように構成されても良い。 A method for making dynamically linked function calls for subject program code conversion is provided with a computer device that utilizes the method. In a preferred embodiment, it is possible to set a link from a function call to a subject code function in the subject code using the function link table without generating target code corresponding to the intermediate control structure. . A computer device that includes a translator that serves to convert subject code into target code may be configured to identify dynamically linked function calls in the subject program and to perform the function And target code that characterizes the association based on information aggregated in a function linkage table by a translator executing the function may be generated.

動的にリンクされた関数呼び出しを行う技術の好適な実施形態は、サブジェクト・コードにおいて動的にリンクされた関数呼び出しをその関数を実行するコードと都合よく関連付けることを可能とする。好適な実施形態は、コード書き換えに関する国際公開第WO05/008487号パンフレットから知られるような、技術と関連したプロセッシング及びメモリのオーバーヘッドを減少させ得る。 Preferred embodiments of techniques for making dynamically linked function calls allow for conveniently associating dynamically linked function calls in the subject code with the code that performs the function. The preferred embodiment may reduce processing and memory overhead associated with the technology, as known from WO05 / 008487 for code rewriting .

従って、本発明は、例えばプログラムコード変換を行いつつ、コンピュータシステムの性能を改善する。   Accordingly, the present invention improves the performance of a computer system, for example, while performing program code conversion.

本発明によれば、添付の特許請求の範囲に記載されているような装置及び方法が提供される。本発明の好適な特徴は、従属する特許請求の範囲及び以下の記載から明らかになるであろう。   According to the present invention there is provided an apparatus and method as set forth in the appended claims. Preferred features of the invention will become apparent from the dependent claims and the following description.

一つの側面においては、コンピュータ装置であって、ターゲット・プロセッサ、及びサブジェクト・プロセッサ上での実行のためのサブジェクト・コードを受信し、かつターゲット・プロセッサ上での実行のためのターゲット・コードを生成するように構成されたトランスレータを備え、トランスレータは、(a)サブジェクト・コードにおいて中間制御構造を介してサブジェクト・リンカー・コードへサブジェクト制御フローを渡すように構成された、一つ又は複数の動的にリンクされたサブジェクト関数呼び出しを備えるサブジェクト・コードを受信することここで前記中間構造を介して動的にリンクされた関数呼び出しを、関数を実行するサブジェクト・コードに関連付けることが可能である、(b)受信したサブジェクト・コードにおいてそのような動的リンクされた関数呼び出しを識別して、そのような動的にリンクされた関数呼び出しを、中間制御構造に対応するターゲット・コードを生成することなく、対応する関数を実行するコードに関連付けることを行うように構成されるコンピュータ装置が提供される。 In one aspect, a computer device that receives a target processor and subject code for execution on the subject processor and generates target code for execution on the target processor comprising a translator configured to, translator, (a) through an intermediate control structures in the subject code to subject linker code configured to pass subject control flow, one or more dynamic receiving a subject code comprising a linked subject function calls, wherein said dynamically linked function calls via an intermediate structure, the subject code to perform the functions can Fit related Yes, (b) Received subject code Identifying such dynamically linked function calls in and executing such dynamically linked function calls the corresponding function without generating target code corresponding to the intermediate control structure A computer device configured to perform association with a code is provided.

トランスレータは、受信したサブジェクト・コードにおいて、動的にリンクされたサブジェクト関数呼び出しを識別し、受信したサブジェクト・コードの最初の変換において動的にリンクされた関数呼び出しに関するリンク情報を収集し、及び受信したサブジェクト・コードの後続の変換において収集された情報を使用するように構成されても良い。コンピュータ装置は、後続の変換において収集された情報を用いて、識別された関数呼び出しから、対応する関数を実行するコードへ制御フローを受け渡すように構成されても良い。 The translator identifies dynamically linked subject function calls in the received subject code, collects and receives link information regarding dynamically linked function calls in the first transformation of the received subject code May be configured to use information collected in subsequent conversions of the subject code. The computing device may be configured to pass control flow from the identified function call to code executing the corresponding function using information collected in subsequent transformations.

コンピュータ装置は、トランスレータが、サブジェクト・コードの手続きリンクテーブル(PLT)を介してサブジェクト・リンカー・コードへサブジェクト制御フローを渡すように構成された、一つ又は複数の動的にリンクされたサブジェクト関数呼び出しを含むサブジェクト・コードを受信する場合、これらの関数呼び出しは、PLTに対応するターゲット・コードを生成することなく、受信されたサブジェクト・コードにおいて、トランスレータにより識別され、対応する関数を実行するコードに関連付けられるように構成されても良い。 The computing device includes one or more dynamically linked subject functions configured such that the translator passes subject control flow to the subject linker code via a subject code procedure linkage table (PLT). When receiving subject code that includes a call, these function calls are identified by the translator in the received subject code and execute the corresponding function without generating target code corresponding to the PLT. It may be configured to be associated with.

別の側面においては、ターゲット・プロセッサにおいて実行されるプログラムコード変換の方法が提供され、本方法はサブジェクト・コードを受信することであって、受信されたサブジェクト・コードは、サブジェクト・コードにおいて中間制御構造を介してサブジェクト制御フローをサブジェクト・リンカー・コードへ渡して、それにより関数を実行するサブジェクト・コードに動的にリンクされたサブジェクト関数呼び出しを関連付けるように構成された、一つ又は複数の動的にリンクされたサブジェクト関数呼び出しを含む、前記受信すること、受信されたサブジェクト・コードにおいてこのような動的にリンクされた関数呼び出しを識別すること、及びターゲット・プロセッサにおいて実行するターゲット・コードを生成することであって、ターゲット・プロセッサにおいて、そのような動的にリンクされた関数呼び出しは、中間制御構造に対応するターゲット・コードを生成することなく、対応する関数を実行するコードに関連付けられる、生成することを備える。 In another aspect, there is provided a method of program code conversion performed in the target processor, the method comprising: receiving a subject code, subject code received, the intermediate in the subject code One or more configured to pass subject control flow through the control structure to the subject linker code, thereby associating dynamically linked subject function calls with the subject code that executes the function Said receiving, including dynamically linked subject function calls, identifying such dynamically linked function calls in the received subject code, and target code executing in a target processor Generating Wherein, in the target processor, such dynamically linked function calls are generated that are associated with the code that executes the corresponding function without generating the target code corresponding to the intermediate control structure. Is provided.

更に別の側面においては、コンピュータで読み取り可能なメディアが提供され、メディアは、その上に記録されたコンピュータにより実行可能な、ターゲット・プロセッサ上で実行されるプログラムコード変換の方法を実行するための命令を有し、その方法はサブジェクト・コードを受信することであって、受信されたサブジェクト・コードはサブジェクト・コードにおいて中間制御構造を介してサブジェクト制御フローをサブジェクト・リンカー・コードに渡して、それにより関数を実行するサブジェクト・コードに動的にリンクされたサブジェクト関数呼び出しを関連付けるように構成された、一つ又は複数の動的にリンクされたサブジェクト関数呼び出しを含む、前記受信すること、受信されたサブジェクト・コードにおいてこのような動的にリンクされた関数呼び出しを識別すること、及びターゲット・プロセッサにおいて実行するターゲット・コードを生成することであって、ターゲット・プロセッサにおいて、そのような動的にリンクされた関数呼び出しは、中間制御構造に対応するターゲット・コードを生成することなく、対応する関数を実行するコードに関連付けられる、生成することを備える。 In yet another aspect, a computer readable medium is provided for executing a method of program code conversion executed on a target processor executable by the computer recorded thereon. comprising instructions, the method comprising: receiving a subject code, subject code received is passes subject control flow through the intermediate control structure in the subject code to subject linker code, thereby configured to associate the subject function calls that are dynamically linked to the subject code to perform the function, comprising one or more dynamically linked subject function calls, to said receiving, receiving In the subject code Identifying a dynamically linked function call and generating target code for execution on the target processor, where such dynamically linked function call is: Generating associated with the code that executes the corresponding function without generating target code corresponding to the intermediate control structure.

更に別の側面においては、トランスレータが提供され、トランスレータサブジェクト・コードを受信し、かつターゲット・プロセッサ上で実行するターゲット・コードを生成するように構成され、トランスレータサブジェクト・コードを受信するように構成され、受信されたサブジェクト・コードは、サブジェクト・コードにおいて中間制御構造を介してサブジェクト・リンカー・コードをサブジェクト制御フローへ渡して、それにより関数を実行するサブジェクト・コードに動的にリンクされたサブジェクト関数呼び出しを関連付けるように構成された、一つ又は複数の動的にリンクされたサブジェクト関数呼び出しを含み、受信されたサブジェクト・コードにおいて、このような動的にリンクされた関数呼び出しを識別するように構成され、及びターゲット・プロセッサ上で実行するターゲット・コードを生成するように構成され、ターゲット・プロセッサにおいて、そのような動的にリンクされた関数呼び出しは、中間制御構造に対応するターゲット・コードを生成することなく、対応する関数を実行するコードに関連付けられる。 In yet another aspect, the translator is provided, the translator receives the subject code, and configured to generate a target code to be executed on the target processor, the translator receives the subject code The received subject code is dynamically linked to the subject code that passes the subject linker code to the subject control flow through the intermediate control structure in the subject code, thereby executing the function. Including one or more dynamically linked subject function calls configured to associate the subject function calls that have been received, and in the received subject code, such dynamically linked function calls To identify Configured and configured to generate target code that executes on the target processor, where such dynamically linked function calls can generate target code corresponding to the intermediate control structure. Associated with code that executes the corresponding function without generating it.

上記は、本発明の実施形態の種々の側面の概要である。これは、当業者がこの後の本発明の詳細な議論をより迅速に理解するように導入として提供されたものであって、本明細書に添付した特許請求の範囲の技術思想を決して限定するものではなく、そのように意図されたものでもない。   The above is a summary of various aspects of embodiments of the invention. This is provided as an introduction so that those skilled in the art may more quickly understand the detailed discussion of the invention that follows, and by no means limits the spirit of the claims appended hereto It is not something that was intended.

本発明の実施形態が適用される装置を示すブロック図である。It is a block diagram which shows the apparatus with which embodiment of this invention is applied. 本発明の実施形態に用いられる変換ユニットの概略図である。It is the schematic of the conversion unit used for embodiment of this invention. 本発明の実施形態に用いられる装置を示すブロック図である。It is a block diagram which shows the apparatus used for embodiment of this invention. 関数呼び出しを行う方法の例を説明するフロー概略図である。It is a flow schematic diagram explaining an example of a method of performing a function call.

本明細書の一部に組み込まれ、そして本明細書の一部を構成する添付の図面は、現時点において好適である実施形態を示す。
以下の記載は、当業者が本発明を実施し、かつ使用することを可能とするよう提供され、本願発明者により意図される、本発明を実施する最良のモードを説明する。しかしながら、本発明の一般的原理が本明細書において詳細に定義され、改良されたプログラムコード変換方法及び装置が提供されているので、当業者には種々の変更が容易に理解されるであろう。
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate an embodiment that is presently preferred.
The following description is provided to enable those skilled in the art to make and use the invention, and describes the best mode of carrying out the invention, which is intended by the inventors. However, since the general principles of the present invention are defined in detail herein and improved program code conversion methods and apparatus are provided, various modifications will be readily apparent to those skilled in the art. .

図1を参照すると、サブジェクト・プログラム17は、サブジェクト・プロセッサ3を有するサブジェクト計算プラットフォーム1上で実行されることを意図されている。しかしながら、ターゲット計算プラットフォーム10を代わりに使用して、サブジェクト・プログラム17を、プログラムコード変換を実行するトランスレータ・コード19を介して実行する。トランスレータ・コード19は、サブジェクト・コード17からターゲット・コード21へのコード変換を実行して、ターゲット・コード21をターゲット計算プラットフォーム10上で実行可能にする。 With reference to FIG. 1, the subject program 17 is intended to be executed on a subject computing platform 1 having a subject processor 3. However, using the target computing platform 10 instead, the subject program 17 is executed via a translator code 19 that performs program code conversion. The translator code 19 performs code conversion from the subject code 17 to the target code 21 to make the target code 21 executable on the target computing platform 10.

当業者には良く知られているように、サブジェクト・プロセッサ3は一組のサブジェクト・レジスタ5を有する。サブジェクト・メモリ8は、とりわけ、サブジェクト・コード17及びサブジェクト・オペレーティング・システム2を格納する。同様に、図1の例示的ターゲット計算プラットフォーム10は、複数のターゲット・レジスタ15を有するターゲット・プロセッサ13と、ターゲット・オペレーティング・システム20、サブジェクト・コード17、トランスレータ・コード19、及び変換されたターゲット・コード21を含む複数の動作コンポーネントを格納するメモリ18とを含む。ターゲット計算プラットフォーム10は通常、マイクロプロセッサ・ベースのコンピュータ、又は他の適切なコンピュータである。 As is well known to those skilled in the art, the subject processor 3 has a set of subject registers 5. The subject memory 8 stores, among other things, a subject code 17 and a subject operating system 2. Similarly, exemplary target computing platform 10 of Figure 1, the target processor 13 having a plurality of target registers 15, the target operating system 20, subject code 17, translator code 19, and is converted And a memory 18 for storing a plurality of operational components including target code 21. Target computing platform 10 is typically a microprocessor-based computer or other suitable computer.

一実施形態においては、トランスレータ・コード19は、サブジェクト命令セットアーキテクチャ(ISA)のサブジェクト・コードを、別のISAの変換されたターゲット・コードに、最適化を行なって、または最適化を行なうことなく、変換するエミュレータである。別の実施形態においては、トランスレータ・コード19は、プログラムコードの最適化を実行することにより、サブジェクト・コードを各コードが同じISAであるターゲット・コードに変換するアクセラレータとして機能する。 In one embodiment, the translator code 19 optimizes the subject instruction set architecture (ISA) subject code into another ISA transformed target code with or without optimization. An emulator that converts. In another embodiment, the translator code 19 functions as an accelerator that transforms the subject code into target code, each code being the same ISA, by performing program code optimization.

トランスレータ・コード19は、適切には、トランスレータを実装するソースコードのコンパイルされたバージョンであり、オペレーティング・システム20と連動してターゲット・プロセッサ13上で実行される。図1に示す構造は例示に過ぎず、例えば、本発明の実施形態によるソフトウェア、方法、及びプロセスは、オペレーティング・システム20内の、又はオペレーティング・システム20の下位にあるコードとして実装し得ることを理解されたい。サブジェクト・コード17、トランスレータ・コード19、オペレーティング・システム20、及びメモリ18の格納方法は、当業者に既知のような広範囲の種々のタイプの内の任意のものであって良い。 The translator code 19 is suitably a compiled version of the source code that implements the translator and is executed on the target processor 13 in conjunction with the operating system 20. The structure shown in FIG. 1 is exemplary only, for example, that software, methods, and processes according to embodiments of the present invention may be implemented as code within or subordinate to operating system 20. I want you to understand. The subject code 17, translator code 19, operating system 20, and memory 18 storage method may be any of a wide variety of types as known to those skilled in the art.

図1による装置においては、プログラムコード変換はランタイムに動的に行なわれ、ターゲット・コード21が実行されている状態で、ターゲット・アーキテクチャ10上で実行される。すなわち、トランスレータ・コード19は、変換されたターゲット・コード21とインラインで実行される。トランスレータ・コード19を介してサブジェクト・プログラム17を実行することは、二つの異なるタイプのコードを含み、トランスレータ・コード19及びターゲット・コード21を交互に実行する。従って、ターゲット・コード21は、変換されているプログラム中の格納されたサブジェクト・コード17に基づいて、トランスレータ・コード19によってランタイムを通して生成される。 In the apparatus according to FIG. 1, program code conversion is performed dynamically at runtime and is executed on the target architecture 10 with the target code 21 being executed. That is, the translator code 19 is executed inline with the converted target code 21. That through the translator code 19 to execute the subject program 17 includes two different types of code, executing the translator code 19 and the target code 21 alternately. Thus, the target code 21, based on the subject code 17 stored in the conversion program being is produced through the runtime by the translator code 19.

一実施形態では、トランスレータ・コード19は、サブジェクト・プログラム17をターゲット・コード21としてターゲット・プロセッサ13上で実際に実行しつつ、サブジェクト・プロセッサ3、及び特にサブジェクト・レジスタ5のような、サブジェクト・アーキテクチャ1の関連部分をエミュレートする。好適な実施形態では、少なくとも一つのグローバル・レジスタ格納部27が設けられる(サブジェクト・レジスタ・バンク27又は抽象レジスタ・バンク27とも表記される)。マルチプロセッサ環境では、任意的に、一つよりも多くの抽象レジスタ・バンク27が、サブジェクト・プロセッサのアーキテクチャに従って設けられる。サブジェクト状態の表現は、トランスレータ・コード19及びターゲット・コード21の構成要素によって提供される。すなわち、トランスレータ・コード19はサブジェクト状態を、変数及び/又はオブジェクトのような種々の明示的なプログラミング言語装置において格納する。これと比較すると、変換されたターゲット・コード21は、ターゲット・レジスタ15及び記憶領域18に暗黙のうちに格納されるサブジェクト・プロセッサ状態を供給し、これらのターゲット・レジスタ15及び記憶領域18は、ターゲット・コード21のターゲット命令によって操作される。例えば、グローバル・レジスタ格納部27の低レベル表現は、割当てられたメモリの単なる領域である。しかしながら、トランスレータ・コード19のソースコードにおいては、グローバル・レジスタ格納部27は、高いレベルでアクセスされ、かつ操作されることが可能なデータアレイまたはオブジェクトである。 In one embodiment, the translator code 19 executes the subject program 17 as the target code 21 on the target processor 13 while subject code, such as the subject processor 3, and particularly the subject register 5. Emulate the relevant parts of architecture 1. In a preferred embodiment, at least one global register store 27 is provided (also referred to as subject register bank 27 or abstract register bank 27). In a multiprocessor environment, optionally more than one abstract register bank 27 is provided according to the subject processor architecture. A representation of the subject state is provided by the components of translator code 19 and target code 21. That is, the translator code 19 stores the subject state in various explicit programming language devices such as variables and / or objects. Compared to this, the converted target code 21 provides a subject processor state that is implicitly stored in the target register 15 and storage area 18, and these target register 15 and storage area 18 Manipulated by the target instruction of the target code 21. For example, the low level representation of the global register store 27 is just an area of allocated memory. However, in the source code of the translator code 19, the global register store 27 is a data array or object that can be accessed and manipulated at a high level.

「基本ブロック」という用語は、当業者には良く理解されるであろう。基本ブロックは、厳密に一つの入力ポイント、及び厳密に一つの終了ポイントを有するコードセクションであり、このコードセクションは、ブロックコードを単一の制御パスに制限する。この理由で、基本ブロックは有用な基本制御フロー単位である。適切には、トランスレータ・コード19はサブジェクト・コード17を複数の基本ブロックに分割し、各基本ブロックは、単一の入力ポイントにおける先頭命令と、単一の終了ポイントにおける末尾命令との間の連続的な命令セットである(ジャンプ、呼び出し、又は分岐命令のような)。トランスレータ・コード19は、これらの基本ブロックの内の一つの基本ブロックだけを選択しても良く(ブロックモード)、又は1グループの基本ブロックを選択しても良い(グループブロックモード)。一つのグループブロックは適切には、二つ以上の基本ブロックを含み、これらの基本ブロックは一括して単一ユニットとして処理されることになる。更に、トランスレータは、サブジェクト・コードの同じ基本ブロックを異なる入力条件で表現するアイソ・ブロックを形成しても良い。 The term “basic block” will be well understood by those skilled in the art. A basic block is a code section with exactly one input point and exactly one end point, which restricts the block code to a single control path. For this reason, basic blocks are useful basic control flow units. Suitably, the translator code 19 divides the subject code 17 into a plurality of basic blocks, each basic block being a sequence between the first instruction at a single input point and the last instruction at a single end point. Instruction set (such as jump, call, or branch instruction). The translator code 19 may select only one of these basic blocks (block mode) or a group of basic blocks (group block mode). One group block suitably includes two or more basic blocks, and these basic blocks are collectively processed as a single unit. Furthermore, the translator may form iso blocks that represent the same basic block of the subject code with different input conditions.

好適な実施形態では、中間表現ツリーは、ターゲット・コード21を元のサブジェクト・プログラム17から生成するプロセスの一部として、サブジェクト命令シーケンスに基づいて生成される。IRツリーは、サブジェクト・プログラムによって計算される表現及び実行される動作の抽象表現である。後の時点で、ターゲット・コード21はIRツリーに基づいて生成される。IRノード群の集合は、実際は非巡回有向グラフ(DAG)であるが、通称として「ツリー」と表記される。   In the preferred embodiment, the intermediate representation tree is generated based on the subject instruction sequence as part of the process of generating the target code 21 from the original subject program 17. The IR tree is an abstract representation of the operations computed and performed by the subject program. At a later time, the target code 21 is generated based on the IR tree. The set of IR nodes is actually an acyclic directed graph (DAG), but is commonly referred to as “tree”.

当業者に理解されるように、一実施形態では、トランスレータ・コード19は、C++のようなオブジェクト指向プログラミング言語を用いて実装される。例えば、IRノードは、C++オブジェクトとして実装され、他のノードへの参照は、これらの他のノードに対応するC++オブジェクトへのC++参照として実装される。従って、IRツリーは、互いに対する種々の参照を含むIRノードオブジェクトの集合として実装される。 As will be appreciated by those skilled in the art, in one embodiment, the translator code 19 is implemented using an object oriented programming language such as C ++. For example, IR nodes are implemented as C ++ objects, and references to other nodes are implemented as C ++ references to C ++ objects corresponding to these other nodes. Thus, the IR tree is implemented as a collection of IR node objects that contain various references to each other.

更に、議論されている実施形態においては、IR生成は、一組の抽象レジスタ定義を使用し、これらの抽象レジスタ定義は、サブジェクト・アーキテクチャの特定の機能に対応し、サブジェクト・プログラム17は、サブジェクト・アーキテクチャ上で実行されることが意図されている。例えば、固有の抽象レジスタ定義がサブジェクト・アーキテクチャ上の各物理レジスタ(すなわち、図1のサブジェクト・レジスタ5)に対して存在する。そのように、トランスレータにおける抽象レジスタ定義は、IRノードオブジェクト(すなわちIRツリー)への参照を含むC++オブジェクトとして用いることができる。一組の抽象レジスタ定義によって参照される全てのIRツリーの集合は、ワーキングIRフォレストと表記される(「フォレスト」と表記されるのは、フォレストが複数の抽象レジスタルートを含み、これらの抽象レジスタルートの各々は一つのIRツリーを参照するからである)。これらのIRツリー及び他のプロセスは、トランスレータ・コード19の一部を適切に形成する。 Further, in the embodiment being discussed, IR generation uses a set of abstract register definitions that correspond to specific functions of the subject architecture, and subject program 17 is subject to It is intended to be executed on the architecture. For example, a unique abstract register definition exists for each physical register on the subject architecture (ie, subject register 5 in FIG. 1). As such, the abstract register definition in the translator can be used as a C ++ object that includes a reference to an IR node object (ie, an IR tree). The set of all IR trees referenced by a set of abstract register definitions is denoted as a working IR forest (“forest” refers to a forest containing multiple abstract register roots and these abstract registers (Each root refers to one IR tree). These IR trees and other processes appropriately form part of the translator code 19.

図2は、ターゲット計算プラットフォーム10上で実行される場合のトランスレータ・コード19を更に詳細に示している。上に議論したように、トランスレータ・コード19のフロントエンドはデコーダユニット191を含み、デコーダユニット191はサブジェクト・プログラム17の現時点で必要とされるセクションをデコードして複数のサブジェクト・コードブロック171a,171b,171c(これらのサブジェクト・コードブロックは通常それぞれサブジェクト・コードの一つの基本ブロックを含む)を提供することもでき、各サブジェクト・ブロックに関するデコーダ情報172、及びサブジェクト・ブロックに含まれ、かつトランスレータ・コード19の後の時点での動作を支援するサブジェクト命令を提供することもできる。或る実施形態では、トランスレータ・コード19のコアにおけるIRユニット192は中間表現(IR)を、デコードされたサブジェクト命令に基づいて生成し、最適化が中間表現に対して適宜行なわれる。トランスレータ・コード19のバックエンドの一部としてのエンコーダ193は、ターゲット・プロセッサ13により実行されることが可能なターゲット・コード21を生成する(設置する)。この単純化された例では、三つのターゲット・コードブロック211a〜211cが生成され、サブジェクト・コードブロック171a〜171cをサブジェクト・プラットフォーム1上で実行することと等価なことが、ターゲット・プラットフォーム10上で実行される。また、エンコーダ193は、ヘッダコード及び/又はフッタコード212を、ターゲット・コードブロック211a〜211cの幾つかの、または全てのターゲット・コードブロックに対して生成することができ、ヘッダコード及び/又はフッタコード212は、ターゲット・ブロックが動作する環境を設定するような機能、及び必要に応じて制御をトランスレータ・コード19に戻すような機能を実行する。 FIG. 2 shows the translator code 19 in more detail when executed on the target computing platform 10. As discussed above, the front end of the translator code 19 includes a decoder unit 191, which decodes the currently required section of the subject program 17 to produce a plurality of subject code blocks 171a, 171b. , 171c (each of these subject code blocks typically includes one basic block of subject code), decoder information 172 for each subject block, and included in the subject block, and A subject instruction may be provided to assist in operation at a later point in code 19. In one embodiment, the IR unit 192 in the core of the translator code 19 generates an intermediate representation (IR) based on the decoded subject instruction, and optimization is performed on the intermediate representation accordingly. An encoder 193 as part of the back end of the translator code 19 generates (installs) a target code 21 that can be executed by the target processor 13. In this simplified example, three target code blocks 211a-211c are generated, and equivalent to executing the subject code blocks 171a-171c on the subject platform 1, on the target platform 10. Executed. The encoder 193 can also generate a header code and / or footer code 212 for some or all target code blocks of the target code blocks 211a-211c, and the header code and / or footer. Code 212 performs functions such as setting the environment in which the target block operates, and returning control to translator code 19 as needed.

図3は、本発明の実施形態により用いられるような装置を示す更に詳細な概略図である。図3の説明のための具体例において、トランスレータ・コード19はSPARCからx86への変換を実行するように構成されている。 FIG. 3 is a more detailed schematic diagram illustrating an apparatus as used in accordance with an embodiment of the present invention. In the illustrative example of FIG. 3, the translator code 19 is configured to perform a SPARC to x86 conversion.

サブジェクト・コード17は、ターゲット・コード21aに変換されるべきサブジェクト実行ファイル17aを備える。サブジェクト実行ファイル17aは、所有権のあるライブラリ及び/又はシステムライブラリを含む多数のサブジェクト・ライブラリを順に参照してもよく、その中の関数を利用しても良い。二つの例示的なライブラリ17b、17cが図示されている。   The subject code 17 includes a subject execution file 17a to be converted into the target code 21a. The subject execution file 17a may sequentially refer to a number of subject libraries including a library with ownership and / or a system library, and may use a function therein. Two exemplary libraries 17b, 17c are shown.

サブジェクト実行ファイル17aは、サブジェクト・プロセッサのオペレーティング・システムと互換性のある実行ファイルフォーマットにより構成されている。典型的には、サブジェクト実行ファイル17aは、コード17a_1の本文と、ヘッダ17a_2とを備える。ヘッダ17a_2は、コード17a_1の本文に関する情報を提供し、例えばその情報は、サブジェクト実行ファイルを解析する際に有用な情報、およびサブジェクト実行ファイル17aが実行される場合、動的リンクを実行するために用いられる情報である。「ヘッダ」として参照されているが、ヘッダ17a_2は、完全に、又は部分的に、実行ファイル17aの最初の部分から離れて存在しても良い。   The subject execution file 17a has an execution file format that is compatible with the operating system of the subject processor. Typically, the subject execution file 17a includes a body of code 17a_1 and a header 17a_2. The header 17a_2 provides information about the body of the code 17a_1, for example, that information is useful for analyzing the subject execution file, and to perform dynamic linking when the subject execution file 17a is executed Information used. Although referred to as a “header”, the header 17a_2 may exist completely or partially away from the first part of the executable file 17a.

図3の説明のための具体例において、サブジェクト実行ファイル17aは、実行可能リンクフォーマット(ELF)に従って構成されている。ELF標準は広く用いられており、この構造のファイルのヘッダ17a_1は、サブジェクト実行ファイル17aに関連した手続きリンクテーブル(PLT)17dに関する情報を含む。   In the specific example for explaining FIG. 3, the subject execution file 17a is configured according to an executable link format (ELF). The ELF standard is widely used, and the header 17a_1 of the file having this structure includes information on the procedure link table (PLT) 17d related to the subject execution file 17a.

サブジェクト・コード17がサブジェクト・プロセッサ3上でネイティブに実行されている場合、サブジェクト実行ファイル17aにおける関数ライブラリ17b及び17cへの呼び出しは、PLT 17d(PLT)の利用及びサブジェクト・リンカー・コード17eにより実施される。この意味で、サブジェクト・リンカー・コード17eは、PLT 17dを中間制御構造として用い、サブジェクト実行ファイル17aにおいて動的にリンクされた関数を処理する。 When the subject code 17 is executed natively on the subject processor 3, the call to the function libraries 17b and 17c in the subject execution file 17a is performed by using the PLT 17d (PLT) and the subject linker code 17e. Is done. In this sense, the subject linker code 17e uses the PLT 17d as an intermediate control structure, and processes dynamically linked functions in the subject execution file 17a.

サブジェクト関数呼び出しは、サブジェクト・リンカー・コード17eへ制御フローを渡すように構成され、サブジェクト・リンカー・コード17eは、サブジェクト関数呼び出しと関連したPLT 17dにおいてリンク情報を書き換えてそれにより関数を実行するサブジェクト・コードへサブジェクト関数呼び出しをリンクするように構成されている。 The subject function call is configured to pass control flow to the subject linker code 17e, which rewrites link information in the PLT 17d associated with the subject function call , thereby executing the function. It is configured to link subject function calls to subject code.

サブジェクト・コードがサブジェクト・プロセッサ上でネイティブに実行されている場合、サブジェクト・ライブラリ17bの関数へサブジェクト実行ファイル17aの関数呼び出しをリンクするためにPLT 17dが用いられる手続きは、本明細書の導入部分において記載されており、この手続きは、当業者にとって既知であろう。ソラリスオペレーティング・システムにおけるランタイム・リンク及びPLTの使用に関する更なる情報は、以下において参照することが可能である。 The procedure in which the PLT 17d is used to link the function call of the subject execution file 17a to the function of the subject library 17b when the subject code is executed natively on the subject processor is the introductory part of this specification. This procedure will be known to those skilled in the art. Additional information regarding the use of runtime links and PLTs in the Solaris operating system can be found below.

http://docs.sun.com/app/docs/doc/817−1984/6mhm7pl1b
また、図3には、リンク検査関数を実行するサブジェクト・コードが示されており、これは、以後リンク・オーディター17fとして参照される。ソラリスオペレーティング・システムにおいて、リンク・オーディター17fは、オペレーティング・システムによって提供されるリンク検査インターフェースと互換性のあるコードを用いることによって、リンカーの動作を監視することが可能である。ソラリスリンク検査インターフェースは、rtld−auditとして知られている。rtld−auditに関する更なる情報は、以下において参照することが可能である。
http: // docs. sun. com / app / docs / doc / 817-1984 / 6mhm7pl1b
FIG. 3 also shows the subject code for executing the link check function, which will be referred to as the link auditor 17f hereinafter. In the Solaris operating system, the link auditor 17f can monitor the operation of the linker by using code that is compatible with the link check interface provided by the operating system. The Solaris link inspection interface is known as rtld-audit. More information on rtld-audit can be referenced below.

http://docs.sun.com/app/docs/doc/817−1984/6mhm7pl24
rtld−auditインターフェースに適合するリンク・オーディターは、実行ファイルに不可欠な要素としてロードされ、そこに含まれる検査ルーチンは、リンカーの実行の種々のステージにおいて、サブジェクト・リンカー・コード17eによって自動的に呼び出される。rtld−auditインターフェースを用いることで、リンク・オーディターが、サブジェクト・コード実行ファイル17a、及びサブジェクト・ライブラリ17d及び17cのようなロードされたオブジェクトに関する情報にアクセスすることが可能となる。更に、リンク・オーディターは、アプリケーションとライブラリとの間の情報の伝達に関連した他の情報と同様に、そのようなロードされた複数のオブジェクト間において形成される関係に関する情報へアクセスすることが可能である。更なる情報は、以下において参照することが可能である。
http: // docs. sun. com / app / docs / doc / 817-1984 / 6mhm7pl24
A link auditor that conforms to the rtld-audit interface is loaded as an integral part of the executable, and the test routines it contains are automatically executed by the subject linker code 17e at various stages of linker execution. Called. Using the rtld-audit interface, the link auditor can access information about the loaded object, such as the subject code execution file 17a and the subject libraries 17d and 17c. In addition, the link auditor can access information about the relationships formed between such loaded objects, as well as other information related to the communication of information between the application and the library. Is possible. More information can be referenced below.

http://docs.sun.com/app/docs/doc/806−0641/6j9vuqujm
リンク・オーディターは、リンカーにより実行されるPLT更新の期間中、関数呼び出しの個別の起動、及びのその戻り値を監視することも可能である。
http: // docs. sun. com / app / docs / doc / 806-0641 / 6j9vukujm
The link auditor can also monitor individual invocations of function calls and their return values during the PLT update performed by the linker.

サブジェクト・プロセッサ3上でネイティブに実行されている場合、サブジェクト・ライブラリ17dにおける関数呼び出しは、PLT 17dへサブジェクト制御フローを渡し、その後、サブジェクト・リンカー・コード17eへ渡すことになる。サブジェクト・リンカー・コード17eは、サブジェクト関数呼び出しに関連するPLT 17eに固有のリンク情報を書き換えてそれにより、サブジェクト関数に対するPLT入力への後続の呼び出しを、サブジェクト・ライブラリ関数17dに固有の関数を実行するための関連するサブジェクト・コードへリンクすることになる。 When executed natively on the subject processor 3, a function call in the subject library 17d will pass the subject control flow to the PLT 17d and then to the subject linker code 17e. The subject linker code 17e rewrites the link information specific to the PLT 17e associated with the subject function call , so that subsequent calls to the PLT input for the subject function are replaced with functions specific to the subject library function 17d. It will link to the relevant subject code for execution.

リンカーの動作を監視するためのリンク・オーディターを用いた関数リンクテーブルの生成
サブジェクト実行ファイル17aに対応するターゲット・コード21を生成する前に、トランスレータ・コード19は、サブジェクト実行ファイル17aのヘッダ17a_1を参照することによって、及び/又はサブジェクト実行ファイル17aの一回又は複数回のスキャンを実行することによって、サブジェクト実行ファイル17aに関する情報を収集する。トランスレータ・コード19は、収集された情報を用いて、サブジェクト実行ファイル17aに関連するPLT 17dを識別する。
Generation of Function Link Table Using Link Auditor for Monitoring Linker Operation Before generating the target code 21 corresponding to the subject execution file 17a, the translator code 19 includes the header 17a_1 of the subject execution file 17a. And / or by performing one or more scans of the subject execution file 17a to collect information about the subject execution file 17a. The translator code 19 uses the collected information to identify the PLT 17d associated with the subject execution file 17a.

トランスレータ・コード19がサブジェクト実行ファイル17aに関する情報を収集した後、トランスレータ・コード19は初めてサブジェクト実行ファイル17aを介して動作し、そのように動作する際、サブジェクト実行ファイル17aにおける動的にリンクされた関数呼び出しと、対応する関数を実行するコードとの間のリンクを設定する。 After the translator code 19 has gathered information about the subject execution file 17a, the translator code 19 is run through the subject execution file 17a for the first time and is dynamically linked in the subject execution file 17a when operating as such. Set up a link between a function call and the code that executes the corresponding function.

トランスレータ・コード19がサブジェクト実行ファイル17aを介して動作する際、サブジェクト・コード17aにおいて発見される、動的にリンクされた関数呼び出しの各々は、トランスレータ・コード19に保持された関数リンクテーブル(FLT)19aと照合される。サブジェクト・コード17aの最初の変換において予測されるように、FLT 19aにおいて入力が存在しない関数呼び出しが発生する場合、PLT 17dを介してリンカー・コード17eへ、サブジェクト・コード17の制御フローが進められる。トランスレータ・コード19は、その後、関数を実行するコードを介して動作を続けることが可能である。 When the translator code 19 operates via the subject executable 17a, each dynamically linked function call found in the subject code 17a is a function link table (FLT) held in the translator code 19. ) 19a. As expected in the first conversion of subject code 17a, if a function call occurs in FLT 19a where there is no input, the control flow of subject code 17 proceeds to linker code 17e via PLT 17d. . The translator code 19 can then continue to operate through code that performs the function.

リンカー17eはリンク・オーディター17fへリンク情報を渡し、トランスレータ・コード19はこの情報を用いてFLT 19aへ入力を加える。特に、トランスレータ・コード19は、サブジェクト実行ファイル17aにより呼び出される関数の各々の識別子、及びその関数の位置を受信し、かつ格納する。FLT 19aにおける各入力は、関数識別子及び対応する関数の位置を備える。しかしながら、トランスレータ・コード19は、リンカー・コード17eによるPLT領域17dの更新の変換を含むターゲット・コードを生成しない。 Linker 17e passes link information to link auditor 17f, and translator code 19 uses this information to add input to FLT 19a. In particular, the translator code 19 receives and stores the identifier of each function called by the subject execution file 17a and the location of the function. Each input in the FLT 19a comprises a function identifier and a corresponding function location. However, the translator code 19 does not generate target code that includes conversion of the update of the PLT region 17d by the linker code 17e.

上述した例示的な実施形態において、トランスレータ・コード19は、FLT 19aを構築する際にrtld−auditインターフェースと互換性のあるリンク・オーディター17fを用いる。しかしながら、他の実施例においては、リンカーの動作を識別する別の技術を用い、それによりFLT 19aを入力及び維持しても良い。 In the exemplary embodiment described above, the translator code 19 uses a link auditor 17f that is compatible with the rtld-audit interface in building the FLT 19a. However, in other embodiments, another technique for identifying the behavior of the linker may be used, thereby entering and maintaining the FLT 19a.

関数リンクテーブルの生成 − リンカー動作の直接監視
さらなる例示的な実施形態においては、PLT 17dへの書き換えを検出し、かつサブジェクト実行ファイル17aにより呼び出される動的にリンクされたサブジェクト関数を実行するコードの位置を確認するために別の方法を用いても良い。そのような実施形態において、トランスレータ・コード19は、実行ファイルのファイル形式の情報からPLTを認証しても良い。PLT領域の位置についての情報を用いて、トランスレータは、特有のサブジェクト・コード命令シーケンスを検出することによってPLTを書き換えるような、リンカーの動作を識別することができる。SPARCから変換した例においては、認証されたPLT領域に影響を与える、特有のサブジェクト命令シーケンスのキャッシュフラッシュ命令が検出されても良い。
Generation of the function link table - in the direct monitoring further exemplary embodiment of the linker operation detects rewrite of the PLT 17d, and executes a subject function that is dynamically linked to be called by the subject executable 17a Another method may be used to confirm the position of the code. In such an embodiment, the translator code 19 may authenticate the PLT from the file format information of the executable file. Using information about the location of the PLT region, the translator can identify the behavior of the linker, such as rewriting the PLT by detecting a unique subject code instruction sequence. In an example converted from SPARC, a cache flush instruction with a specific subject instruction sequence that affects the authenticated PLT region may be detected.

サブジェクト・コード命令のキャッシュフラッシュ命令は、PLTからリンカーへ、サブジェクト・コード中の制御フローが渡される場合、及びリンカーが応答してPLT入力を書き換える場合に実行される。一度、フラッシュの適正なシーケンスが発生すると、トランスレータは、書き換えられたPLT領域を読み取り、サブジェクト実行ファイルにより呼び出される関数を実行するコードのアドレスを決定する。このアドレスは、サブジェクト実行ファイルにおいて動的にリンクされた関数呼び出しと、その関数を実行するコードとの間の関連付けを生成することに用いることができる。しかしながら、トランスレータは、PLT領域により提供される中間制御構造の書き換えに対応するターゲット・コードの生成は行わない。上述したように、トランスレータは、関数の識別子、及びFLTにおいて関数を実行するコードのアドレスを格納することができる。
Cache flush instructions subject code instructions from PLT to the linker, when the control flow in the subject code is passed, and a linker is executed if Ru rewritten PLT input in response. Once the proper sequence of flashes has occurred, the translator reads the rewritten PLT region and determines the address of the code that executes the function called by the subject execution file. This address can be used to create an association between a dynamically linked function call in the subject execution file and the code that executes the function. However, the translator does not generate target code corresponding to the rewriting of the intermediate control structure provided by the PLT region. As described above, the translator can store the function identifier and the address of the code that executes the function in the FLT.

関数リンクテーブルにおける情報の利用
標準的なアプリケーションにおいて、トランスレータ・コード19が、FLT入力が形成された、一つ又は複数の動的にリンクされた関数呼び出しを含むサブジェクト・コード17と遭遇することは非常に起こり得ることである。例えば、トランスレータは、サブジェクト・コードの事前に変換された部分を再び変換することを必要とされ得る。この状況において、対応する入力がFLT 19aに存在する関数呼び出しが遭遇される。トランスレータ・コード19は、FLT 19aに事前に記録された情報を用いて、サブジェクト・コードにおける関数呼び出しと、その関数を実行する、対応するコードとの間の関連付けを設定する。この関連付けは、便宜的に直接リンク形式としても良い。
Use of Information in Function Link Tables In a standard application, translator code 19 encounters subject code 17 that includes one or more dynamically linked function calls with FLT inputs formed. It can happen very much. For example, the translator may be required to convert the pre-converted portion of the subject code again. In this situation, a function call is encountered in which the corresponding input is in FLT 19a. The translator code 19 uses information previously recorded in the FLT 19a to set up an association between the function call in the subject code and the corresponding code that executes the function. This association may be in the form of a direct link for convenience.

特定の関数呼び出しの再変換は、PLT 17d及びリンカー・コード17eの両方をバイパスし、トランスレータ・コード19が、動的にリンクされた関数呼び出しを、その関数を実行する関連するコードに効果的に関連付けることを可能とする。すなわち、サブジェクト・コードにおいて関数呼び出しを、FLTを用いてその関数を実行する対応するコードに関連付けることは、サブジェクト・コードにおいて中間制御構造に対応するターゲット・コードを生成することを含まない。当該関数呼び出しに関連するPLT17dに固有のリンク情報を書き換えるサブジェクト・リンカー・コード17eは、同様に変換されない。再変換の間、サブジェクト・リンカー・コード17eは、サブジェクト・コードにおいてバイパスされ、従ってトランスレータ・コード19によってアクセスされない。 Retranslation of a particular function call bypasses both PLT 17d and linker code 17e, and translator code 19 effectively translates the dynamically linked function call into the associated code that executes the function. Allows association. That is, associating a function call in the subject code with the corresponding code that executes the function using FLT does not involve generating target code corresponding to the intermediate control structure in the subject code. Similarly, the subject linker code 17e that rewrites link information unique to the PLT 17d related to the function call is not converted. During reconversion, the subject linker code 17e is bypassed in the subject code and is therefore not accessed by the translator code 19.

上述のように、トランスレータ・コード19は第一の時間にサブジェクト・コードの一部分を介して動作しつつ、FLT 19aに入力する。後続の再変換は、トランスレータ・コード19がリンカー・コード17eをバイパスし、FLT 19aの情報を利用するので、最初の変換よりも効率的となり得る。再変換は、トランスレータがFLT 19aに入力する動作を行うことを必要としない。 As described above, the translator code 19 enters the FLT 19a while operating through a portion of the subject code at a first time. Subsequent reconversion can be more efficient than the initial conversion because the translator code 19 bypasses the linker code 17e and utilizes information from the FLT 19a. The reconversion does not require the translator to perform an operation that inputs to the FLT 19a.

間接関数呼び出し
トランスレータが遭遇する動的にリンクされた関数呼び出しの一部は、間接的な関数呼び出しであることがある。間接関数呼び出しは、変数値に依存する呼び出しである。変数値は、呼び出される位置を決定し、変動し得る。従って、トランスレータは、間接関数呼び出しに対応するターゲット・コードが実行されるポイントにおいて、必要とされる関数を実行するコードの位置を決定することのみが可能である。
Indirect function call
Some of the dynamically linked function calls encountered by the translator may be indirect function calls. Indirect function calls are calls that depend on variable values. The variable value determines where it is called and can vary. Thus, the translator can only determine the location of the code that executes the required function at the point where the target code corresponding to the indirect function call is executed.

図1に関連して上述したように、トランスレータが関数呼び出しに遭遇する場合、トランスレータは新しい基本ブロックを設定する。トランスレータは、FLTに格納された情報と、間接的関数呼び出しによって参照されるサブジェクト・アドレスとを照合することが可能である。FLTに既にアドレスが存在する場合、トランスレータは、間接的関数呼び出しが現在参照している関数への呼び出しと事前に遭遇していた必要がある。トランスレータは、その結果、同じ機能を実行するようにその関数呼び出しと関連して事前に設定された基本ブロックを、新規に設定された基本ブロックとして扱うことが可能である。トランスレータが、新規に設定された基本ブロックの代わりに、事前に設定された基本ブロックを使用することを可能とすることにより、実行するために必要とされるトランスレータの仕事量を更に減少させることが可能である。 As described above in connection with FIG. 1, when the translator encounters a function call, the translator sets the new basic blocks. The translator can collate the information stored in the FLT with the subject address referenced by the indirect function call. If the address already exists in the FLT, the translator must have previously encountered a call to the function that the indirect function call is currently referring to. As a result, the translator can treat the basic block previously set in association with the function call to perform the same function as the newly set basic block. Allowing translators to use preconfigured basic blocks instead of newly configured basic blocks, thereby further reducing the amount of translator work required to perform Is possible.

サブジェクト・コード以外のコードと、サブジェクト・コードにおいて動的にリンクされた関数呼び出しとの関連付け
上述した実施形態において、FLTに保持される位置は、便宜的に、対応する関数を実行するサブジェクト・コード命令のアドレスであった。しかしながら、本発明の別の実施形態においては、FLT入力は、対応する関数を実行する他のコードを指し示すFLTにおけるアドレスとして、トランスレータ・コード19により選択されても良い。この方法でFLTを用いることにより、トランスレータはその作業負荷を減少させることが可能である。FLT入力は、
事前に変換されたターゲット・コード、ターゲット・オペレーティング・システム20のネイティブ・ライブラリ28における関数、
トランスレータに知られ、かつターゲット・コードが便宜的に生成される最適化されたIRの一部分、または
サブジェクト・コードの位置または上記の中の任意の一つを示す、またはそれを生成するのに用いられる、デリファレンスされる変数
の中の任意の一つを指し示すように、トランスレータによって選択されても良い。
Association of code other than subject code and function call dynamically linked in subject code In the above-described embodiment, the position held in the FLT is, for convenience, the subject code that executes the corresponding function. It was the address of the instruction. However, in another embodiment of the present invention, the FLT input may be selected by translator code 19 as an address in the FLT that points to other code that performs the corresponding function. By using FLT in this way, the translator can reduce its workload. The FLT input is
Pre-translated target code, functions in the native library 28 of the target operating system 20,
Used to indicate or generate a portion of the optimized IR known to the translator and where the target code is conveniently generated, or the location of the subject code or any one of the above May be selected by the translator to point to any one of the dereferenced variables.

上述したような、デリファレンスされる変数の使用は、トランスレータが、関数呼び出しと、対応する関数を実行するコードとの間の関連付けの制御をより一層働かせることを許可する。このことは、特定の関数を実行するコードの位置が、サブジェクト・プログラムの現在の呼び出しの存続中、固定されない場合に望ましい。 The use of dereferenced variables, as described above, allows the translator to exercise more control over the association between function calls and the code that executes the corresponding function. This is desirable when the location of the code that performs a particular function is not fixed for the duration of the current call to the subject program.

説明のための例において、トランスレータ・コード19は、SPARCからx86への変換を実行するように構成されている。SPARCターゲットシステムライブラリは、その中に、特定の引数における関数の実行の結果が厳密に定義されている一つ又は複数の関数を実行するルーチンを含み得る。そのように厳密に定義された関数は、ABI「ドット」関数として知られており、例えば、.umul、.smul等の計算関数の領域を含む。これらのABIドット関数は、以下に示されている。 In the illustrative example, translator code 19 is configured to perform a SPARC to x86 conversion. The SPARC target system library may include routines in it that execute one or more functions in which the result of the execution of the function at a particular argument is strictly defined. Such a strictly defined function is known as an ABI “dot” function, for example. umul,. It includes the area of calculation functions such as smul. These ABI dot functions are shown below.

http://www.sparc.com/standards/psABI3rd.pdf
ABIドット関数の動作は厳密に定義されているので、トランスレータは、ABIドット関数への呼び出しとして特定される関数呼び出しを、ABIドット関数と同じ効果を有する単純な命令として扱うことが可能である。このことは、例えば、FLT入力を設定し、かつ対応する関数を実行する非サブジェクト・コードの一部分と関数呼び出しを直接的に関連付けることによって、トランスレータがPLTを完全にバイパスすることを可能とする。この方法でPLTをバイパスすることは、トランスレータの作業負荷を減少させる。更に、この例において、トランスレータは、関数呼び出し自体の代わりに、関連するABIドット関数の効果を有するコードを付加することによって、関数呼び出しを扱うことに関連する仕事を完全に回避することが可能である。
http: // www. sparc. com / standards / psABI3rd. pdf
Since the operation of the ABI dot function is strictly defined, the translator can treat the function call specified as a call to the ABI dot function as a simple instruction having the same effect as the ABI dot function. This allows the translator to bypass the PLT completely, for example by setting the FLT input and directly associating the function call with a portion of the non-subject code that executes the corresponding function. Bypassing the PLT in this manner reduces the translator workload. Furthermore, in this example, the translator can completely avoid the work associated with handling function calls by adding code with the effect of the associated ABI dot function instead of the function call itself. is there.

ネイティブの関数ライブラリとの既知の対応を有するサブジェクト関数への呼び出しは、トランスレータ・コード19により識別されることが可能であり、ネイティブの関数との対応は、トランスレータの作業負荷を減少させるように利用される。例えば、サブジェクト・ライブラリ17cにおけるmemcpyへの呼び出しは、FLT 19aにおいて、ネイティブ・ライブラリ28におけるネイティブのx86に相当するものの位置に関連付けられることが可能である。このことは、memcpy関数のサブジェクト(SPARC)バージョンの変換コストを削減する。加えて、memcpy関数のネイティブの(x86)バージョンは、ネイティブのハードウェアの複雑さに適応し、そのハードウェアに対する最も効率的な方法でその関数の望ましい効果を得ることが可能である。 Calls to subject functions that have a known correspondence with the native function library can be identified by the translator code 19, and the correspondence with the native function can be used to reduce the translator workload. Is done. For example, a call to memcpy in subject library 17c, in FLT 19a, can be associated to the position of those corresponding to native x86 in the native library 28. This reduces the conversion cost of the subject (SPARC) version of the memcpy function. In addition, the native (x86) version of the memcpy function can adapt to the complexity of the native hardware and obtain the desired effect of the function in the most efficient way for that hardware.

図4は、動的にリンクされた関数呼び出しを行う方法の例示的な実施形態を説明するフロー概略図である。サブジェクト・コードは、受信され、読み取られてPLT領域を識別する(ステップ101)。動的にリンクされた関数呼び出しは、サブジェクト・コードにおいて識別され(ステップ102)、動的にリンクされた関数呼び出しは、PLTにおいてサブジェクト関数呼び出しに関連付けられたリンク情報を書き換えるサブジェクト・リンカー・コードへ、サブジェクト制御フローを渡し、それにより、その関数を実行するサブジェクト・コードへサブジェクト関数呼び出しをリンクするように構成される。FLTは識別された関数呼び出しに対応する入力について照合を行い(ステップ103)、FLTが関連する入力を含む場合は、本方法はステップ107へ進み、ステップ107においては、ターゲット・コードが生成され、そのターゲット・コードにおいては、関数呼び出しが、その関数を実行するコードに関連付けられている。ステップ107において設定された関連付けは、FLTに格納されているような関数識別子及び位置に基づくものである。生成されたターゲット・コードは、PLTにより提供される中間制御構造に対応するターゲット・コードを含まない。 FIG. 4 is a flow diagram illustrating an exemplary embodiment of a method for making dynamically linked function calls. A subject code is received and read to identify the PLT region (step 101). The dynamically linked function call is identified in the subject code (step 102), and the dynamically linked function call is directed to the subject linker code that rewrites the link information associated with the subject function call in the PLT. Is configured to pass the subject control flow and thereby link the subject function call to the subject code that executes the function. The FLT performs a match on the input corresponding to the identified function call (step 103), and if the FLT contains an associated input, the method proceeds to step 107, where the target code is generated, In the target code, the function call is associated with the code that executes the function. The association set in step 107 is based on the function identifier and position as stored in the FLT. The generated target code does not include the target code corresponding to the intermediate control structure provided by the PLT.

ステップ103において、FLTが、識別された関数呼び出しに対する関連する入力を含んでいない場合、リンク・オーディターは関数識別子及び位置を得るように動作することができ(ステップ104)、及び/又は関数識別子及び位置はサブジェクト・コード命令のキャッシュフラッシュを監視することにより得ることができる(ステップ105)。ステップ104、及び/又はステップ105において得られる情報は、その後FLTへ入力される(ステップ106)。その後、ステップ104、及び/又はステップ105において得られた情報に基づいて、ステップ107が実行される。   In step 103, if the FLT does not include an associated input for the identified function call, the link auditor may operate to obtain a function identifier and location (step 104), and / or a function identifier. And location can be obtained by monitoring the cache flush of subject code instructions (step 105). The information obtained in step 104 and / or step 105 is then input to the FLT (step 106). Thereafter, step 107 is executed based on the information obtained in step 104 and / or step 105.

上記に詳細に記載された例示的な実施形態において、サブジェクト・リンカー・コードはトランスレータにアクセス可能なサブジェクト・コードの本文に存在する。しかしながら、他の実施形態においては、サブジェクト・コードにおいてリンクを実行するリンカーの機能は、特に、図3に示されたリンカー・コード19eのような、ターゲット・プロセッサ上での実行のために記述されたターゲット・コードを用いるトランスレータによって提供されても良い。更に、例示的実施形態はサブジェクト実行ファイルに関連したPLTに焦点を合わせたものであったが、サブジェクト・ライブラリ17b、17cは、それら自身のPLT領域の形式において、中間制御構造も含むことがある。本明細書に記載された方法及び装置は、これらのPLT領域や、中間制御構造を含み、かつ対応する問題を生じさせるコードの、別の識別可能な一部分に対して等しく適用されることが可能である。 In the exemplary embodiment described in detail above, the subject linker code is in the body of the subject code accessible to the translator . However, in other embodiments, the linker's ability to perform linking in the subject code is specifically described for execution on a target processor, such as the linker code 19e shown in FIG. It may be provided by a translator that uses a different target code. Furthermore, although the exemplary embodiments focused on PLTs associated with subject executables, subject libraries 17b, 17c may also include intermediate control structures in the form of their own PLT regions. . The methods and apparatus described herein can be equally applied to these identifiable portions of code that include PLT regions and intermediate control structures and cause corresponding problems. It is.

本明細書に記載された技術を用いることによって、トランスレータ・コード19は、PLTやそれに類するような、中間制御構造における間接リンク情報の更新に対応する変換を生成するために、サブジェクト・コードの制御フローに従う必要がなく、従って、ランタイムにおいて書き換えられるコードの多数の集中を含むサブジェクト・コードの一部の変換のプロセッシング及びメモリコストを避けることができる。 By using the techniques described herein, the translator code 19 controls the subject code to generate a transformation corresponding to the update of indirect link information in the intermediate control structure, such as PLT. no need to follow the flow, hence, it is possible to avoid processing and memory cost of part of the conversion of the subject code containing a large number of concentration of codes are rewritten et at runtime.

加えて、トランスレータが、間接リンク情報の更新を含むサブジェクト・コードの実行を行う状況に対処する効率的な方法が説明された。
特に、本発明は、プログラムコード変換を実行するコンピュータシステムにおいて有用な方法及びユニットを開発した。そのような方法及びユニットは、サブジェクト・プログラム・コードのターゲット・コードへの動的バイナリ変換を提供するランタイムトランスレータのように構成されたコンピュータシステムに関連して特に有用である。
In addition, an efficient method has been described for dealing with situations where the translator performs subject code execution that involves updating indirect link information.
In particular, the present invention has developed methods and units useful in computer systems that perform program code conversion. Such methods and units are particularly useful in connection with computer systems configured as run-time translators that provide dynamic binary conversion of subject program code to target code.

本発明は、本明細書に明示された任意の方法を実行するように構成されたトランスレータにまで及ぶ。同様に、本発明は、本明細書に明示された任意の方法を実行するコンピュータによって実装可能な命令を記録した、コンピュータが読み取り可能な記録メディアにまで及ぶ。 The invention extends to a translator configured to perform any of the methods specified herein. Similarly, the invention extends to a computer readable recording medium having recorded computer-implementable instructions for performing any method specified herein.

少なくとも、本発明のいくつかの実施形態は、専用のハードウェアを用いて単独に構成されても良く、本明細書で用いられる「モジュール」または「ユニット」のような単語は、それに限られるわけではないが、特定のタスクを実行するフィールド・プログラマブル・ゲート・アレイ(FPGA)、又は特定用途向け集積回路(ASIC)のような、ハードウェアデバイスを含んでも良い。あるいは、本発明の要素は、アドレス可能な記録メディアに存在するように構成されても良く、一つ又は複数のプロセッサ上で実行されるように構成されても良い。従って、本発明の機能的要素は、ある実施形態においては、例として、ソフトウェア要素、オブジェクト指向ソフトウェア要素、クラス要素及びタスク要素、プロセス、機能、属性、手続き、サブルーチン、プログラムコードのセグメント、ドライバ、ファームウェア、マイクロコード、回路構成、データ、データベース、データ構造、テーブル、アレイ、及び変数のような要素を含んでも良い。更に、好適な実施形態が、以下に説明される要素、モジュール及びユニットを参照して説明されるが、このような機能的要素はより少ない要素に合成されても良く、又は追加的要素に分割されても良い。   At least some embodiments of the present invention may be configured independently using dedicated hardware, and words such as “module” or “unit” as used herein are not limited thereto. However, it may include a hardware device such as a field programmable gate array (FPGA) or application specific integrated circuit (ASIC) that performs a specific task. Alternatively, the elements of the present invention may be configured to be present on an addressable recording medium and may be configured to be executed on one or more processors. Accordingly, the functional elements of the present invention, in one embodiment, include, by way of example, software elements, object-oriented software elements, class elements and task elements, processes, functions, attributes, procedures, subroutines, segments of program code, drivers, Elements such as firmware, microcode, circuitry, data, databases, data structures, tables, arrays, and variables may be included. Furthermore, although preferred embodiments are described with reference to the elements, modules and units described below, such functional elements may be combined into fewer elements or divided into additional elements. May be.

本発明の装置及び方法の種々の特徴は、上記した実施形態の各々において別々に説明されている。しかしながら、本明細書に記載された各実施形態の別々の側面は、本明細書において記載された他の実施形態に結合され得るということが、本発明の発明者の完全なる意図である。   Various features of the apparatus and method of the present invention are described separately in each of the above-described embodiments. However, it is the intent of the inventor of the present invention that separate aspects of each embodiment described herein can be combined with other embodiments described herein.

記載された通りの好適な実施形態の種々の適応と変更が、本発明の範囲と技術思想から逸脱することなく、構成されることが可能であることを当業者は理解するであろう。従って、本発明は、添付の特許請求の範囲の範囲内においてならば、本明細書に明確に記載されているようにではなく実施されても良いことが理解されたい。   Those skilled in the art will appreciate that various adaptations and modifications of the preferred embodiments as described can be made without departing from the scope and spirit of the invention. Accordingly, it is to be understood that the invention may be practiced otherwise than as specifically described herein within the scope of the appended claims.

いくつかの好適な実施形態が示され、説明されたが、当業者であれば、本発明の範囲を逸脱することなく、種々の変形や修正が、添付の特許請求の範囲に明示されるように、行われ得ることを理解するであろう。   While several preferred embodiments have been shown and described, various changes and modifications will be apparent to those skilled in the art without departing from the scope of the invention. It will be understood that this can be done.

同時に提出された、又は本願と関連したこの明細書に先立つ全ての文書、及びこの明細書を公衆の閲覧のために公開した文書に対して注意が向けられ、全てのそのような文書の内容が、参照として本明細書に組み入れられる。   Attention is directed to all documents filed at the same time or prior to this specification in connection with this application, and to documents published for public viewing of this specification, and the contents of all such documents are , Incorporated herein by reference.

本明細書(任意の添付の特許請求の範囲、要約、及び図面を含む)で開示される全ての特徴、及び/又はそのように開示された任意の方法又はプロセスの全てのステップは、そのような特徴及び/又はステップの少なくともいくつかが相互に排他的である組み合わせを除いて、任意の組み合わせで合成され得る。   All features disclosed in this specification (including any appended claims, abstract, and drawings) and / or all steps of any method or process so disclosed are Can be synthesized in any combination, except combinations where at least some of the features and / or steps are mutually exclusive.

本明細書(任意の添付の特許請求の範囲、要約、及び図面を含む)において開示された各特徴は、明示的に別の方法で述べられていない限り、同じ、均等な、又は同様の目的で扱う別の特徴により置き換えられ得る。従って、明示的に別の方法で述べられていない限り、開示された各特長は、等価な、又は類似の特徴の一般的なシリーズの一つの例に過ぎない。   Each feature disclosed in this specification (including any appended claims, abstract, and drawings) is intended to have the same, equivalent, or similar purpose unless explicitly stated otherwise. Can be replaced by another feature treated in. Thus, unless expressly stated otherwise, each feature disclosed is one example only of a generic series of equivalent or similar features.

本発明は、前述の実施形態の詳細に制限されない。本発明は、本明細書(任意の添付の特許請求の範囲、要約、及び図面を含む)において開示された特徴の、任意の新規なもの、又は任意の新規な組み合わせ、又は、そのように開示された任意の方法又はプロセスのステップの任意の新規なもの、又は任意の新規な組み合わせにまで及ぶ。   The present invention is not limited to the details of the foregoing embodiments. The present invention is directed to any novel or any novel combination of features disclosed herein (including any appended claims, abstract and drawings), or any such novel combination. It extends to any novel or any novel combination of any method or process steps that have been made.

Claims (20)

コンピュータ装置であって、
ターゲット・プロセッサと、
メモリと
を備えており、
前記メモリは、
前記ターゲット・プロセッサ上で実行されるターゲット・オペレーティング・システムと、
前記ターゲット・オペレーティング・システム上で実行するトランスレータであって、関数リンクテーブルを保持している前記トランスレータと
を記憶しており、
前記トランスレータは、前記コンピュータ装置に、サブジェクト・コードを前記ターゲット・プロセッサで実行されるターゲット・コードへ動的に変換することを実現させ、前記サブジェクト・コードは当該サブジェクト・コードにおいて中間制御構造である手続きリンクテーブルを介してサブジェクト・リンカー・コードへサブジェクト制御フローを渡すように構成された、一つ又は複数の動的にリンクされたサブジェクト関数呼び出しを含み、
前記トランスレータは、前記コンピュータ装置に、
前記サブジェクト・コードの動的にリンクされたサブジェクト関数呼び出しに関連付けられた手続きリンクテーブルに対する修正を検出すること、
前記サブジェクト・コードにおいて、前記動的にリンクされた関数呼び出しを識別し、当該識別された動的にリンクされた関数呼び出しを、前記中間制御構造に対応するターゲット・コードを生成することなしに当該中間制御構造に対応する前記ターゲット・コードでない対応する関数を実行するコードに関連付けること、
前記修正の検出に応じて、前記関数リンクテーブルに、前記動的にリンクされた関数呼び出しに対応する識別子及び前記動的にリンクされた関数呼び出しを実行するコードの位置を格納すること
を実現させる、前記コンピュータ装置。
A computer device,
A target processor;
Memory and
The memory is
A target operating system running on the target processor;
A translator executing on the target operating system, the translator holding a function link table;
The translator causes the computer device to dynamically convert subject code into target code executed by the target processor, the subject code being an intermediate control structure in the subject code Including one or more dynamically linked subject function calls configured to pass subject control flow to the subject linker code via a procedure linkage table;
The translator is connected to the computer device.
Detecting a modification to a procedure linkage table associated with a dynamically linked subject function call in the subject code;
Identifying the dynamically linked function call in the subject code, and generating the identified dynamically linked function call without generating target code corresponding to the intermediate control structure. Associating with code executing a corresponding function that is not the target code corresponding to an intermediate control structure;
In response to the detection of the modification, the function link table stores an identifier corresponding to the dynamically linked function call and a position of code for executing the dynamically linked function call. The computer device.
前記トランスレータは、前記コンピュータ装置に、前記サブジェクト・コードにおいて、動的にリンクされたサブジェクト関数呼び出しを識別し、かつ前記サブジェクト・コードの最初の変換における前記動的にリンクされた関数呼び出しに関するリンク情報を収集し、かつ前記サブジェクト・コードの後続の変換において前記収集された情報を使用することを実現させる、請求項1に記載のコンピュータ装置。  The translator identifies dynamically linked subject function calls in the subject code to the computing device, and link information regarding the dynamically linked function calls in a first transformation of the subject code And implementing the use of the collected information in a subsequent conversion of the subject code. 前記トランスレータは、前記コンピュータ装置に、後続の変換において前記収集された情報を用いて、前記識別された関数呼び出しから、前記対応する関数を実行する前記コードへ制御フローを受け渡すことを実現させる、請求項2に記載のコンピュータ装置。  The translator enables the computing device to pass control flow from the identified function call to the code executing the corresponding function using the collected information in a subsequent transformation; The computer apparatus according to claim 2. 前記トランスレータは、前記コンピュータ装置に、識別された関数呼び出しに対する識別子の形式で、前記トランスレータにアクセス可能な関数リンクテーブルにおいて、前記識別された関数呼び出しに関する情報を格納することを実現させ、かつ前記関数リンクテーブルにおいて、前記識別された関数を実行するコードの位置を格納することを実現させる、請求項1に記載のコンピュータ装置。  The translator causes the computer device to store information about the identified function call in a function link table accessible to the translator in the form of an identifier for the identified function call; and The computer apparatus according to claim 1, wherein storage of a position of code for executing the identified function is realized in a link table. 前記トランスレータは、前記コンピュータ装置に、各識別された関数に対応する入力に対する前記関数リンクテーブルを照合することを実現させる、前記関数リンクテーブルが前記識別された関数に対応する入力を含む場合、前記関数リンクテーブルに格納される前記情報を用いて、前記対応する関数を実行するコードに、前記関数呼び出しを関連付けることを実現させる、請求項4に記載のコンピュータ装置。  The translator enables the computing device to collate the function link table against an input corresponding to each identified function, wherein the function link table includes an input corresponding to the identified function; The computer apparatus according to claim 4, wherein the information stored in the function link table is used to realize associating the function call with a code that executes the corresponding function. 前記トランスレータは、前記コンピュータ装置に、サブジェクト・リンカー・コードの動作を監視するか、又は特有のサブジェクト・コード命令シーケンスのキャッシュフラッシュ命令を検出することにより、前記関数呼び出しに関するリンク情報を収集することを実現させる、請求項2に記載のコンピュータ装置。  The translator collects link information about the function call by monitoring the operation of the subject linker code or detecting a cache flush instruction of a specific subject code instruction sequence. The computer apparatus according to claim 2 to be realized. 前記トランスレータは、前記コンピュータ装置に、前記対応する関数を実行するコードに関連付けることにおいて、前記動的にリンクされた関数呼び出しと、前記関数を実行する前記コードとの間の直接リンクを設定することを実現させる、請求項1に記載のコンピュータ装置。  The translator establishes a direct link between the dynamically linked function call and the code executing the function in the computer device in association with the code executing the corresponding function. The computer apparatus according to claim 1, wherein: 前記トランスレータは、前記コンピュータ装置に、前記関数リンクテーブルにおいて、前記識別された関数を実行するネイティブ・コードの位置、前記識別された関数を実行する事前に変換されたターゲット・コードの位置、及び前記トランスレータに既知の最適化された中間表現の部分の位置であって、当該部分から、ターゲット・コードが生成されて前記識別された関数を実行することが可能である、前記中間表現の部分の位置のうちの一つ又は複数を格納することを実現させる、請求項4に記載のコンピュータ装置。  The translator causes the computing device to place, in the function linkage table, a location of native code that executes the identified function, a location of pre-transformed target code that executes the identified function, and the The location of the optimized intermediate representation part known to the translator from which the target code can be generated to execute the identified function The computer apparatus according to claim 4, wherein storage of one or more of the above is realized. 前記トランスレータは、前記コンピュータ装置に、関数に関連した動的にリンクされた関数呼び出しを識別し、かつ前記動的にリンクされた関数呼び出しを、前記対応する関数を実行するコードに置換することを実現させる、請求項1に記載のコンピュータ装置。  The translator identifies to the computing device a dynamically linked function call associated with a function, and replaces the dynamically linked function call with code that performs the corresponding function. The computer apparatus according to claim 1, which is realized. 前記トランスレータは、前記コンピュータ装置に、前記サブジェクト・コードの手続きリンクテーブル(PLT)を介してサブジェクト・リンカー・コードへサブジェクト制御フローを渡すように構成された、一つ又は複数の動的にリンクされたサブジェクト関数呼び出しを含むサブジェクト・コードを受信し、前記受信されたサブジェクト・コードにおいて、前記動的にリンクされた関数呼び出しを識別し、かつ前記動的にリンクされた関数呼び出しを、前記PLTに対応するターゲット・コードを生成することなしに当該PLTに対応する前記ターゲット・コードでない前記対応する関数を実行するコードに関連付けることを実現させる、請求項1に記載のコンピュータ装置。  The translator is one or more dynamically linked to the computing device configured to pass a subject control flow to the subject linker code via the subject code procedure linkage table (PLT). A subject code including a subject function call, identifying the dynamically linked function call in the received subject code, and sending the dynamically linked function call to the PLT. The computer apparatus according to claim 1, which realizes associating with the code that executes the corresponding function that is not the target code corresponding to the PLT without generating the corresponding target code. サブジェクト・コードをターゲット・プロセッサ上で実行するターゲット・コードに動的に変換する方法であって、前記サブジェクト・コードは当該サブジェクト・コードにおいて中間制御構造を介してサブジェクト・リンカー・コードへサブジェクト制御フローを渡すように構成された、一つ又は複数の動的にリンクされたサブジェクト関数呼び出しを含み、コンピュータが、
前記サブジェクト・コードの動的にリンクされたサブジェクト関数呼び出しに関連付けられた手続きリンクテーブルに対する修正を検出するステップと、
前記ターゲット・プロセッサにおいて実行するターゲット・コードを生成するステップであって、前記ターゲット・プロセッサにおいて、前記動的にリンクされた関数呼び出しは、前記中間制御構造に対応するターゲット・コードを生成することなしに当該中間制御構造に対応する前記ターゲット・コードでない前記対応する関数を実行するコードに関連付けられる、前記生成するステップと、
前記修正の検出に応じて、前記ターゲット・オペレーティング・システム上で実行するトランスレータに保持された関数リンクテーブルに、前記動的にリンクされた関数呼び出しに対応する識別子及び前記動的にリンクされた関数呼び出しを実行するコードの位置を格納するステップと、
を実行することを含む、前記方法。
A method of dynamically transforming subject code into target code for execution on a target processor, wherein the subject code is subject control flow to subject linker code via an intermediate control structure in the subject code Including one or more dynamically linked subject function calls configured to pass
Detecting a modification to a procedure linkage table associated with a dynamically linked subject function call of the subject code;
Generating target code for execution in the target processor, wherein the dynamically linked function call does not generate target code corresponding to the intermediate control structure in the target processor; Said generating step associated with code that executes said corresponding function that is not said target code corresponding to said intermediate control structure;
In response to detection of the modification, an identifier corresponding to the dynamically linked function call and a dynamically linked function in a function link table held in a translator executing on the target operating system Storing the location of the code that performs the call;
Performing the method.
前記サブジェクト・コードの最初の変換において、前記識別された動的にリンクされた関数呼び出しに関するリンク情報が、前記サブジェクト・コードの後続の変換における使用のために収集される、請求項11に記載の方法。In the first conversion of the subject code, link information relating to the identified dynamically linked function call, the is collected for use in the subsequent conversion of the subject code, according to claim 11 Method. 後続の変換において、最初の変換において収集された前記情報は、前記識別された関数呼び出しから、前記対応する関数を実行する前記コードへ、制御フローを受け渡すために用いられる、請求項12に記載の方法。In a subsequent conversion, the information collected in the first conversion from the identified function call to the code that performs the corresponding function, is used to pass control flow, according to claim 12 the method of. 前記コンピュータが、
関数リンクテーブル中に、前記識別された関数呼び出しに関する情報を格納するステップと、
識別された関数の各々に対応する入力に対する前記関数リンクテーブルを照合すること、及び前記関数リンクテーブルが前記識別された関数と対応する入力を含む場合、前記関数リンクテーブルに格納された前記情報を用いて前記対応する関数を実行するコードに前記関数呼び出しを関連付けるステップと
を実行することを含む、請求項11に記載の方法。
The computer is
Storing information about the identified function call in a function link table;
Collating the function link table for an input corresponding to each of the identified functions, and if the function link table includes an input corresponding to the identified function, the information stored in the function link table is using comprising performing the step of associating the function call to the code that performs the corresponding functions, method of claim 11.
前記ターゲット・コードを生成するステップは、前記ターゲット・コードにおいて、前記動的にリンクされた関数呼び出しと、前記関数を実行する前記コードとの間に直接リンクを設定するステップを含む、請求項11に記載の方法。The step of generating the target code in the target code, including the dynamic linked function calls, the step of setting a direct link between the code for performing the function, according to claim 11 The method described in 1. 前記コンピュータが、
前記関数リンクテーブル中に、前記識別された関数を実行するネイティブ・コードの位置、前記識別された関数を実行する事前に変換されたターゲット・コードの位置、最適化された中間表現の部分の位置であって、当該部分から、ターゲット・コードが生成されて前記識別された関数を実行することが可能である、前記最適化された中間表現の部分の位置、及びデリファレンスされる変数を含むグループから選択された一つ又は複数を格納するステップ
を実行することを含み、
前記デリファレンスされる変数は、前記識別された関数を実行するサブジェクト・コード、前記識別された関数を実行するネイティブ・コード、前記識別された関数を実行する事前に変換されたターゲット・コード、前記トランスレータに既知の最適化された中間表現の部分であって、当該部分からターゲット・コードを生成して前記識別された関数を実行することが可能である、前記トランスレータに既知の最適化された中間表現の部分のうちの一つの位置に関連する、
請求項14に記載の方法。
The computer is
In the function link table, the position of native code that executes the identified function, the position of the pre-transformed target code that executes the identified function, and the position of the portion of the optimized intermediate representation A group including the location of the optimized intermediate representation portion from which the target code is generated and the identified function can be executed from the portion, and a dereferenced variable Performing the step of storing one or more selected from
The dereferenced variables include subject code that executes the identified function, native code that executes the identified function, pre-transformed target code that executes the identified function, A portion of an optimized intermediate representation known to the translator, the optimized intermediate known to the translator capable of generating target code from the portion and executing the identified function Related to the position of one of the parts of the representation,
The method according to claim 14 .
前記コンピュータが、
関数に関連した動的にリンクされる関数呼び出しを識別するステップと、
前記動的にリンクされた関数呼び出しを、前記対応する関数を実行するコードに置換するステップと
を実行することを含む、請求項12に記載の方法。
The computer is
Identifying dynamically linked function calls associated with the function;
The method of claim 12 , comprising: replacing the dynamically linked function call with code that executes the corresponding function.
前記コンピュータが、
前記サブジェクト・コードの手続きリンクテーブル(PLT)を介してサブジェクト・リンカー・コードへサブジェクト制御フローを渡すように構成された、一つ又は複数の動的にリンクされたサブジェクト関数呼び出しを受信するステップと、
前記サブジェクト・コードにおいて、前記動的にリンクされた関数呼び出しを識別するステップと、
前記動的にリンクされた関数呼び出しを、前記PLTに対応するターゲット・コードを生成することなしに当該PLTに対応する前記ターゲット・コードでない前記対応する関数を実行するコードと関連付けるステップと
を実行することを含む、請求項12に記載の方法。
The computer is
Receiving one or more dynamically linked subject function calls configured to pass a subject control flow to the subject linker code via a procedure link table (PLT) of the subject code; ,
Identifying the dynamically linked function call in the subject code;
Associating the dynamically linked function call with code that executes the corresponding function that is not the target code corresponding to the PLT without generating the target code corresponding to the PLT; The method of claim 12 , comprising:
ターゲット・プロセッサにおいて実行されるプログラムコード変換のためのコンピュータ・プログラムであって、コンピュータに、請求項1118のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。19. A computer program for program code conversion executed in a target processor, wherein the computer program causes each step of the method according to any one of claims 11 to 18 to be executed. サブジェクト・コードをターゲット・プロセッサ上で実行するターゲット・コードへ動的に変換するように構成されたコード変換装置であって、前記サブジェクト・コードは、当該サブジェクト・コードにおいて中間制御構造を介してサブジェクト・リンカー・コードへサブジェクト制御フローを渡すように構成された、一つ又は複数の動的にリンクされたサブジェクト関数呼び出しを含み、前記コード変換装置は、
前記サブジェクト・コードの動的にリンクされたサブジェクト関数呼び出しに関連付けられた手続きリンクテーブルに対する修正を検出すること、
前記ターゲット・プロセッサ上で実行するターゲット・コードを生成することであって、前記識別された動的にリンクされた関数呼び出しは、前記中間制御構造に対応するターゲット・コードを生成することなしに当該中間制御構造に対応する前記ターゲット・コードでない対応する関数を実行するコードに関連付けられる、前記生成すること、
前記修正の検出に応じて、前記関数リンクテーブルに、前記動的にリンクされた関数呼び出しに対応する識別子及び前記動的にリンクされた関数呼び出しを実行するコードの位置を格納すること
を行うように構成されている、前記コード変換装置。
A code conversion device configured to dynamically convert a subject code into a target code to be executed on a target processor, the subject code being subject to the subject code via an intermediate control structure Including one or more dynamically linked subject function calls configured to pass a subject control flow to the linker code, the code translator comprising:
Detecting a modification to a procedure linkage table associated with a dynamically linked subject function call in the subject code;
Generating target code for execution on the target processor, wherein the identified dynamically linked function call is generated without generating target code corresponding to the intermediate control structure; The generating associated with code executing a corresponding function that is not the target code corresponding to an intermediate control structure;
In response to detection of the modification, the function link table stores an identifier corresponding to the dynamically linked function call and a position of code that executes the dynamically linked function call. The code conversion device configured as described above.
JP2009529783A 2006-10-02 2007-10-01 Method and apparatus for making dynamically linked function calls for program code conversion Active JP5128602B2 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB0619389A GB2442495B (en) 2006-10-02 2006-10-02 Method and apparatus for handling dynamically linked function cells with respect to program code conversion
GB0619389.0 2006-10-02
US85405406P 2006-10-24 2006-10-24
US60/854,054 2006-10-24
PCT/GB2007/050600 WO2008041028A1 (en) 2006-10-02 2007-10-01 Method and apparatus for handling dynamically linked function calls with respect to program code conversion

Publications (3)

Publication Number Publication Date
JP2010506252A JP2010506252A (en) 2010-02-25
JP2010506252A5 JP2010506252A5 (en) 2012-07-12
JP5128602B2 true JP5128602B2 (en) 2013-01-23

Family

ID=41295846

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009529783A Active JP5128602B2 (en) 2006-10-02 2007-10-01 Method and apparatus for making dynamically linked function calls for program code conversion

Country Status (2)

Country Link
JP (1) JP5128602B2 (en)
KR (1) KR101308781B1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8752008B2 (en) * 2009-09-02 2014-06-10 Advanced Micro Devices, Inc. Lightweight service based dynamic binary rewriter framework
US8464230B2 (en) * 2010-04-13 2013-06-11 Intel Corporation Methods and systems to implement non-ABI conforming features across unseen interfaces
JP5976917B2 (en) * 2012-03-22 2016-08-24 インテル コーポレイション Nest structured emulation and dynamic linking environment
US10445119B2 (en) * 2017-06-30 2019-10-15 Intel Corporation Software reconfigurable mobile devices and methods
CN113986343B (en) * 2021-10-22 2023-11-21 上海太美数字科技有限公司 Program module acquisition method, program module acquisition device, computer equipment and storage medium

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59119447A (en) * 1982-12-27 1984-07-10 Fujitsu Ltd Dynamic linking method of program
US5930495A (en) * 1997-01-13 1999-07-27 International Business Machines Corporation Method and system for processing a first instruction in a first processing environment in response to intiating processing of a second instruction in a emulation environment
US5903758A (en) * 1997-02-24 1999-05-11 Sun Microsystems, Inc. Method and apparatus for auditing dynamically linked procedure calls
US6934943B2 (en) * 2001-10-18 2005-08-23 Hewlett-Packard Development Company Optimization of control transfers to dynamically loaded modules
US20030088860A1 (en) * 2001-11-02 2003-05-08 Fu-Hwa Wang Compiler annotation for binary translation tools
US7434209B2 (en) * 2003-07-15 2008-10-07 Transitive Limited Method and apparatus for performing native binding to execute native code
KR101244063B1 (en) * 2005-03-11 2013-03-19 인터내셔널 비지네스 머신즈 코포레이션 Execution control during program code conversion

Also Published As

Publication number Publication date
JP2010506252A (en) 2010-02-25
KR101308781B1 (en) 2013-09-17
KR20090095556A (en) 2009-09-09

Similar Documents

Publication Publication Date Title
US9043816B2 (en) Handling dynamically linked function calls with respect to program code conversion
JP4931583B2 (en) Method and apparatus for performing native binding
JP5039031B2 (en) Method and apparatus for executing native code and target code in combination during program code conversion
US7536682B2 (en) Method and apparatus for performing interpreter optimizations during program code conversion
US7543284B2 (en) Partial dead code elimination optimizations for program code conversion
US6484188B1 (en) Optimization of garbage collection code in the context of raw native interface function calls in the java programming language
AU774467B2 (en) Automatic stub/adapter generator
US20040255279A1 (en) Block translation optimizations for program code conversation
JP5077605B2 (en) Apparatus and method for processing exception signals in a computer system
JP2002527815A (en) Program code conversion method
JP2010530996A (en) Computer system, method, and computer-readable recording medium for converting program code
JP5128602B2 (en) Method and apparatus for making dynamically linked function calls for program code conversion
JP2010506250A (en) Computer system and method for adapting a computer system to support a register window architecture
JP2010506250A5 (en)
US20040221279A1 (en) Method and apparatus for performing lazy byteswapping optimizations during program code conversion
JP2010506252A5 (en)
US8286144B2 (en) Administering a process filesystem with respect to program code conversion
WO2006131695A1 (en) Method and apparatus for combined execution of native code and target code during program code conversion
GB2400938A (en) Lazy byteswapping optimizations during program code conversion

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20091204

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20091204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20091208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120213

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120521

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20120521

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120912

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120912

TRDD Decision of grant or rejection written
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121012

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20121012

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121012

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: 20121031

R150 Certificate of patent or registration of utility model

Ref document number: 5128602

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: 20151109

Year of fee payment: 3