JP2012159936A - Target code prior conversion method and emulation method - Google Patents

Target code prior conversion method and emulation method Download PDF

Info

Publication number
JP2012159936A
JP2012159936A JP2011017989A JP2011017989A JP2012159936A JP 2012159936 A JP2012159936 A JP 2012159936A JP 2011017989 A JP2011017989 A JP 2011017989A JP 2011017989 A JP2011017989 A JP 2011017989A JP 2012159936 A JP2012159936 A JP 2012159936A
Authority
JP
Japan
Prior art keywords
memory
target code
instruction
dependency graph
register
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.)
Pending
Application number
JP2011017989A
Other languages
Japanese (ja)
Inventor
Yoshiteru Kageyama
佳輝 蔭山
Kazuhiro Kawagome
和宏 河込
Mamoru Watarido
守 渡戸
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.)
Toshiba Corp
Original Assignee
Toshiba 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
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011017989A priority Critical patent/JP2012159936A/en
Publication of JP2012159936A publication Critical patent/JP2012159936A/en
Pending legal-status Critical Current

Links

Images

Abstract

PROBLEM TO BE SOLVED: To provide a target code prior conversion method enabling efficient prior prediction of a jump destination address upon prior conversion.SOLUTION: A target code is divided into basic blocks, a command of the target code is parsed for each basic block, a dependency graph having a node and a side corresponding to the command and representing dependency relationship between a value to be loaded on a register and another register, an immediate value, or memory content is created when a read command from a register, a write command to a register, a read command from a memory, a write command to the memory, or an arithmetic logical command is detected, a memory reference table to be used upon a read/write access for the memory and associating memory read content or memory write content with an address value is created, the dependency graph and the memory reference table are linked, and a list is created with all address values having possibility of being a jump destination address being entry points upon prior conversion of a branch command.

Description

本発明の実施形態は、ターゲットコード事前変換方法及びエミュレーション方法に関する。   Embodiments described herein relate generally to a target code pre-conversion method and an emulation method.

社会システム事業を中心に、昔から利用しているソフトウェア資産を無修正で使用し続けたい、というニーズがある。ところが、ハードウェアの老朽化・生産終了に伴い、ソフトウェアを動かすハードウェアがなくなりつつある。また、ソフトウェア資産も顧客単位で機能がカスタマイズされる等の多様化のため、移植も難しい。
一方、仮想化技術を利用して、多くのアーキテクチャマシンをソフトウェアエミュレーションすることでソフトウェア資産を延命できる可能性がある。
There is a need to continue to use software assets that have been used for a long time without modification, mainly in the social systems business. However, with the aging of hardware and the end of production, hardware that runs software is disappearing. Also, software assets are difficult to port due to diversification, such as customization of functions on a customer basis.
On the other hand, there is a possibility that software assets can be extended by software emulation of many architecture machines using virtualization technology.

QEMUに代表される仮想化エミュレータは、ターゲットコードを実行させながらホストコードへ変換する(動的変換)するもので、リアルタイム性に乏しく、応答性能・起動時間の予測が困難であり、組み込み機器には向かない。   A virtualization emulator represented by QEMU converts target code into host code while executing it (dynamic conversion), has poor real-time performance, and is difficult to predict response performance and startup time. Is not suitable.

仮想化技術の高速化の一環として行われる静的事前変換・動的事前変換に関しては、提案がなされている。   Proposals have been made regarding static pre-translation and dynamic pre-conversion performed as part of the acceleration of virtualization technology.

例えば、マルチコア環境において、静的解析結果と動的解析結果を組み合わせて利用し、精度良く重要度の高いプログラムブロックの事前コンパイルを行い、プログラムを高速化することが提案されている(例えば、特許文献1参照。)。   For example, in a multi-core environment, it has been proposed to use a combination of static analysis results and dynamic analysis results, pre-compile program blocks of high importance with high accuracy, and speed up the program (for example, patents). Reference 1).

また、ターゲットコードの変換において、静的実行ないしは動的実行の分岐時の速度性能を高める提案がなされている(例えば、特許文献2参照。)。   Further, in target code conversion, proposals have been made to increase the speed performance at the time of branching of static execution or dynamic execution (see, for example, Patent Document 2).

しかしながら、応答性能・起動時間を安定させるため、ターゲットコード変換を事前に行う場合、以下の問題があった。 すなわち、ターゲットコードの動的変換が前提の現状の仮想マシンエミュレータでは、基本ブロックのエントリポイントが分からなくなることがある。 また、間接アドレス指定による分岐・サブルーチンコールやメモリ上に書き込まれた値を用いた分岐・サブルーチンコールでは、分岐発生時のジャンプ先アドレスの同定が困難なことがある。   However, when the target code conversion is performed in advance in order to stabilize the response performance / startup time, there are the following problems. That is, in the current virtual machine emulator on the premise of dynamic conversion of the target code, the entry point of the basic block may not be known. In addition, in branch / subroutine calls using indirect addressing and branch / subroutine calls using values written in memory, it may be difficult to identify the jump destination address when a branch occurs.

特開2007−334643号公報JP 2007-334643 A 特開2008−107913号公報JP 2008-107913 A

本発明が解決しようとする課題は、事前変換する際の飛び先アドレスの事前予測を効率的に行えるターゲットコード事前変換方法及びエミュレーション方法を提供することである。   The problem to be solved by the present invention is to provide a target code pre-conversion method and an emulation method that can efficiently perform a pre-prediction of a jump address when performing pre-conversion.

