JP2008537245A - プログラム・コード変換中の例外を正確に処理するための方法及び装置 - Google Patents
プログラム・コード変換中の例外を正確に処理するための方法及び装置 Download PDFInfo
- Publication number
- JP2008537245A JP2008537245A JP2008507146A JP2008507146A JP2008537245A JP 2008537245 A JP2008537245 A JP 2008537245A JP 2008507146 A JP2008507146 A JP 2008507146A JP 2008507146 A JP2008507146 A JP 2008507146A JP 2008537245 A JP2008537245 A JP 2008537245A
- Authority
- JP
- Japan
- Prior art keywords
- target
- code
- instruction
- recovery information
- target code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 61
- 238000006243 chemical reaction Methods 0.000 title claims description 45
- 238000011084 recovery Methods 0.000 claims abstract description 147
- 238000005457 optimization Methods 0.000 claims abstract description 20
- 238000013507 mapping Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 8
- 239000003550 marker Substances 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 10
- 230000002159 abnormal effect Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
本発明の好ましい目的は、プログラム・コード変換中の、最も詳細には、動的バイナリ変換中の例外の処理に関連するオーバヘッドを小さくすることである。
以下は、本発明の各実施形態に従って実現可能な種々の態様および利点の要約である。以下は、当業者が詳細な設計の説明をより迅速に理解し得るように提供されるものであって、本明細書に添付する特許請求の範囲を限定することを意図したものではない。
特に好ましい実施形態では、目標プログラム・カウンタが、回復情報に索引付けするのに使用される。
図2に示すように、制御は、まず、トランスレータ制御ループ190に存在する。ステップ201で、制御ループ190が、トランスレータ・コード19のコード生成ファンクション192を呼び出し、ファンクション192は、対象コード17のブロックを、対応する変換済コード21のブロックに変換する。次に、ステップ202で、その変換済コード21のブロックが目標プロセッサ13上で実行される。好適には、変換されたコード21の各ブロックの終端は、制御を制御ループ201に戻す命令を含む。つまり、対象コードを変換するステップと実行するステップとが混合され、したがって、対象プログラム17の各部分は順次変換され、次に実行される。
図3は、本発明の好ましい実施形態におけるプログラム・コード変換後の、対象プログラム中の命令と、目標プログラム中の命令との間の関係を示す概略図である。
変換済対象例外ハンドラ270は、目標プロセッサ上で実行される目標コードの中で、対象例外ハンドラ170をエミュレートする例外ハンドラを提供する。実際には、1つまたは複数の変換済対象特有例外ハンドラ270aか、あるいは、1つまたは複数の変換済デフォルト例外ハンドラ270bが提供される。例外が処理されると、例外ハンドラ270は、通常、制御を目標コード21に戻す。
最初に、障害として一般的に知られている特定のカテゴリの例外に集中することにより本発明を説明する。
図4は、本発明の好ましい実施形態によるプログラム・コード変換中の目標マシンにおける例示的なプログラム・コード構造を示す。
ステップ501で、対象コード17の或るセクション、好ましくは基本ブロックが復号化される。復号化中、1つまたは複数の障害を受けやすい命令174が対象ISAの定義に従って識別される。
図6は、目標コンピューティング・プラットフォーム上に回復情報195、および生成された目標コード21を格納する、好ましい機構を示す。
さらに、図6に示すように、別の変換済目標コード・ブロック21bがメモリ内に格納され、同様にその後に、それぞれの回復情報195およびマーカ196が続く。つまり、目標コード21と回復情報195が、メモリ内でインタリーブされる。
第1のステップは、目標コード・ブロックの終端まで走査を進めることである。好都合なことに、このステップは、マーカ196が識別されるまで、相次ぐ命令を読み取ることを含む。第2に、回復情報195のリストの走査を進めることにより、所望されるそれぞれの回復情報が識別される。
実際的な実施形態では、各基本ブロックは、通常、およそ12の命令を含む。したがって、かかわる距離が比較的短いので、現在の目標コード・ブロックの終端まで走査することは、比較的迅速である。好ましい実施形態では、各対象ブロックは、例えば100または200の命令という最大サイズに制限される。比較的長い目標ブロックなどの稀なケースでも、走査は、依然、効果的であり、費用の低い機構である。
図8の例では、回復情報195には、目標プログラム・カウンタ195a、対象プログラム・カウンタ195b、回復標識セット195c、およびマッピング・テンプレート195dが含まれる。
回復情報195は、理想的には、圧縮された形態で格納される。有利には、回復情報のメモリ占有面積は小さくされる。一部の実施形態では、トランスレータ19は、他の多くのステップと共に、コンピューティング・プラットフォーム上で動作し、トランスレータ19のオーバヘッドによって消費されるメモリの量を少なくすることが望ましい。
対象コード17の例示的なシーケンスの例を以下に示す。例示的な対象コード17は、PPC(PowerPC)タイプのプロセッサに適切である。
0x0001003c:...
0x00010040:add.r3,r3,68
0x00010044:ld r3,0(r3)
0x00010048:...
例示的なPPC対象コードは、定数値68をレジスタ「r3」に加え、次に、そのアドレスからr3にロードする。この加算は、PPCドット付き加算命令で実行され、当該命令は、PPC条件フィールド・レジスタのフィールド0の中でフラグを設定する。ロード障害が生じた場合、例外の正確な処理のため、そのロード命令のプログラム・カウンタ値(0x00010044)が報告されなければならず、r3は、加算演算が実行された後の値を含まなければならず、条件フィールド0は、更新されていなければならない。
目標コード(x86)
0x40083200:mov 12(%ebp),%eax
0x40083203:add $68,%eax
0x40083206:mov (%eax),%ecx
0x40083208:mov %ecx,12(%ebp)
目標コードは、対象レジスタr3に関する値(この場合、抽象レジスタ・バンク27を指し示すebpレジスタからのオフセット12に存在する)をレジスタeaxにロードする。目標コードは、次に、68をeaxに加え、その後、そのアドレスからecxにロードする。最後に、その結果が、抽象レジスタ・バンクの中の対象レジスタr3に再び格納される。
0x40083206:
subj_addr=0x00010044,
flags=cr0_lazy1_cmp0,
register_map=[lazy1(%eax),r3(%eax)]
ターゲットPC(0x40083206)は、回復情報に索引付けをするのに使用される。このケースでは、目標mov命令は、潜在的に障害を生じる対象ロード命令に対応する目標命令である。正確な対象PCが記録される(0x00010044)。「lazy1」と呼ばれる特別な対象レジスタ内の値の0との比較に基づいて条件レジスタ・フィールド0を修正する必要があることを示すのに、フラグが使用される。また、回復情報は、対象レジスタlazy1およびr3の値が、目標レジスタeax(加算目標命令0x40083203によって生成された値)内に入っていることを示す。回復を行うため、eaxからの値は、適切な対象レジスタに溢れさせられ、条件フィールドは、その時点でlazy1に溢れさせられた値を使用して適切な比較を実行することにより、その時点で修正されることが可能であり、適切なPCを報告可能である。
割り込みの正確な処理と関係する、本情報のさらなる好ましい態様を詳細に説明する。
割り込みは、通常、ハードウェア・デバイス・サポートのために使用される。プロセッサ外部のハードウェア・デバイスにおいてイベントが生じると、そのイベントをプロセッサに通知する信号が送信される。例は、I/Oデバイスからのデータの利用可能性である。外部デバイスは、割り込みに対処するルーチンを呼び出すために、プロセッサを通る命令の現在のフローに割り込みをかける。割り込みの使用により、システムがデバイスに絶えずポーリングを行ってデバイスが対処を必要としているかどうかを調べる必要性が軽減される。別の例は、所定の間隔でユーザ・アプリケーションに割り込みがかけられることを可能にするタイマ割り込みであり、制御は、通常、オペレーティング・システムに移される。規則的な割り込みは、マルチタスク・システムにおいてプロセッサ・リソースの共有を実施する便利な機構である。
目標コード21aのブロックは、命令TC1〜TC6を含む。この例では、割り込みは、プロセッサが命令TC2を実行している間に生じる。現在の命令(TC2)の実行が完了する。また、回復情報195に関連する、対応する目標命令214(このケースでは、命令TC4)が出現するまで、0、または1つ以上のさらなる命令が実行される(TC3)。つまり、目標コード命令の実行は、正確な対象状態が実現可能である次のポイントまでロールフォワードされる。
第1の好ましい実施形態では、割り込みタイプの例外が生じると、目標コード・インタプリタ197が呼び出される。目標コード・インタプリタ197は、回復情報195を有する対応する命令214に到達するまで、目標コード命令を1つずつ実行する。
目標コード・ブロック21a内で、障害を受けやすい対応する目標命令214が全く出現しなかった場合、実行は、好ましくはブロックの終端まで続けられる。好ましい実施形態では、正確な対象状態はブロック境界で修正される。
トラップは、通常、明示的、かつ無条件に、ユーザによって要求された例外である。対象命令がトラップ・タイプの例外を生成した場合、トランスレータ19は、そのトラップ・イベントを処理するのに要求される動作を直接に実行する、その命令に関する目標コードを生成する。
異常終了は、通常、回復可能でないイベントであるが、様々な特性を有することが可能である。異常終了は、通常、重大なシステム障害を管理するのに使用される。内部プロセッサ状態の不整合などのハードウェア障害、またはオペレーティング・システムの重要な領域内の誤りなどの深刻なソフトウェア障害を検出すると、プロセッサは、そのエラーを無視して、実行を続けようと試みる、安全のために停止もしくは再起動しようと試みることが可能であり、あるいはそのエラーをオペレーティング・システムに知らせる例外を生成することが可能である。障害と同様に、異常終了は命令内部で生じる。異常終了は、しばしば致命的である。異常終了は、通常、ユーザによるマスクが可能でない。
Claims (29)
- 対象コード(17)から目標コード(21)へのプログラム・コード変換において例外を正確に処理する方法であって、
(a)対象命令セット・アーキテクチャに従って対象プロセッサにより実行可能な前記対象コード(17)を復号化するステップと、
(b)前記対象コード(17)から目標コード(21)を生成するステップと、
(c)目標命令セット・アーキテクチャに従って目標プロセッサ(13)上で前記目標コード(21)を実行するステップと、を備え、
前記ステップ(a)は、前記対象命令セット・アーキテクチャにおいて潜在的に障害を生じる、障害を受けやすい命令(174)を識別することを含み、
前記ステップ(b)は、前記識別された障害を受けやすい対象命令から1つまたは複数の対応する目標命令(214)を生成し、該複数の対応する目標命令(214)または該複数の対応する目標命令(214)の各々に関連する回復情報(195)を格納することを含み、
当該方法は更に、
(d)前記複数の対応する目標命令(214)または前記複数の対応する目標命令(214)の1つの実行中に障害が発生した場合に、
(i)前記対応する目標命令(214)に関連する前記回復情報(195)を取得するステップと、
(ii)前記回復情報(195)を使用して前記障害時における対象プロセッサを正確に表現する正確な対象状態を回復するステップと、
(iii)前記正確な対象状態を使用して前記障害を正確に処理するステップと、
を実行することを含む、方法。 - 前記目標コード(21)を生成することは、1つまたは複数の最適化を実行することを含み、
前記回復情報(195)は、前記1つまたは複数の最適化に関する情報を含む、請求項1に記載の方法。 - 前記目標コードを生成することは、前記1つまたは複数の対応する目標命令(214)において不正確な対象状態を残す1つまたは複数の最適化を実行することを含み、
前記回復情報(195)は、利用可能な前記不正確な対象状態から正確な対象状態を獲得可能にする、請求項1に記載の方法。 - 前記正確な対象状態は、少なくとも正確な対象プログラム・カウンタを含む、請求項1に記載の方法。
- 前記正確な対象状態は、前記対象プロセッサの対象レジスタを表現する少なくとも正確なレジスタ値を含む、請求項1に記載の方法。
- 前記回復情報(195)を格納することは、前記生成された目標コード(21)の直後に前記回復情報(195)を格納することを含む、請求項1に記載の方法。
- 前記回復情報(195)を取得することは、
前記目標コード(21)の走査を進めて、前記目標コード(21)の後に続く前記回復情報(195)を探し出すステップと、
それぞれの前記対応する目標命令(214)に関連する前記回復情報(195)を取得するステップと、
を含む、請求項6に記載の方法。 - 前記対象コード(17)を複数のブロックに分割すること、
複数の目標コード(21)のブロックを生成すること、
前記生成された複数の目標コード(21)のブロック間にインタリーブされた回復情報(195)を格納すること、
をさらに備える請求項1に記載の方法。 - 前記回復情報(195)から前記目標コード(21)を分離するマーカー(196)を格納すること、
障害を示す前記対応する目標命令(214)から走査を行って前記マーカー(196)を探し出した後、前記マーカー(196)から走査を行って前記関連する回復情報(195)を探し出すことにより、前記回復情報(195)を取得すること、
をさらに備える請求項1に記載の方法。 - 前記関連する前記対応する目標命令(124)を表す目標プログラム・カウンタによって索引付けされた前記回復情報(195)を格納することをさらに備える請求項1に記載の方法。
- 前記正確な対象状態を回復することは、
前記取得された回復情報(195)を回復ハンドラ(215)に送ること、
現在利用可能な対象状態を獲得すること、
前記回復情報(195)を使用して前記現在利用可能な対象状態を変更することで前記正確な対象状態をもたらすこと、
を含む、請求項1に記載の方法。 - 前記回復情報(195)を回復ハンドラ(215)に送ること、
前記回復情報(195)に従って、前記回復ハンドラ(215)から1つまたは複数のネイティブ・コード回復ルーチンを呼び出すこと、
を更に備える請求項1に記載の方法。 - 前記回復情報(195)は、目標プログラム・カウンタ値(195a)と、対象プログラム・カウンタ値(195b)とを含む、請求項1に記載の方法。
- 前記回復情報(195)は、前記対応する目標コード命令のポイントにおける最適化が未処理であることを表す回復標識セット(195c)をさらに含む、請求項13に記載の方法。
- 前記回復情報(195)は、前記対応する目標命令(214)のポイントにおいて適用可能な抽象対象レジスタへの目標レジスタのマッピングを特定するマッピング・テンプレート(195d)をさらに含む、請求項13に記載の方法。
- 前記回復情報(195)は圧縮形態で格納される、請求項1に記載の方法。
- 前記回復情報(195)は、
フル・プログラム・カウンタ値が基本値として格納された目標コード・ブロック(21)に関する第1の回復情報項目(195)と、
各々が前記基本値からのオフセットとしてのプログラム・カウンタ値を含む1つまたは複数の後続回復情報項目(195)と、
を含む、請求項13に記載の方法。 - 前記目標コード(21)の実行中、前記目標プロセッサ(13)において割り込み信号を受信すると、前記複数の対応する目標命令(214)か、または前記複数の対応する目標命令(214)の1つが出現するまで、前記目標コード(21)の実行を継続するステップと、
それぞれの前記対応する命令に関連する前記回復情報(195)を取得し、前記正確な対象状態を回復するステップと、
前記正確な対象状態を使用して、前記割り込みを正確に処理するステップと、
をさらに備える請求項1に記載の方法。 - 対象コード(17)から目標コード(21)へのプログラム・コード変換において例外を正確に処理する方法であって、
(a)対象プロセッサによって実行可能な前記対象コード(17)を、目標プロセッサ(13)によって実行可能な目標コード(21)に変換するステップと、
(b)前記目標プロセッサ(13)上で前記目標コード(21)を実行するステップと、を備え、
前記ステップ(a)が、
(a1)前記対象コード(17)内において障害を受けやすい命令(174)を識別すること、
(a2)前記障害を受けやすい対象命令に対応する、1つまたは複数の対応する目標コード命令を生成すること、
(a3)前記複数の対応する目標命令(214)、または前記複数の対応する目標命令(214)の各々に関連する回復情報(195)を格納すること、
をさらに含み、
前記ステップ(b)が、
(b1)前記複数の対応する目標命令(214)、または前記複数の対応する目標命令(214)の1つに関する例外が生じたとき、前記障害が生じている前記対応する目標命令(214)に関連する前記回復情報(195)を探し出すこと、
(b2)前記探し出された回復情報(195)に従って、前記対象プロセッサを表現する正確な対象状態に修正する回復ルーチンを実行すること、
(b3)前記修正された正確な対象状態に関して前記例外を処理するよう例外ハンドラを呼び出すこと、
をさらに含むことを特徴とする方法。 - 対象コード(17)から目標コード(21)へのプログラム・コード変換において例外を正確に処理する方法であって、
前記対象コード(17)内において潜在的に障害を生じる対象命令に対応する少なくとも1つの対応する目標命令(214)を含む目標コード(21)を生成し、前記少なくとも1つの対応する目標命令(214)に関連する回復情報(195)を格納するステップと、
割り込みを受信したとき、前記少なくとも1つの対応する目標命令(214)が出現するまで、目標コード命令の実行を継続するステップと、
前記対応する目標命令(214)に到達したとき、前記関連する回復情報(195)を使用して正確な対象状態を回復するステップと、
前記回復された正確な対象状態を使用して、前記割り込みを正確に処理するステップと、
を備えることを特徴とする方法。 - 前記割り込みを受信したとき、前記目標コード命令を1つずつ実行することをさらに備える請求項20に記載の方法。
- 前記目標プロセッサ(13)における段階的モードを呼び出して前記目標命令を1つずつ実行することをさらに備える、請求項21に記載の方法。
- 目標コード・インタプリタ(197)を呼び出して前記目標コード命令を1つずつ実行することをさらに備える、請求項21に記載の方法。
- 対象コード(17)から目標コード(21)への動的バイナリ変換において例外を正確に処理する方法であって、
対象コード命令シーケンスから目標コード命令シーケンスを生成するステップと、
前記目標コード命令シーケンスを実行するステップと、を備え、
例外が生じた場合に、正確な対象状態を実現可能な目標コード命令が出現するまで前記目標コード命令シーケンスに沿って処理を進め、前記正確な対象状態を実現可能となるまで前記例外の処理を延期することを特徴とする方法。 - 対象コード(17)から目標コード(21)へのプログラム・コード変換を実行するように構成されたトランスレータ装置であって、
対象命令セット・アーキテクチャに従って対象プロセッサにより実行可能な対象コード(17)を復号化する復号化ユニット(19)と、前記対象コード(17)から前記目標コード(21)を生成する目標コード生成ユニット(192)とを有するトランスレータ・ユニット(19)と、
目標命令セット・アーキテクチャに従って前記目標コード(21)を実行する目標プロセッサ(13)と、を備え、
前記復号化ユニット(19)は、前記対象命令セット・アーキテクチャにおいて潜在的に障害を生じる、障害を受けやすい命令(174)を識別するように構成されており、
前記目標コード生成ユニット(192)は、前記識別された前記障害を受けやすい対象命令から1つまたは複数の対応する目標命令(214)を生成し、前記複数の対応する目標命令(214)かまたは前記複数の対応する目標命令(214)の各々に関連する回復情報(195)を格納するように構成されており、
当該装置は更に、
前記目標プロセッサ(13)において前記複数の対応する目標命令(214)のそれぞれを実行しているときに障害が発生すると、前記1つまたは複数の対応する目標命令(214)のそれぞれに関連する前記回復情報(195)を取得し、前記回復情報(195)を使用して正確な対象状態を回復する回復ハンドラ・ユニット(215)と、
前記正確な対象状態を使用して前記障害を正確に処理する例外処理ユニット(170)とをさらに備える、装置。 - 対象コード(17)から目標コード(21)へのプログラム・コード変換を実行するように構成されたトランスレータ装置であって、
対象プロセッサによって実行可能な前記対象コード(17)を、目標プロセッサ(13)によって実行可能な目標コード(21)に変換するトランスレータ・ユニット(19)と、
前記目標コード(21)を実行する目標プロセッサ(13)と、を備え、
前記トランスレータ・ユニット(19)は、前記対象コード(17)内において障害を受けやすい命令(174)を識別し、前記障害を受けやすい対象命令に対応する1つまたは複数の対応する目標コード命令を生成し、前記1つまたは複数の対応する目標命令(214)かまたは前記1つまたは複数の対応する目標命令(214)の各々に関連する回復情報(195)を格納するように構成されており、
前記目標プロセッサ(13)は、前記目標コード(21)を実行し、前記1つまたは複数の対応する目標命令(214)の各々に関して例外が生じたとき、前記対応する目標命令(214)のそれぞれに関連する前記回復情報(195)を探し出し、前記探し出された回復情報(195)に従って、前記対象プロセッサを表現する正確な対象状態を修正する回復ルーチンを実行し、例外ハンドラ(170)を呼び出して、前記修正された正確な対象状態に関して前記例外を処理することを特徴とする装置。 - 対象コード(17)から目標コード(21)へのプログラム・コード変換を実行するように構成されたトランスレータ装置であって、
対象プロセッサによって実行可能な前記対象コード(17)を、目標プロセッサ(13)によって実行可能な目標コード(21)に変換するトランスレータ・ユニット(19)と、
前記目標コード(21)を実行する目標プロセッサ(13)と、を備え、
前記トランスレータ・ユニット(19)は、前記対象コード(17)内において潜在的に障害を生じる対象命令に対応する少なくとも1つの対応する目標命令(214)を含む前記目標コード(21)を生成し、前記少なくとも1つの対応する目標命令(214)に関連する回復情報(195)を格納するように構成されており、
前記目標プロセッサ(13)は、前記目標コード(21)を実行するように構成されており、かつ、割り込みを受信すると、前記少なくとも1つの対応する目標命令(214)が出現するまで目標コード命令の実行を継続するように構成されており、
当該装置は更に、
前記少なくとも1つの対応する目標命令(214)が前記目標プロセッサ(13)によって検出されたとき、前記関連する回復情報(195)を使用して正確な対象状態を回復する回復ハンドラと、
前記回復された正確な対象状態を使用して前記割り込みを処理する変換済対象例外ハンドラ(270)と、
をさらに備える、装置。 - 対象コード(17)から目標コード(21)へのプログラム・コード変換を実行するように構成されたトランスレータ装置であって、
対象コード命令シーケンスから目標コード命令シーケンスを生成するトランスレータ・ユニット(19)と、
前記目標コード命令シーケンスを実行する目標プロセッサ(13)と、を備え、
前記目標プロセッサ(13)は、前記目標コード命令シーケンスを実行するように構成されており、かつ、例外が生じると、正確な対象状態を実現可能な目標コード命令が出現するまで前記目標コード命令シーケンスに沿って実行処理を続け、前記正確な対象状態を実現可能な目標コード命令が出現した時点で、例外ハンドラ(170)を呼び出して、前記正確な対象状態を使用して前記例外を処理するように構成されていることを特徴とする装置。 - 請求項1乃至請求項24のいずれかに記載の方法を実現するようにコンピュータによって実行可能な命令が記録されたコンピュータ可読媒体。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0507943.9 | 2005-04-20 | ||
GB0507943A GB2425372B (en) | 2005-04-20 | 2005-04-20 | Method and apparatus for precise handling of exceptions during program code conversion |
US11/272,882 US8020154B2 (en) | 2005-04-20 | 2005-11-14 | Precise handling of exceptions during program code conversion |
US11/272,882 | 2005-11-14 | ||
PCT/GB2006/001268 WO2006111705A2 (en) | 2005-04-20 | 2006-04-07 | Method and apparatus for precise handling of exceptions during program code conversion |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008537245A true JP2008537245A (ja) | 2008-09-11 |
JP5182815B2 JP5182815B2 (ja) | 2013-04-17 |
Family
ID=34630958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008507146A Active JP5182815B2 (ja) | 2005-04-20 | 2006-04-07 | プログラム・コード変換において例外を正確に処理するための方法、並びにその装置及びコンピュータ・プログラム |
Country Status (7)
Country | Link |
---|---|
US (1) | US8020154B2 (ja) |
JP (1) | JP5182815B2 (ja) |
CN (1) | CN101164041B (ja) |
GB (1) | GB2425372B (ja) |
HK (1) | HK1091003A1 (ja) |
IL (1) | IL186161A (ja) |
TW (1) | TWI482094B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9733990B2 (en) | 2013-03-29 | 2017-08-15 | Fujitsu Limited | Information processing system and program migration method |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6986128B2 (en) * | 2000-01-07 | 2006-01-10 | Sony Computer Entertainment Inc. | Multiple stage program recompiler and method |
US7757221B2 (en) * | 2005-09-30 | 2010-07-13 | Intel Corporation | Apparatus and method for dynamic binary translator to support precise exceptions with minimal optimization constraints |
US20070294675A1 (en) * | 2006-06-20 | 2007-12-20 | Transitive Limited | Method and apparatus for handling exceptions during binding to native code |
US20080052691A1 (en) * | 2006-06-29 | 2008-02-28 | Naveen Neelakantam | Communicating with and recovering state information from a dynamic translator |
US9658849B2 (en) * | 2006-07-06 | 2017-05-23 | Imperas Software Ltd. | Processor simulation environment |
GB2448523B (en) * | 2007-04-19 | 2009-06-17 | Transitive Ltd | Apparatus and method for handling exception signals in a computing system |
JP4661854B2 (ja) * | 2007-11-09 | 2011-03-30 | 株式会社デンソー | 検査システム及びプログラム |
GB0813833D0 (en) * | 2008-07-29 | 2008-09-03 | Transitive Ltd | Apparatus and method for handling page protection faults in a computing system |
US10346199B2 (en) | 2009-04-10 | 2019-07-09 | Microsoft Technology Licensing, Llc | Handling exceptions related to corrupt application state |
US8645758B2 (en) * | 2010-04-29 | 2014-02-04 | International Business Machines Corporation | Determining page faulting behavior of a memory operation |
US9098355B2 (en) | 2012-01-06 | 2015-08-04 | Intel Corporation | Method and apparatus for substituting compiler built-in helper functions with machine instructions |
CN103077073B (zh) * | 2013-01-15 | 2016-12-28 | 华为技术有限公司 | 即时功能级仿真器的实现方法和装置及仿真处理器 |
CN103699427B (zh) * | 2013-12-13 | 2018-01-16 | 华为技术有限公司 | 一种基于jit仿真器的中断检测方法及系统 |
EP3258378B1 (en) | 2016-06-14 | 2022-05-04 | Qoitech AB | Measurement coordination by monitoring of program code execution |
US10261785B2 (en) * | 2017-02-28 | 2019-04-16 | Microsoft Technology Licensing, Llc | Arithmetic lazy flags representation for emulation |
TWI660307B (zh) * | 2017-06-09 | 2019-05-21 | 國立交通大學 | 二元碼轉譯裝置及方法 |
DE102018122920A1 (de) * | 2018-09-19 | 2020-03-19 | Endress+Hauser Conducta Gmbh+Co. Kg | Verfahren zur Installation eines Programms auf einem eingebetteten System, ein eingebettetes System für ein derartiges Verfahren sowie ein Verfahren zur Erstellung einer Zusatzinformation |
CN111382429B (zh) * | 2018-12-27 | 2022-12-27 | 华为技术有限公司 | 指令的执行方法、装置及存储介质 |
CN111708680A (zh) * | 2020-06-12 | 2020-09-25 | 北京字节跳动网络技术有限公司 | 报错信息解析方法、装置、电子设备及存储介质 |
CN118051362A (zh) * | 2022-11-16 | 2024-05-17 | 瑞昱半导体股份有限公司 | 任务异常侦错系统及嵌入式设备侦错方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0734178B2 (ja) * | 1991-03-07 | 1995-04-12 | ディジタル イクイプメント コーポレイション | 変換コードを実行するための効果的エラー報告 |
JP2000322269A (ja) * | 1999-05-10 | 2000-11-24 | Nec Software Hokuriku Ltd | エミュレーションシステム |
WO2005006106A2 (en) * | 2003-07-04 | 2005-01-20 | Transitive Limited | Method and apparatus for performing adjustable precision exception handling |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5787241A (en) * | 1995-12-18 | 1998-07-28 | Integrated Device Technology, Inc. | Method and apparatus for locating exception correction routines |
US5832205A (en) * | 1996-08-20 | 1998-11-03 | Transmeta Corporation | Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed |
US6161219A (en) * | 1997-07-03 | 2000-12-12 | The University Of Iowa Research Foundation | System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints |
US6256753B1 (en) * | 1998-06-30 | 2001-07-03 | Sun Microsystems, Inc. | Bus error handling in a computer system |
DE69924857T2 (de) | 1998-10-10 | 2006-03-02 | Transitive Ltd., Hanging Ditch | Programm-kode-umwandlung |
US7065750B2 (en) * | 1999-02-17 | 2006-06-20 | Elbrus International | Method and apparatus for preserving precise exceptions in binary translated code |
US6446197B1 (en) * | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
US6990658B1 (en) * | 1999-10-13 | 2006-01-24 | Transmeta Corporation | Method for translating instructions in a speculative microprocessor featuring committing state |
US6895460B2 (en) * | 2002-07-19 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Synchronization of asynchronous emulated interrupts |
-
2005
- 2005-04-20 GB GB0507943A patent/GB2425372B/en active Active
- 2005-11-14 US US11/272,882 patent/US8020154B2/en active Active
-
2006
- 2006-04-07 JP JP2008507146A patent/JP5182815B2/ja active Active
- 2006-04-07 CN CN2006800133115A patent/CN101164041B/zh active Active
- 2006-04-12 TW TW095113005A patent/TWI482094B/zh active
- 2006-11-14 HK HK06112508A patent/HK1091003A1/xx unknown
-
2007
- 2007-09-23 IL IL186161A patent/IL186161A/en active IP Right Revival
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0734178B2 (ja) * | 1991-03-07 | 1995-04-12 | ディジタル イクイプメント コーポレイション | 変換コードを実行するための効果的エラー報告 |
EP0772122A2 (en) * | 1991-03-07 | 1997-05-07 | Digital Equipment Corporation | Method for translating a first program code to a second program code and a system for executing a second program code |
JP2000322269A (ja) * | 1999-05-10 | 2000-11-24 | Nec Software Hokuriku Ltd | エミュレーションシステム |
WO2005006106A2 (en) * | 2003-07-04 | 2005-01-20 | Transitive Limited | Method and apparatus for performing adjustable precision exception handling |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9733990B2 (en) | 2013-03-29 | 2017-08-15 | Fujitsu Limited | Information processing system and program migration method |
Also Published As
Publication number | Publication date |
---|---|
US8020154B2 (en) | 2011-09-13 |
CN101164041B (zh) | 2012-08-01 |
TW200710731A (en) | 2007-03-16 |
TWI482094B (zh) | 2015-04-21 |
GB0507943D0 (en) | 2005-05-25 |
HK1091003A1 (en) | 2007-01-05 |
IL186161A (en) | 2013-03-24 |
US20060253691A1 (en) | 2006-11-09 |
CN101164041A (zh) | 2008-04-16 |
GB2425372A (en) | 2006-10-25 |
JP5182815B2 (ja) | 2013-04-17 |
GB2425372B (en) | 2007-06-13 |
IL186161A0 (en) | 2008-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5182815B2 (ja) | プログラム・コード変換において例外を正確に処理するための方法、並びにその装置及びコンピュータ・プログラム | |
US11347489B2 (en) | Accessing a migrated member in an updated type | |
EP2324424B1 (en) | Apparatus and method for handling page protection faults in a computing system | |
US20070294675A1 (en) | Method and apparatus for handling exceptions during binding to native code | |
JP5077605B2 (ja) | コンピュータ・システムにおいて例外信号を処理するための装置及び方法 | |
US8196120B2 (en) | Computer emulator employing direct execution of compiled functions | |
JP5284585B2 (ja) | トランスレータによって対象プログラム・コードを目的コードにトランスレーションしながら、目的コードを実行する間に直面する例外を処理する方法並びにそのトランスレータ装置及びコンピュータ・プログラム | |
JP2008546086A (ja) | 共有リソースのためのアクセス協調を伴うプログラムコードを変換する方法および装置 | |
WO2012010419A1 (en) | A string cache file for optimizing memory usage in a java virtual machine | |
KR101244069B1 (ko) | 프로그램 코드 변환시 정밀한 예외 핸들링을 위한 방법 및장치 | |
US7596780B2 (en) | System and method for virtual catching of an exception | |
US8286144B2 (en) | Administering a process filesystem with respect to program code conversion | |
Gschwind | Method for the deferred materialization of condition code information | |
Aksenov et al. | Execution of nvram programs with persistent stack | |
Paul et al. | A Generic Operating System Kernel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090406 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20090731 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20090824 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20090824 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120106 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20120315 Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120315 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120824 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20121101 Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121101 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20121218 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20121218 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20121218 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130109 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5182815 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: 20160125 Year of fee payment: 3 |