実施形態のターゲットコード事前変換方法は、前記ターゲットコードを、分岐命令もしくは分岐命令からの流入が起こらない命令群の最小単位である基本ブロックに分割し、前記基本ブロックごとに、前記ターゲットコードの命令を解析し、レジスタからの読み込み命令、レジスタへの書き込み命令、メモリからの読み込み命令、メモリへの書き込み命令および算術論理命令を検出した場合には、当該命令に対応するノードや辺とするとともに、あるレジスタにロードされる値の、他のレジスタや直値あるいはメモリ内容との依存関係を表現した依存グラフを作成し、メモリへの読み書きアクセスがあった際に利用され、メモリ読み込み内容及びメモリ書き込み内容とアドレス値とを対応づけるメモリ参照テーブルを作成し、前記依存グラフと前記メモリ参照テーブルを連携させ、分岐命令の事前変換に際し、飛び先アドレスとして可能性のある全てのアドレス値をエントリポイントとしてリスト化する。   In the target code pre-conversion method of the embodiment, the target code is divided into basic blocks that are the minimum units of a branch instruction or a group of instructions that do not flow in from a branch instruction, and the instructions of the target code are divided for each basic block. When a read instruction from a register, a write instruction to a register, a read instruction from a memory, a write instruction to a memory, and an arithmetic logic instruction are detected, the node and the edge corresponding to the instruction are detected. Creates a dependency graph that expresses the dependency of a value loaded into a register with another register, direct value, or memory contents, and is used when there is read / write access to the memory. Create a memory reference table that correlates the contents and address values, and the dependency graph The memory lookup table to cooperate, upon Pretranslation branch instruction, creates a list of all the address values that may as a jump address as an entry point.

本実施形態に係るターゲットコード事前変換方法が適用されるターゲットコード変換装置の構成例を示す図である。It is a figure which shows the structural example of the target code conversion apparatus with which the target code prior conversion method which concerns on this embodiment is applied. 依存グラフの作成を説明する図である。It is a figure explaining preparation of a dependence graph. 依存グラフの探索を説明する図である。It is a figure explaining search of a dependence graph. メモリへのアクセスがジャンプ先のアドレスの特定に影響する場合を説明する図である。It is a figure explaining the case where access to a memory influences specification of the address of a jump destination. メモリ参照テーブルの作成を説明する図である。It is a figure explaining creation of a memory reference table. 依存グラフとメモリ参照テーブルの連携について説明する図である。It is a figure explaining cooperation of a dependence graph and a memory reference table. 依存グラフとメモリ参照テーブルの連携について説明する図である。It is a figure explaining cooperation of a dependence graph and a memory reference table. 依存グラフとメモリ参照テーブルの連携について説明する図である。It is a figure explaining cooperation of a dependence graph and a memory reference table. 本実施形態に係るターゲットコード変換方法の一連の流れを模式化した図である。It is the figure which modeled a series of flows of the target code conversion method which concerns on this embodiment.

以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。   Hereinafter, an embodiment of the present invention will be described with reference to the drawings. In the drawings, the same portions are denoted by the same reference numerals, and redundant description is omitted.

(第1の実施形態)
まず、本実施形態で用いる主要な用語について説明する。
(First embodiment)
First, main terms used in the present embodiment will be described.

「QEMU」とは、異なるコンピュータアーキテクチャをソフトウェア的に模擬することができるエミュレータをいう。   “QEMU” refers to an emulator that can simulate different computer architectures in software.

「ターゲットコード」とは、QEMU上で動作させる、変換対象となるコードをいう。   The “target code” refers to a code to be converted that is operated on the QEMU.

「ホストコード」とは、QEMUが動作しているCPUにて解釈および実行ができるコードをいう。   “Host code” refers to code that can be interpreted and executed by the CPU on which QEMU is operating.

「基本ブロック」とは、仮想化環境上で動作させたいターゲットコードにおいて、分岐命令もしくは分岐命令からの流入が起こらない命令群の最小単位をいう。基本ブロックの開始点には、他のコードからジャンプすることができる。基本ブロックの終了点は、他のコードへのジャンプ命令あるいはジャンプの一つ前の命令である。   A “basic block” is a minimum unit of a branch instruction or an instruction group that does not flow in from a branch instruction in a target code to be operated in a virtual environment. You can jump from other code to the start of the basic block. The end point of the basic block is a jump instruction to another code or an instruction immediately before the jump.

「エントリポイント」とは、基本ブロックの実行を開始するアドレスをいう。分岐命令の飛び先はエントリポイントである。   “Entry point” refers to an address at which execution of a basic block is started. The jump destination of the branch instruction is an entry point.

本実施形態に係るターゲットコード事前変換方法は、分岐命令の事前変換に際し、飛び先アドレスとして可能性のある全てのアドレス値をエントリポイントとしてリスト化しておくものである。   In the target code pre-conversion method according to the present embodiment, all address values that can be jump destination addresses are listed as entry points when branch instructions are pre-translated.

図1は、本実施形態に係るターゲットコード事前変換方法が適用されるターゲットコード変換装置の構成例を示す図である。   FIG. 1 is a diagram illustrating a configuration example of a target code conversion apparatus to which the target code pre-conversion method according to the present embodiment is applied.

ターゲットコード変換装置100は、変換対象となるターゲットコードを読み込み、変換および実行するための装置である。ターゲットコード変換装置100は、ターゲットコード格納部200、ホストコード格納部300と接続している。ターゲットコード変換装置100は、例えば、ターゲットコードロード部10、エントリポイントロード部11、ターゲットコードパース部12、中間コード生成部13、基本ブロック分割部14、依存グラフ作成部15、中間コード格納部16、ホストコード生成部17、依存グラフ評価部18、メモリ参照テーブル読み込みアクセス登録部19、書き込み値評価部20、メモリ参照テーブル書き込みアクセス登録部21、依存グラフ再評価部22、依存グラフ格納部23、メモリ参照テーブル格納部24、エントリポイント確定部25、エントリポイント格納部26から構成されている。このうち、ターゲットコードロード部10、エントリポイントロード部11、ターゲットコードパース部12、中間コード生成部13、基本ブロック分割部14、依存グラフ作成部15、ホストコード生成部17、依存グラフ評価部18、メモリ参照テーブル読み込みアクセス登録部19、書き込み値評価部20、メモリ参照テーブル書き込みアクセス登録部21、依存グラフ再評価部22、エントリポイント確定部25の各部は、例えば各処理プログラムの形態として構築することができる。   The target code conversion device 100 is a device for reading, converting and executing a target code to be converted. The target code conversion apparatus 100 is connected to the target code storage unit 200 and the host code storage unit 300. The target code conversion apparatus 100 includes, for example, a target code load unit 10, an entry point load unit 11, a target code parse unit 12, an intermediate code generation unit 13, a basic block division unit 14, a dependency graph creation unit 15, and an intermediate code storage unit 16. , Host code generation unit 17, dependency graph evaluation unit 18, memory reference table read access registration unit 19, write value evaluation unit 20, memory reference table write access registration unit 21, dependency graph re-evaluation unit 22, dependency graph storage unit 23, It comprises a memory reference table storage unit 24, an entry point determination unit 25, and an entry point storage unit 26. Among these, the target code load unit 10, the entry point load unit 11, the target code parsing unit 12, the intermediate code generation unit 13, the basic block division unit 14, the dependency graph generation unit 15, the host code generation unit 17, and the dependency graph evaluation unit 18 The memory reference table read access registration unit 19, the write value evaluation unit 20, the memory reference table write access registration unit 21, the dependency graph reevaluation unit 22, and the entry point determination unit 25 are constructed in the form of, for example, each processing program. be able to.

まず、各部を簡潔に説明する。ターゲットコードロード部10は、ターゲットコードの実行形式イメージファイルをターゲットコード変換装置100に読み込み、メモリ上に展開するものである。   First, each part will be briefly described. The target code loading unit 10 reads an execution format image file of a target code into the target code conversion apparatus 100 and develops it on a memory.

エントリポイントロード部11は、ターゲットコード内で、次に変換対象となる基本ブロックの開始位置(エントリポイント)をロードする。エントリポイントがなくなるまで順次エントリポイントをロードする。   The entry point loading unit 11 loads the start position (entry point) of the basic block to be converted next in the target code. Load entry points sequentially until there are no more entry points.

ターゲットコードパース部12は、エントリポイントロード部11からロードしたエントリポイントから始まるターゲットコードを1命令ずつパース(構文解析などによりデータの集合体に変換)し、命令の意味を解析するものである。   The target code parsing unit 12 parses the target code starting from the entry point loaded from the entry point loading unit 11 one instruction at a time (converted into a data aggregate by syntax analysis or the like), and analyzes the meaning of the instruction.

中間コード生成部13は、ターゲットコードパース部12で解析された命令について、ターゲットコード変換装置100内部のみで通用するアーキテクチャ非依存のコード(中間コード)を生成するものである。   The intermediate code generation unit 13 generates an architecture-independent code (intermediate code) that can be used only within the target code conversion apparatus 100 for the instruction analyzed by the target code parsing unit 12.

基本ブロック分割部14は、ターゲットコードパース部12で解析しているターゲットコードについて、分岐命令や特殊レジスタ値の有無を確認し、基本ブロックに分割するものである。   The basic block dividing unit 14 checks the presence or absence of a branch instruction or a special register value for the target code analyzed by the target code parsing unit 12 and divides the target code into basic blocks.

依存グラフ作成部15は、ターゲットコードパース部12で解析された命令について、レジスタ/メモリのロード・ストア命令および算術論理命令が発見された際に、その命令1つに対応する依存グラフのノードや辺を作成するものである。依存グラフの詳細は、後述する。   When a register / memory load / store instruction and an arithmetic logic instruction are found for an instruction analyzed by the target code parsing unit 12, the dependency graph creating unit 15 selects a node of a dependency graph corresponding to one instruction, Create an edge. Details of the dependency graph will be described later.

中間コード格納部16は、中間コード生成部13で生成された中間コードを一時的に格納するものである。   The intermediate code storage unit 16 temporarily stores the intermediate code generated by the intermediate code generation unit 13.

ホストコード生成部17は、基本ブロック分割部14において分割されたターゲットコードに対応する中間コードについて、ホストコードに変換するものである。   The host code generator 17 converts the intermediate code corresponding to the target code divided by the basic block divider 14 into a host code.

依存グラフ評価部18は、依存グラフ作成部15において基本ブロック単位で生成された依存グラフについて、次にホストコードへの変換候補とするべきターゲットコードのエントリポイントを求めるために依存グラフのノードを探索するものである。   The dependency graph evaluation unit 18 searches the dependency graph generated by the dependency graph creation unit 15 in units of basic blocks in order to obtain the entry point of the target code that should be the next candidate for conversion to the host code. To do.

メモリ参照テーブル読み込みアクセス登録部19は、依存グラフ作成部15において、メモリからの読み込みアクセス(メモリからのロード)を発見した際に、メモリ参照テーブルへその読み込みおよび対応する依存グラフを登録するものである。メモリ参照テーブルは、メモリへの読み書きアクセス(メモリからのロード、ストア)があった際に利用される、メモリ読み込み・書き込み内容とアドレス値とを対応づけるテーブルである。   The memory reference table read access registration unit 19 registers the read and corresponding dependency graph in the memory reference table when the dependency graph creation unit 15 finds a read access from the memory (load from the memory). is there. The memory reference table is a table that correlates memory read / write contents and address values that are used when there is a read / write access (load / store from memory) to the memory.

書き込み値評価部20は、メモリ参照テーブルに書き込みアクセスとして登録された値について、読み込みアクセス側の依存グラフを評価するものである。   The write value evaluation unit 20 evaluates the dependency graph on the read access side for the values registered as write access in the memory reference table.

メモリ参照テーブル書き込みアクセス登録部21は、依存グラフ作成部15において、メモリへの書き込みアクセス(メモリへのストア命令)を発見した際に、メモリ参照テーブルへその書き込みを登録するものである。   The memory reference table write access registration unit 21 registers the write in the memory reference table when the dependency graph creation unit 15 finds a write access to the memory (store instruction to the memory).

依存グラフ再評価部22は、メモリ参照テーブル読み込みアクセス登録部19において、メモリ参照テーブルに登録した依存グラフを再評価するものである。   The dependency graph re-evaluation unit 22 re-evaluates the dependency graph registered in the memory reference table in the memory reference table read access registration unit 19.

依存グラフ格納部23は、依存グラフを格納するものである。   The dependency graph storage unit 23 stores a dependency graph.

メモリ参照テーブル格納部24は、メモリ参照テーブルを格納するものである。   The memory reference table storage unit 24 stores a memory reference table.

エントリポイント確定部25は、依存グラフ評価部18、依存グラフ再評価部22、書き込み値評価部20において候補値として確定したジャンプ先アドレスをエントリポイントとして確定するものである。   The entry point determination unit 25 determines a jump destination address determined as a candidate value by the dependency graph evaluation unit 18, the dependency graph re-evaluation unit 22, and the write value evaluation unit 20 as an entry point.

エントリポイント格納部26は、確定したエントリポイントを格納するものである。   The entry point storage unit 26 stores a confirmed entry point.

次に、以上のように構成されたターゲットコード変換装置100によるターゲットコード変換方法について説明する。本実施形態に係るターゲットコード事前変換方法は、(1)依存グラフの作成 、(2)メモリ参照テーブルの作成 、(3)依存グラフとメモリ参照テーブルの連携の3つの処理を行うことにより、効率的な事前変換の飛び先アドレス推定と飛び先を事前に蓄えておくものである。具体的には、レジスタへのロードを伴う処理,メモリのロード命令,ストア命令を監視し、登録するデータ構造を新規に作成することで、対象レジスタ又はメモリに書き込まれた可能性のある値を全て取り出せるようにする。   Next, a target code conversion method performed by the target code conversion apparatus 100 configured as described above will be described. The target code pre-conversion method according to this embodiment performs three processes: (1) creation of a dependency graph, (2) creation of a memory reference table, and (3) cooperation between the dependency graph and the memory reference table. The destination address estimation and destination of the preliminary conversion in advance are stored in advance. Specifically, processing that involves loading into registers, memory load instructions, and store instructions are monitored, and by creating a new data structure to register, values that may have been written to the target register or memory Be able to remove all.

(依存グラフの作成)
次に、依存グラフの作成について説明する。図2は、依存グラフの作成を説明する図である。ここで、依存グラフとは、あるレジスタにロードされる値の、他のレジスタや直値あるいはメモリ内容との依存関係を表現したグラフをいう。また、依存関係とは、実行順序により、実行結果が変化する可能性が有る関係をいう。依存グラフは、基本ブロック一つにつき、 一つ作成する。基本ブロックは、分岐命令や特殊レジスタ値の有無によって基本ブロック分割部14で分割される。依存グラフは、レジスタへの値のロードが発生するたび、すなわち、ロード命令,ストア命令,算術論理命令の度にノードを作成する。依存グラフでは、値のロードに依存するレジスタ及び直値のノードに向けての有向辺を作成していく。
(Create dependency graph)
Next, creation of a dependency graph will be described. FIG. 2 is a diagram for explaining the creation of the dependency graph. Here, the dependency graph refers to a graph expressing a dependency relationship between a value loaded into a certain register and another register, a direct value, or memory contents. The dependency relationship is a relationship in which the execution result may change depending on the execution order. A dependency graph is created for each basic block. The basic block is divided by the basic block dividing unit 14 depending on the presence or absence of a branch instruction or a special register value. The dependency graph creates a node every time a value is loaded into a register, that is, every time a load instruction, a store instruction, or an arithmetic logic instruction is executed. In the dependency graph, a directed edge toward a register and a direct node depending on loading of values is created.

図2では、ターゲットコードが、
mov ax,0x4000
mov cx,2
add ax,cx
の場合を示している。
In FIG. 2, the target code is
mov ax, 0x4000
mov cx, 2
add ax, cx
Shows the case.

まず、mov命令として、axレジスタに、直値「0x4000」を持ってくるので、axレジスタのノードから直値を管理する直値リストのノードに向かう有向辺が描かれている。すなわち、矢印(→)はaxレジスタが直値「0x4000」に依存している関係を表わしている。同様に、mov命令として、cxレジスタに、直値「2」を持ってくるので、cxレジスタのノードから直値を管理する直値リストのノードに向かう有向辺が描かれている。   First, since the direct value “0x4000” is brought to the ax register as the mov instruction, a directed side from the node of the ax register to the node of the direct value list for managing the direct value is drawn. That is, the arrow (→) represents the relationship in which the ax register depends on the direct value “0x4000”. Similarly, since the direct value “2” is brought to the cx register as the mov instruction, the directed side from the node of the cx register to the node of the direct value list managing the direct value is drawn.

次に、add命令として、axレジスタの値とcxレジスタの値の和を、新たなaxレジスタの値とするので、新たなaxレジスタのノードから、前のaxレジスタのノード及びcxレジスタのノードに向かう有向辺が描かれている。すなわち、新たなaxレジスタは、前のaxレジスタの値及びcxレジスタの値に依存している関係が表わされている。   Next, as the add instruction, the sum of the value of the ax register and the value of the cx register is used as a new value of the ax register. Therefore, from the node of the new ax register to the node of the previous ax register and the node of the cx register The directed side to be drawn is drawn. That is, the new ax register represents a relationship that depends on the value of the previous ax register and the value of the cx register.

グラフノード管理リストは、各レジスタが依存グラフ作成過程でどのような値をとっていったかを把握するもので、各レジスタのグループを管理するリストである。グラフノード管理リストによれば、最新のレジスタの値が直ちにわかる。   The graph node management list is a list for managing a group of each register, for grasping what value each register took in the dependency graph creation process. According to the graph node management list, the latest register value is immediately known.

依存グラフの作成に関して、ノードあるいは辺を作成する命令は、ロード命令,ストア命令(mov命令), 算術・論理演算命令(add命令,sub命令,and命令,or命令, xor命令など)である。一方、ノードあるいは辺を作成しない命令は、レジスタ値を利用する側の命令、もしくは分岐命令そのもので、条件判定文(cmp命令, jcc命令)やret命令, iret命令,hlt命令などの制御命令である。これは、制御命令の場合、戻りアドレスは呼び出し側が知っているからである。
(依存グラフの探索)
次に、依存グラフの探索によるジャンプ先アドレスの特定について説明する。図3は、依存グラフの探索を説明する図である。
Regarding the creation of the dependency graph, instructions for creating nodes or edges are load instructions, store instructions (mov instructions), and arithmetic / logical operation instructions (add instruction, sub instruction, and instruction, or instruction, xor instruction, etc.). On the other hand, an instruction that does not create a node or an edge is an instruction that uses a register value, or a branch instruction itself, and is a control instruction such as a condition determination statement (cmp instruction, jcc instruction), a ret instruction, an iret instruction, or an hlt instruction. is there. This is because in the case of a control instruction, the return address is known by the caller.
(Search dependency graph)
Next, the specification of the jump destination address by searching the dependency graph will be described. FIG. 3 is a diagram for explaining the search for the dependency graph.

ジャンプ先のアドレスを特定するには、基本ブロック内で、間接アドレス指定が出現したとき、そのアドレス指定に使用するレジスタについての最新のノードに注目する。すなわち、注目したノードを依存グラフの始点として、有向グラフをたどっていく。ターゲットコード上では、命令を逆走していくことになる。探索は、深さ優先探索をしていき、最終的に残った値をジャンプ先アドレスとする。
図3に示す例では、ターゲットコードが、
jmp ax
の場合を示している。
To specify the jump destination address, when indirect addressing appears in the basic block, attention is paid to the latest node for the register used for the addressing. That is, the directed graph is traced with the focused node as the starting point of the dependency graph. On the target code, instructions will run backwards. In the search, a depth-first search is performed, and a finally remaining value is set as a jump destination address.
In the example shown in FIG. 3, the target code is
jmp ax
Shows the case.

最新のaxレジスタは、次のジャンプ先アドレスを決定するレジスタであるが、依存グラフから前のaxレジスタ、cxレジスタに依存していることがわかる。さらに、前のaxレジスタ値は、有向グラフをたどっていくことにより、その値を特定することができる。ここの例では、直値0x4000である。同様に、cxレジスタ値は、有向グラフをたどっていくことにより、その値を特定することができる。ここの例では、直値2である。よって、最新のaxレジスタ値は、0x4002と特定することができる。   The latest ax register is a register that determines the next jump destination address, but it can be seen from the dependency graph that it depends on the previous ax register and cx register. Further, the previous ax register value can be specified by following the directed graph. In this example, the direct value is 0x4000. Similarly, the value of the cx register value can be specified by following the directed graph. In this example, the direct value is 2. Therefore, the latest ax register value can be specified as 0x4002.

このようにして、依存グラフを探索することにより、次のジャンプ先のアドレスが特定するが、依存グラフだけでは、次のジャンプ先のアドレスが特定できないケースがある。メモリへのアクセスがジャンプ先のアドレスの特定に影響する場合である。図4は、メモリへのアクセスがジャンプ先のアドレスの特定に影響する場合を説明する図である。   By searching the dependency graph in this way, the next jump destination address is specified, but there are cases where the next jump destination address cannot be specified only by the dependency graph. This is a case where access to the memory affects the specification of the jump destination address. FIG. 4 is a diagram illustrating a case where access to the memory affects the specification of the jump destination address.

図4では、ターゲットコードが、
mov ax,[0x4000]
mov cx,2
add ax,cx
jmp ax
の場合を示している。
In FIG. 4, the target code is
mov ax, [0x4000]
mov cx, 2
add ax, cx
jmp ax
Shows the case.

図4に示す例では、
最新のaxレジスタは、次のジャンプ先アドレスを決定するレジスタ(始点)で、依存グラフから前のaxレジスタ、cxレジスタに依存していることがわかる。cxレジスタ値は、有向グラフをたどっていくことにより、その値を特定することができる。ここの例では、直値2として確定する。一方、前のaxレジスタ値は、有向グラフをたどっていくことにより、その値を特定したいが、直値として管理されているのは、アドレス値としての[0x4000]である。したがって、依存グラフの探索だけでは、次のジャンプ先のアドレスを確定することができない。
In the example shown in FIG.
The latest ax register is a register (start point) for determining the next jump destination address, and it can be seen from the dependency graph that it depends on the previous ax register and cx register. The value of the cx register value can be specified by following the directed graph. In this example, the direct value 2 is determined. On the other hand, the previous ax register value is specified by tracing the directed graph, but it is [0x4000] as the address value that is managed as a direct value. Therefore, the address of the next jump destination cannot be determined only by searching the dependency graph.

(メモリ参照テーブルの作成)
次に、メモリ参照テーブルの作成について説明する。図5は、メモリ参照テーブルの作成を説明する図である。
(Create memory reference table)
Next, creation of a memory reference table will be described. FIG. 5 is a diagram for explaining the creation of the memory reference table.

上述のように、メモリへのアクセスがジャンプ先のアドレスの特定に影響する場合には、メモリ参照テーブルを利用する。メモリ参照テーブルは、基本ブロック内で、メモリの参照(メモリへのアクセス)が行われた場合に、そのことを記録するために作成されるものである。具体的には、ターゲットコードパース部12において、依存グラフ作成中に次の命令セットを発見した場合、依存グラフ作成部15が作成する。   As described above, when the access to the memory affects the specification of the jump destination address, the memory reference table is used. The memory reference table is created in order to record when a memory reference (access to the memory) is performed in the basic block. Specifically, when the target code parsing unit 12 finds the next instruction set during the creation of the dependency graph, the dependency graph creation unit 15 creates it.

メモリからのロード命令 (例:mov ax, [0xXXXX])
メモリへのストア命令 (例:mov [0xXXXX] , ax)
メモリ参照テーブルは、ターゲットコードからメモリへの書き込みがあった場合には、メモリ書き込みリストにメモリへのアクセスを記録する。メモリ書き込みリストの要素としては、「書き込んだ値」と「データ長」である。図5は、メモリ書き込みリストに、「書き込んだ値」と「データ長」が1組となって、リストに加えられていくことを表わしている。同様に、ターゲットコードが行うメモリからの読み込みがあった場合には、メモリ読み込みリストにメモリへのアクセスを記録する。メモリ読み込みリストの要素としては、「データ長」と「依存グラフの始点及びターゲット頂点」である。図5は、メモリ読み込みリストに、「データ長」と「依存グラフの始点及びターゲット頂点」が1組となって、リストに加えられていくことを表わしている。
Load instruction from memory (example: mov ax, [0xXXXX])
Store instruction to memory (Example: mov [0xXXXX], ax)
When there is a write from the target code to the memory, the memory reference table records an access to the memory in the memory write list. The elements of the memory writing list are “written value” and “data length”. FIG. 5 shows that “written value” and “data length” are added to the memory writing list as one set. Similarly, when the target code is read from the memory, the access to the memory is recorded in the memory read list. The elements of the memory read list are “data length” and “start point and target vertex of dependency graph”. FIG. 5 shows that “data length” and “start point and target vertex of dependency graph” are added to the memory read list as one set.

図5に示す例では、メモリアドレスについては、ターゲットコードのアクセス先アドレスに従い、テーブル要素へポイントする、言わばページテーブルに似た構造でメモリアドレスを管理している。メモリアドレスを上位ビット,下位ビットと分けて、ターゲットコードが扱える最大データ長分は、同じテーブル要素となるようにするのが好適である。   In the example shown in FIG. 5, with respect to the memory address, the memory address is managed in a structure similar to a page table that points to a table element according to the access destination address of the target code. It is preferable that the memory address is divided into upper bits and lower bits so that the maximum data length that can be handled by the target code is the same table element.

(依存グラフとメモリ参照テーブルの連携)
次に、依存グラフとメモリ参照テーブルの連携について説明する。図6乃至図8は、依存グラフとメモリ参照テーブルの連携について説明する図である。図6では、メモリからの読み込みを伴うことが、パース時に判明した場合、依存グラフとメモリ参照テーブルの連携を行うことを説明している。メモリからの読み込みを伴う場合には、メモリ参照テーブルの読み込みリストに、データ長とともに、依存グラフの始点ノード及びターゲットノード(頂点)の組を、新規分として作成する。
(Linkage of dependency graph and memory reference table)
Next, cooperation between the dependency graph and the memory reference table will be described. 6 to 8 are diagrams for explaining the cooperation between the dependency graph and the memory reference table. FIG. 6 illustrates that the dependency graph and the memory reference table are linked when it is determined during parsing that reading from the memory is involved. When reading from the memory is accompanied, a pair of the start point node and the target node (vertex) of the dependency graph is created as a new part in the reading list of the memory reference table together with the data length.

図6では、メモリ参照テーブルにメモリアドレス値として[0x4000]を登録するとともに、[0x4000]に対応する要素として、メモリ参照テーブルのメモリ読み込みリストにデータ長、依存グラフの始点ノード及びターゲットノード(頂点)の組を、記録することを表わしている。係るメモリ参照テーブルへの記録をもって、一旦、依存グラフの評価は終了する。   In FIG. 6, [0x4000] is registered as a memory address value in the memory reference table, and the data length, the start node and the target node (vertex of the dependency graph) are displayed in the memory read list of the memory reference table as elements corresponding to [0x4000]. ) Represents recording. With the recording in the memory reference table, evaluation of the dependency graph is once completed.

図7では、メモリへの書き込みが、主に別の基本ブロック内の命令パース中に判明した場合、依存グラフとメモリ参照テーブルの連携を行うことを説明している。メモリへの書き込みを伴う場合には、メモリ参照テーブルの書き込みリストに、書き込んだ値及びデータ長の組を、新規分として作成する。読み込みリストの全要素を考慮しつつ、依存グラフを再度評価する。   FIG. 7 illustrates that the dependency graph and the memory reference table are linked when writing to the memory is found mainly during instruction parsing in another basic block. When writing to the memory is accompanied, a set of the written value and data length is created as a new part in the write list of the memory reference table. Re-evaluate the dependency graph, taking into account all elements of the read list.

図7に示す例では、ターゲットコードが、
mov ax,0x2000
mov [0x4000],ax
の場合、
メモリ参照テーブルにメモリアドレス値として[0x4000]を登録するとともに、[0x4000]に対応する要素として、メモリ参照テーブルのメモリ書き込みリストに、アドレス[0x4000]、値0x2000及びデータ長を、記録することを表わしている。
In the example shown in FIG. 7, the target code is
mov ax, 0x2000
mov [0x4000], ax
in the case of,
Register [0x4000] as the memory address value in the memory reference table, and record the address [0x4000], the value 0x2000, and the data length in the memory write list of the memory reference table as elements corresponding to [0x4000]. It represents.

図8に示す例では、ターゲットコードが、
mov ax,[0x4000]
mov cx,2
add ax,cx
jmp ax
の場合を示している。読み込みリストの全要素を考慮しつつ、ノードをたどることによって、依存グラフを再度評価する。
In the example shown in FIG. 8, the target code is
mov ax, [0x4000]
mov cx, 2
add ax, cx
jmp ax
Shows the case. Re-evaluate the dependency graph by following the nodes, taking into account all elements of the read list.

図8に示す例では、メモリアドレス値[0x4000]が未確定であったものが、メモリ書き込みリストに追加された値=0x2000であるとして確定する。したがって、始点ノードとして0x2002という結果が得られる。得られたジャンプ先アドレスは、新たなエントリポイントとして、エントリポイントリストに追加して記録される。   In the example illustrated in FIG. 8, the memory address value [0x4000] that has not been determined is determined as the value added to the memory write list = 0x2000. Therefore, a result of 0x2002 is obtained as the starting point node. The obtained jump destination address is recorded as a new entry point in addition to the entry point list.

図9は、本実施形態に係るターゲットコード変換方法の一連の流れを模式化した図である。まず、ターゲットコード格納部200から、ターゲットコードロード部10によってターゲットコードをロードする。続いて、エントリポイント格納部26から、エントリポイントロード部11によってエントリポイントをロードする。ターゲットコード変換の初期段階では、マシン毎に所定の初期アドレス値のみが、エントリポイント格納部26に格納されている。続いて、ターゲットコードパース部12によって、命令解釈される。次に、ターゲットコードは基本ブロック分割部14で、基本ブロックに分割される。分割後、中間コード生成部13での中間コードの生成と、依存グラフ作成部15での依存グラフの作成が並行して行われる。生成された中間コードは、一旦、中間コード格納部16に格納される。中間コード格納部16に格納された中間コードは、ホストコード生成部17に送られ、ホストコードが生成される。   FIG. 9 is a diagram schematically showing a series of flows of the target code conversion method according to the present embodiment. First, the target code is loaded from the target code storage unit 200 by the target code loading unit 10. Subsequently, the entry point loading unit 11 loads the entry point from the entry point storage unit 26. In the initial stage of target code conversion, only a predetermined initial address value is stored in the entry point storage unit 26 for each machine. Subsequently, the target code parsing unit 12 interprets the instruction. Next, the target code is divided into basic blocks by the basic block dividing unit 14. After the division, intermediate code generation by the intermediate code generation unit 13 and dependency graph generation by the dependency graph generation unit 15 are performed in parallel. The generated intermediate code is temporarily stored in the intermediate code storage unit 16. The intermediate code stored in the intermediate code storage unit 16 is sent to the host code generation unit 17 to generate a host code.

作成された依存グラフは、一旦、依存グラフ格納部23に格納される。依存グラフの作成に際して、メモリからの読み込みアクセスが有る場合には、メモリ参照テーブル読み込みアクセス登録部19によって、メモリ参照テーブル格納部24へその読み込み及び対応する依存グラフを登録する。メモリ参照テーブルには、メモリ読み込み内容とアドレス値とを対応づけるテーブルが記録されているので、書き込み値評価部20ではメモリ参照テーブルに書き込みアクセスとして登録された値について読み込みアクセス側の依存グラフを評価する。書き込み値評価部20での評価は、ジャンプ先アドレスの候補値としてエントリポイント確定部25で確定することによりエントリポイントとしてエントリポイント格納部26に新規登録される。   The created dependency graph is temporarily stored in the dependency graph storage unit 23. When the dependency graph is created, if there is read access from the memory, the memory reference table read access registration unit 19 registers the read and corresponding dependency graph in the memory reference table storage unit 24. In the memory reference table, a table for associating the memory read contents with the address values is recorded, so the write value evaluation unit 20 evaluates the dependency graph on the read access side for the values registered as write access in the memory reference table. To do. The evaluation by the write value evaluation unit 20 is newly registered in the entry point storage unit 26 as an entry point by being confirmed by the entry point determination unit 25 as a candidate value of the jump destination address.

一方、メモリへの書き込みが有る場合には、メモリ参照テーブル書き込みアクセス登録部21によって、メモリ参照テーブル格納部24へその書き込みを登録する。続いて、依存グラフ再評価部22によって、メモリ参照テーブル読み込みアクセス登録部19においてメモリ参照テーブルに登録した依存グラフを再評価する。依存グラフ再評価部22での評価は、ジャンプ先アドレスの候補値としてエントリポイント確定部25で確定することによりエントリポイントとしてエントリポイント格納部26に新規登録される。   On the other hand, if there is a write to the memory, the memory reference table write access registration unit 21 registers the write in the memory reference table storage unit 24. Subsequently, the dependency graph re-evaluation unit 22 re-evaluates the dependency graph registered in the memory reference table in the memory reference table read access registration unit 19. The evaluation by the dependency graph re-evaluation unit 22 is newly registered as an entry point in the entry point storage unit 26 by being confirmed by the entry point determination unit 25 as a jump destination address candidate value.

さらに、依存グラフに間接アドレス指定が有る場合には、依存グラフ評価部18において、次にホストコードへの変換候補とするべきターゲットコードのエントリポイントを求めるために依存グラフのノードを探索する。探索結果は、ジャンプ先アドレスの候補値としてエントリポイント確定部25で確定することによりエントリポイントとしてエントリポイント格納部26に新規登録される。   Furthermore, when the dependency graph has indirect addressing, the dependency graph evaluation unit 18 searches for a node of the dependency graph in order to obtain an entry point of the target code that should be the next candidate for conversion to the host code. The search result is newly registered in the entry point storage unit 26 as an entry point by being confirmed by the entry point determination unit 25 as a candidate value of the jump destination address.

このようにして、ターゲットコードを事前変換することにより、基本ブロックと全てのエントリポイントのリストが関係付けられて得られる。   In this way, by converting the target code in advance, a basic block and a list of all entry points are obtained in association with each other.

本実施形態によれば、安定した応答性能及びリアルタイム性を高めたCPUエミュレーションを実現することができるので、組み込み機器のような実行時間に制限制約を持つプロセスや製品でも実行性能の品質保証が得られるようになる。   According to this embodiment, it is possible to realize CPU emulation with improved stable response performance and real-time performance, so that it is possible to obtain quality assurance of execution performance even for processes and products that have restrictions on execution time such as embedded devices. Be able to.

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。   Although several embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the invention described in the claims and the equivalents thereof.

100・・・ターゲットコード変換装置、
10・・・ターゲットコードロード部、
11・・・エントリポイントロード部、
12・・・ターゲットコードパース部、
13・・・中間コード生成部、
14・・・基本ブロック分割部、
15・・・依存グラフ作成部、
16・・・中間コード格納部、
17・・・ホストコード生成部、
18・・・依存グラフ評価部、
19・・・メモリ参照テーブル読み込みアクセス登録部、
20・・・書き込み値評価部、
21・・・メモリ参照テーブル書き込みアクセス登録部、
22・・・依存グラフ再評価部、
23・・・依存グラフ格納部、
24・・・メモリ参照テーブル格納部、
25・・・エントリポイント確定部、
26・・・エントリポイント格納部、
200・・・ターゲットコード格納部、
300・・・ホストコード格納部。
100 ... Target code conversion device,
10 ... Target code loading section,
11 Entry point load section,
12 ... Target code parsing part,
13: Intermediate code generator,
14: Basic block division unit,
15 ... dependency graph creation unit,
16: Intermediate code storage unit,
17: Host code generator,
18 ... dependency graph evaluation unit,
19: Memory reference table read access registration unit,
20: Write value evaluation unit,
21: Memory reference table write access registration unit,
22 ... dependency graph re-evaluation part,
23 ... dependency graph storage unit,
24: Memory reference table storage unit,
25... Entry point determination section,
26 Entry point storage unit,
200: Target code storage unit,
300: Host code storage unit.

Claims (8)

ターゲットコードを実行前にホストコードに変換するターゲットコード事前変換方法であって、
前記ターゲットコードを、分岐命令もしくは分岐命令からの流入が起こらない命令群の最小単位である基本ブロックに分割し、
前記基本ブロックごとに、前記ターゲットコードの命令を解析し、レジスタからの読み込み命令、レジスタへの書き込み命令、メモリからの読み込み命令、メモリへの書き込み命令および算術論理命令を検出した場合には、当該命令に対応するノードや辺とするとともに、あるレジスタにロードされる値の、他のレジスタや直値あるいはメモリ内容との依存関係を表現した依存グラフを作成し、
メモリへの読み書きアクセスがあった際に利用され、メモリ読み込み内容及びメモリ書き込み内容とアドレス値とを対応づけるメモリ参照テーブルを作成し、
前記依存グラフと前記メモリ参照テーブルを連携させ、
分岐命令の事前変換に際し、飛び先アドレスとして可能性のある全てのアドレス値をエントリポイントとしてリスト化するターゲットコード事前変換方法。
A target code pre-conversion method for converting target code into host code before execution,
The target code is divided into basic instructions that are the smallest unit of a branch instruction or an instruction group that does not flow in from a branch instruction,
For each basic block, the instruction of the target code is analyzed, and when a read instruction from the register, a write instruction to the register, a read instruction from the memory, a write instruction to the memory, and an arithmetic logic instruction are detected, Create a dependency graph that expresses the dependency of the value loaded into a register with another register, direct value, or memory contents, as well as the node or edge corresponding to the instruction.
Create a memory reference table that correlates memory read contents and memory write contents with address values, used when there is read / write access to the memory,
Linking the dependency graph and the memory reference table;
A target code pre-conversion method that lists all possible address values as jump destination addresses as entry points when branch instructions are pre-translated.
前記ターゲットコードを1命令づつデータの集合体に変換して命令を解析した後、アーキテクチャ非依存の中間コードを生成する請求項1記載のターゲットコード事前変換方法。   2. The target code pre-conversion method according to claim 1, wherein the target code is converted into an aggregate of data one instruction at a time and the instruction is analyzed, and then an architecture-independent intermediate code is generated. 前記ターゲットコードに対応する前記中間コードについて、ホストコードに変換する請求項1記載のターゲットコード事前変換方法。   The target code pre-conversion method according to claim 1, wherein the intermediate code corresponding to the target code is converted into a host code. 前記依存グラフにおける前記依存関係は、命令の実行順序により、実行結果が変化する可能性が有る関係である請求項1記載のターゲットコード事前変換方法。   The target code prior conversion method according to claim 1, wherein the dependency relationship in the dependency graph is a relationship in which an execution result may change depending on an instruction execution order. 前記依存グラフの作成において、レジスタ値を利用する側の命令、分岐命令、条件判定命令、制御命令のいずれかの命令では、ノードあるいは辺を作成しない請求項1記載のターゲットコード事前変換方法。   2. The target code pre-conversion method according to claim 1, wherein, in creating the dependency graph, a node or an edge is not created by any one of an instruction using a register value, a branch instruction, a condition determination instruction, or a control instruction. 前記メモリ参照テーブルは、
前記ターゲットコードからメモリへの書き込みがあった場合には、「書き込んだ値」と「データ長」から成るメモリ書き込みリストにメモリへのアクセスを記録し、
前記ターゲットコードが行うメモリからの読み込みがあった場合には、「データ長」と「依存グラフの始点及びターゲット頂点」から成るメモリ読み込みリストにメモリへのアクセスを記録する請求項1記載のターゲットコード事前変換方法。
The memory reference table is
When there is a write from the target code to the memory, the access to the memory is recorded in the memory write list composed of the “written value” and the “data length”,
2. The target code according to claim 1, wherein when the target code is read from the memory, access to the memory is recorded in a memory read list including “data length” and “start point and target vertex of dependency graph”. Pre-conversion method.
前記依存グラフと前記メモリ参照テーブルの連携は、
前記ターゲットの命令解析時にメモリへの書き込みあるいは読み込みアクセスがあった場合、前記メモリ参照テーブルへの記録を行う際、前記メモリ参照テーブルにすでに記録された全てのメモリへの書き込みあるいは読み込みアクセスを走査し、前記依存グラフを含んでいれば、当該前記依存グラフを再度探索する請求項1記載のターゲットコード事前変換方法。
Cooperation between the dependency graph and the memory reference table is as follows.
When there is a write or read access to the memory during the instruction analysis of the target, when writing to the memory reference table, the write or read access to all the memory already recorded in the memory reference table is scanned. The target code pre-conversion method according to claim 1, wherein if the dependency graph is included, the dependency graph is searched again.
請求項3項記載のターゲットコード事前変換方法で得られたホストコードをロードして使用するエミュレーション方法。   4. An emulation method for loading and using the host code obtained by the target code pre-conversion method according to claim 3.
JP2011017989A 2011-01-31 2011-01-31 Target code prior conversion method and emulation method Pending JP2012159936A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011017989A JP2012159936A (en) 2011-01-31 2011-01-31 Target code prior conversion method and emulation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011017989A JP2012159936A (en) 2011-01-31 2011-01-31 Target code prior conversion method and emulation method

Publications (1)

Publication Number Publication Date
JP2012159936A true JP2012159936A (en) 2012-08-23

Family

ID=46840437

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011017989A Pending JP2012159936A (en) 2011-01-31 2011-01-31 Target code prior conversion method and emulation method

Country Status (1)

Country Link
JP (1) JP2012159936A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014206948A (en) * 2013-04-16 2014-10-30 株式会社東芝 Entry point extraction device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014206948A (en) * 2013-04-16 2014-10-30 株式会社東芝 Entry point extraction device

Similar Documents

Publication Publication Date Title
US10324748B2 (en) Augmented tracking of modified memory pages during live migration of virtual machines from/to host computers with graphics processors
RU2668973C2 (en) Debugging native code by transitioning from execution in native mode to execution in interpreted mode
US10261889B2 (en) Techniques for edit-and-continue and enhanced optimized debugging on optimized code
EP3005301B1 (en) Animation editing
US10613844B2 (en) Using comments of a program to provide optimizations
US9471286B2 (en) System and method for providing code completion features for code modules
JP6418696B2 (en) Instruction set simulator and method for generating the simulator
CN104375875B (en) Method and compiler for the compiling optimization of application program
JP2006350686A (en) Instruction set simulator generation device and simulator generation method
US11068463B2 (en) System and method for managing log data
US10585647B2 (en) Program optimization by converting code portions to directly reference internal data representations
JP2012053679A (en) Optimization device, optimization method and compiler program
JP2012159936A (en) Target code prior conversion method and emulation method
JP6116983B2 (en) Entry point extraction device
JP6878707B2 (en) Test equipment, test methods and test programs
JP2003015914A (en) Method for producing test program for evaluating information processing unit, device and program describing processing therefor
CN113296786B (en) Data processing method, device, electronic equipment and storage medium
KR101029334B1 (en) Api logging apparatus and method thereof
Antoy et al. A target implementation for high-performance functional programs
JP6474055B2 (en) Information processing apparatus and control method thereof
Jenke et al. Towards Generic Malware Unpacking: A Comprehensive Study on the Unpacking Behavior of Malicious Run-Time Packers
CN116775127A (en) Static symbol execution pile inserting method based on RetroWrite framework
CN117648092A (en) Byte code processing method and device
JP2015069220A (en) Device, method, and program for generating performance evaluation program
JP5045934B2 (en) Information processing apparatus, emulation method and emulation program in information processing apparatus