JP5284585B2 - トランスレータによって対象プログラム・コードを目的コードにトランスレーションしながら、目的コードを実行する間に直面する例外を処理する方法並びにそのトランスレータ装置及びコンピュータ・プログラム - Google Patents

トランスレータによって対象プログラム・コードを目的コードにトランスレーションしながら、目的コードを実行する間に直面する例外を処理する方法並びにそのトランスレータ装置及びコンピュータ・プログラム Download PDF

Info

Publication number
JP5284585B2
JP5284585B2 JP2006518322A JP2006518322A JP5284585B2 JP 5284585 B2 JP5284585 B2 JP 5284585B2 JP 2006518322 A JP2006518322 A JP 2006518322A JP 2006518322 A JP2006518322 A JP 2006518322A JP 5284585 B2 JP5284585 B2 JP 5284585B2
Authority
JP
Japan
Prior art keywords
target
level
exception
translator
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006518322A
Other languages
English (en)
Other versions
JP2007525737A5 (ja
JP2007525737A (ja
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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007525737A publication Critical patent/JP2007525737A/ja
Publication of JP2007525737A5 publication Critical patent/JP2007525737A5/ja
Application granted granted Critical
Publication of JP5284585B2 publication Critical patent/JP5284585B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Complex Calculations (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、コンピュータおよびコンピュータ・ソフトウェアの分野に関し、より詳細には、たとえば、例外信号に直面するコード・トランスレータ、エミュレータ、およびアクセラレータにおいて有用なプログラム・コード変換方法および装置に関する。
例外とは、プログラムにおける正常な制御フローを変化させる状態のことである。例外は、ハードウェアによって生成される(「もたらされる(raised)」)こともあるし、ソフトウェアによって生成されることもある。ハードウェア例外としては、リセット、割り込みなどの信号、またはメモリ管理ユニットからの信号が挙げられる。例外は、算術論理ユニットまたは浮動小数点ユニットによって、数値エラーたとえばゼロ除算の場合に、オーバー・フローまたはアンダフローの場合に、あるいは命令デコーディング・エラーたとえば特権命令、予約命令、トラップ命令、もしくは未定義命令の場合に、生成される。ソフトウェア例外は、種々のソフトウェア・プログラムに渡ってそれぞれ変化し、プログラムの正常な動作を変えるどんな種類のエラー・チェックに対しても適用可能である。例外ハンドラは、プログラムの実行の間に例外が起きるとコールされる特別なコードである。所定の例外に対するハンドラがプログラムから得られない場合には、デフォルトのシステム例外ハンドラが呼ばれる。その結果、通常は、実行中のプログラムが途中停止されて、エラー表示が返される。
例外信号は、多くのオペレーティング・システム上で例外をもたらすためのメカニズムとして良く知られている。多くのオペレーティング・システム、特にUnix(登録商標)タイプのシステムは、POSIX規格に準拠する。POSIX規格では、このメカニズムの動作方法が指定されているため、例外信号は、多くのシステムに渡って大体同様である。例外をトリガするもっとも良く知られたイベントは、プログラムによって実施されるプロセスが、(i)マッピングされてないメモリ領域へのアクセスを試みるか、あるいは(ii)正式な許可を持っていないメモリ領域の操作を試みる場合である。例外信号をトリガする他の良く知られたイベントは、(iii)他のプロセスから送られる信号を受け取ること、(iv)プロセスが実行の特権レベルを持っていない命令をプロセスが実行すること、あるいは(v)ハードウェアにおけるI/Oイベントである。
実行中のプログラムが割り込みを受けるために、オペレーティング・システムが例外信号を例外ハンドラに送ると、普通は、例外が起きたときの対象(subject)プロセッサの状態が捕捉される。この状態は、判断が非常に難しいだけでなく、生成に費用がかかる可能性がある。これらのコストを回避するために、一般的に好ましいのは、より良好な代替案がない場合を除いて、例外を出すことを意図的に回避することである。
表1に、ある特定のイベントを規定するためにオペレーティング・システムが出す代表的な例外信号のいくつかを記載する。
Figure 0005284585
例外信号は2つの供給源に由来する可能性がある:(1)直接に対象プログラムから、あるいは(2)オペレーティング・システムまたは他のプロセスからである。いくつかの例外信号は、対象プログラムが実行する命令の直接的な結果として生成される。たとえば、対象プログラムが違法のopcodeを実行すると、SIGILLがもたらされる。同様に、対象プログラムが、違法のメモリ・アクセスを試みると、SIGSEGVがもたらされる。これらは帯域内信号と言われる。また例外信号は、外部によって生成される可能性もあり、これは、オペレーティング・システムによって、あるいは他のプロセスによって行なわれる。SIGHUPおよびSIGALRMは、これらの例である。これらの外部で生成される例外信号は、帯域外信号と呼ばれる。
対象プログラムの観点からすると、例外信号は、任意の時間に発生する可能性がある。例外信号が発生すると、オペレーティング・システムは、信号が送られたプログラムの実行に割り込みをかけて、信号ハンドラ機能を呼び出す。オペレーティング・システムには、各信号を特定の信号ハンドラにマッピングするプロセス特定的な機能表が保持されている。またオペレーティング・システムは、すべての例外に対するデフォルトの信号ハンドラを規定している。デフォルトの信号ハンドラは、所定の動作を取るかまたは単に信号を無視する。
たとえば、Unix(登録商標)では、プログラムは、sigaction()システム・コールを呼び出すことによって、デフォルトの信号ハンドラをオーバーライドすることができる。Sigaction()によって、プログラムは、特定の例外信号を受け取ったときにどの動作をオペレーティング・システムが取るべきかを、指定することができる。動作としては以下のものがあり得る。(1)例外信号を無視する、(2)デフォルトの信号ハンドラをコールする、あるいは(3)特化された信号ハンドラ機能(アドレスはプログラムから与えられる)をコールする。sigaction()コールを行なうときに指定可能な他のオプションとしては、信号ハンドラの実行の間に、CPUが特定の割り込みを隠すことができるのとほぼ同じ方法で他の信号のどれをブロックするのか、が挙げられる。
Unix(登録商標)信号ハンドラには、2つのプロトタイプの一方を与えることができる。第1の信号ハンドラ・プロトタイプは、「ボイドsigHandler(intsigNum)」である。第1の引数は、例外信号の数であるため、1つの機能を、複数の信号を処理するように登録することができる。プログラムは、SA_SIGINFOフラッグを用いてsigaction()をコールすることによって、より多くの情報を信号ハンドラに与えるように、要求することができる。この場合、Unix(登録商標)信号ハンドラ・プロトタイプは、「ボイドsigHandler(intsigNum、sigInfo_t、ボイド*コンテキスト)」になる。
第2のパラメータ(「siginfo」)は、信号についての情報を含む構造であり、信号が生じた原因および信号の出所についての何らかの表示を含んでいる。たとえばSIGILL信号の場合、siginfo構造には、違法命令のアドレスが含まれている。このデータは、プロセスが信号を適切に処理できるためには、不可欠であり得る。第3のパラメータ(「コンテキスト」)は、信号がもたらされたときのプロセッサ状態(すべての対象レジスタを含む)に対するアクセスを与える。この場合もやはり、このデータは、信号の正しい処理を可能にするためには、不可欠であり得る。信号ハンドラは、このコンテキストを変更することが許されている。実行が再開されると、対象レジスタは、変更後のコンテキストの値に戻される。
組込型および非組込型CPUの両方において、主流的な命令セット・アーキテクチャ(ISA:Instruction Set Architecture)に対して、大量のソフトウェアが存在する。これらのソフトウェアは、性能を上げるために「アクセラレート」することもできるし、より優れたコスト・パフォーマンスの利点を示す無数の高性能なプロセッサに対して「トランスレート」することもできる。ただしこのようなプロセッサは、関連するソフトウェアに透過的にアクセスできなければならない。また、主流的なCPUアーキテクチャも、そのISAに歩調を合わせなければならないため、性能または市場の範囲を発展させることができない。このようなアーキテクチャには、「複合CPU(Synthetic CPU )」共通アーキテクチャが有用であろう。
前述のアクセラレーション、トランスレーション、および共通アーキテクチャ能力を促進するプログラム・コード変換方法および装置が、たとえば同時継続中の特許出願GB0309056.0(2003年4月22日出願)、発明の名称「プログラム・コード変換に対するブロック・トランスレーション最適化(Block Translation Optimization for Program Code Conversion)」において扱われている。なお、この文献の開示は本明細書において参照により取り入れられている。例外処理は、プログラム・コード変換の過程において直面することがある多くの対象プログラムの1つの属性である。
本発明によれば、添付の請求項で述べるような装置および方法が提供される。本発明の好ましい特徴は、従属請求項および以下の説明から明らかとなる。
以下は、本発明による種々の実施形態による実現可能な種々の態様および優位性の概要である。この概要は、当業者が、後に続く詳細な構成の説明を迅速に理解するための助けとなる導入部として設けられている。概要は、添付の請求項の範囲を限定するものではなく、また決して限定することは意図されていない。
詳細には、発明者は、プログラム・コード変換の促進に向けた方法を開発した。この方法は、対象プログラム・コードの目的(target)コードへのトランスレーションを用いる実行時トランスレータと共に用いると、特に有用である。以下の説明の一態様によれば、トランスレート済み対象コードの実行の間に直面する例外を、直面する例外の特定の形式に依存して正確度のレベルを変えて処理するための、調整可能な正確度の例外処理技法が提供される。トランスレータが例外信号を検出すると、対象プロセッサの状態が、検出された例外と対象プログラムの対応する信号処理動作とに対して十分であると判断される正確度のレベルで捕捉される。
添付の図面は、本明細書に取り入れられて本明細書の一部を構成しているが、現時点で好ましい実施を例示するものであり、後述するように説明される。
図1に、後述する種々の新しい特徴を実施するための例示的な装置を示す。図1は特に、目的レジスタ15をメモリ18と共に含む目的プロセッサ13を例示している。メモリ18には、多くのソフトウェア・コンポーネント17,19,20,21,22が記憶されている。ソフトウェア・コンポーネントには、トランスレートすべき対象コード17、オペレーティング・システム20、トランスレータ・コード19、およびトランスレート済みコード21が含まれている。トランスレータ・コード19は、たとえば、特定のISAの対象コードをトランスレートして別のISAのトランスレート済みコードにするエミュレータとして機能しても良いし、対象コードをトランスレートしてトランスレート済みコード(それぞれ同じISA)にするためのアクセラレータとして機能しても良い。
トランスレータ19には、可変正確度の例外処理メカニズム22が含まれている。可変正確度の例外処理メカニズム22には、プロキシ信号ハンドラ125が含まれている。後述するように、メカニズム22は、プロキシ信号ハンドラ125を、例外処理を目的として目的コード21に登録する。またトランスレータ19は、例外信号処理を目的として、トランスレート済み対象信号ハンドラ127を生成しても良い。
トランスレータ19、すなわちトランスレータを実施するソース・コードのコンパイルされたバージョンと、トランスレート済みコード21、すなわちトランスレータ19によって生成された対象コード17のトランスレーションとは、目的プロセッサ13(通常は、マイクロプロセッサまたは他の適切なコンピュータ)上で実行されるオペレーティング・システム20(たとえばUnix(登録商標))とともに実行される。図1に例示した構造は単に典型であること、およびたとえば本発明によるソフトウェア、方法、およびプロセスは、オペレーティング・システム内にまたはその下に存在するコードにおいて実施しても良いことが理解される。対象コード、トランスレータ・コード、オペレーティング・システム、および記憶メカニズムはそれぞれ、多種多様な形式のいかなるものであっても良く、これは当業者に知られていることである。
図1の例示的な実施形態による装置の全体動作において、プログラム・コード変換は好ましくは、実行時に、トランスレート済みコード21が実行されている間に動的に行なわれる。トランスレータ19は、トランスレート済みプログラム21に合わせて動く。対象コード17が例外信号ハンドラを登録している場合には、トランスレータ19は、その例外信号ハンドラをトランスレートして、実行することを、対応する例外信号を受け取ったときに行なうように、構成されている。そのように行なう際、トランスレータ19は、対象コード17の個々のトランスレート部分のうちどれを、個々の例外信号を受け取ったときに実行するのかを把握することによって、対象オペレーティング・システムのセマンティクスを正しくエミュレートするように構成されている。加えて、同じ例外信号が、異なるアーキテクチャ上では異なる信号数を有していても良いため、エミュレーションは、信号数のトランスレーションを含んでいても良い。トランスレータ19は、さらに好ましくは、対象コード17をデコードの間に対象プログラムの例外を検出するように動作可能である。このような場合、トランスレータ19は、次に、実際の例外信号をもたらすのではなくて、適切な時間に適切な対象信号ハンドラを単に呼び出しても良い。
トランスレータ19はさらに、siginfoデータ構造を、そのデータ構造が対象信号ハンドラによって用いられるならば、ポピュレートする。同様に、トランスレータ19は、sigcontextデータ構造を、そのデータ構造が対象信号ハンドラによって用いられるならば、ポピュレートする。前述したように、sigcontextデータ構造には、例外信号のときの対象プロセッサ状態のスナップショットが含まれている。いくつかの信号(たとえばSIGSEGV)については、ほとんどすべての命令がこれらをもたらすことができるため、sigcontext構造をポピュレートする場合には、トランスレータ19が、対象コード17のブロック内の任意の点から全体の対象プロセッサ状態を正しく再生成できる必要がある。全体の対象プロセッサ状態を再現する能力は、「正確度例外処理」と呼ばれる。動的なトランスレータが、著しく性能を損失することなく正確度例外処理をサポートすることは、非常に難しい。
前述したように、対象コード17が例外信号ハンドラを登録している場合には、トランスレータ19は、その信号ハンドラのセマンティクスをエミュレートするように構成されている。ほとんどの場合、対象コードの例外信号ハンドラは、目的アーキテクチャ上で実行することはできず、目的例外信号に対応していない。この非互換性に適応するために、トランスレータ19には、プロキシ信号ハンドラ125が含まれている。プロキシ信号ハンドラ125は、たとえば対象システム・ハンドラに対するシステム・コールが、対象プログラムにおいて検出されるときに、トランスレータ19によって目的プログラム21内に登録される。
プロキシ信号ハンドラ125は、目的オペレーティング・システム20によって呼び出されて、目的オペレーティング・システム20からの信号を遮断し、またトランスレート済み信号ハンドラ127が必要とする適切な対象コンテキストを構築する。そしてプロキシ信号ハンドラ125は、トランスレータ19をコールする。そしてトランスレータ19は、適切な(トランスレート済み)対象信号ハンドラを呼び出す。
あるいは、トランスレータ19が、デコード時に、特定の対象コード命令が例外信号をもたらすことを検出する場合には、トランスレータ19は、目的コンテキスト(133、図5)を構築する目的コードをプラントして、プロキシ信号ハンドラ125を直接呼び出す。この場合も、対象プロセッサの状態は、プロキシ信号ハンドラ125によって、複数の供給源を用いて再現される。複数の供給源には、トランスレータ19が保持する対象プロセッサ状態とプロキシ・ハンドラ125に送られる目的プロセッサ状態(133)との表現が含まれる。これについては、以下でさらに説明する。この「デコード時に検出する」アプローチによって、目的オペレーティング・システム20が実際の例外信号をもたらすことが防がれ、したがって動作が簡単になる。
図2に示すのは、プログラムがその対象アーキテクチャ上で実行されているときに行なわれる信号処理の制御フローである。図3に示すのは、本実施形態の目的オペレーティング・システム信号処理メカニズムを用いた、トランスレート済みプログラムに対する信号処理である。
図2の信号処理シナリオでは、信号処理が始まるのは、対象プログラム101が例外信号111をもたらすときである。例外信号111によって、制御がオペレーティング・システム103に移される。オペレーティング・システム103は、例外信号111が発生したときの対象プロセッサの状態を反映するコンテキスト構造113を構築する。次に、コンテキスト構造は、特定の例外信号111に対して登録された信号ハンドラ105に送られる。信号ハンドラ105がその動作を終了するときに、コンテキスト構造113’が、オペレーティング・システム103に戻される。次に、オペレーティング・システム103は、コンテキスト113’からプロセッサ状態を復元して、制御をプログラム101に戻す。信号ハンドラ105が起こす、コンテキスト構造113(たとえば、レジスタ値)に対するいかなる変化も、プログラム101が実行を再開するときに、プロセッサ状態に反映される。図2では、コンテキスト構造の記号「113」の末尾のアポストロフィは、コンテキスト構造のコンテンツが変更されている場合があることを示す。
図3に例示するのは、目的プロセッサ13が実行するトランスレート済みプログラム21における、例外信号処理メカニズム22を用いた信号処理の制御フローである。信号処理をエミュレートするために、トランスレータ19は最初に、トランスレート済みプログラム121に対してプロキシ信号ハンドラ機能125を登録する。トランスレート済みプログラム121において例外信号131が発生すると、目的オペレーティング・システム20は、プロキシ信号ハンドラ125を呼び出して、それに目的コンテキスト133を送る。プロキシ信号ハンドラ125では、目的コンテキスト133および対象レジスタ・バンク141を用いて、対象コンテキスト135を構築する。
次に、トランスレータ19は、対応する対象プログラム信号ハンドラ127を識別し、トランスレートし、実行することを、再構築された対象プロセッサの状態135を用いて行なう。特に、例示的な実施形態においては、トランスレータ19は、ハンドラ127の対象プロセッサの状態を調整して、ハンドラ127が実行を開始したときに、そのパラメータが、再構築された対象プロセッサの状態135を指し示すようにする。対象信号ハンドラ127がその動作を終了するときに、対象コンテキスト135’がプロキシ信号ハンドラ125に戻される。プロキシ信号ハンドラ125は、その動作を終了すると、目的コンテキスト133’を目的オペレーティング・システム20に戻す。次に、目的オペレーティング・システム20は、目的コンテキスト133’を用いて目的プロセッサ状態を復元し、トランスレート済み対象コード121の実行を再開する。
対象レジスタ・バンク141(その他の場合にはグローバル・レジスタ記憶装置と言われる)は、抽象レジスタに対するリポジトリであるメモリ領域である。抽象レジスタはそれぞれ、特定の対象レジスタまたは他のアーキテクチャ特徴の値に対応し、これをエミュレートする。トランスレート済みコード21の実行の間には、対象レジスタ・バンク141または目的レジスタ15(図1)に、抽象レジスタ値が、代わりに記憶される。トランスレート済みコード21の実行の間には、抽象レジスタは、命令に関与しても良いように、目的レジスタ15に一時的に保持される。対象レジスタ値は、目的レジスタ15に保持されていないときには、対象レジスタ・バンク141に保存される。たとえば、対象コードの特定のブロックに対するレジスタ割り当てが、対象レジスタ値をスピルすること(すなわち、目的レジスタを解放するためにメモリに保存すること)を必要とする場合には、その特定の対象レジスタに対応する対象レジスタ・バンク141内の予約箇所に、値をスピルする。同様に、対象コードの各ブロックの終わりに、すべての対象レジスタ値を対象レジスタ・バンク141に戻して保存する。何故なら、目的レジスタ値は、連続的なブロック間に上書きしても良いからである。対象レジスタ・バンク141またはグローバル・レジスタ記憶装置の形成および使用に付随する種々の特徴が、前述の同時継続中の特許出願GB0309056.0(2003年4月22日出願)、発明の名称「プログラム・コード変換に対するブロック・トランスレーション最適化」に詳細に説明されている。 トランスレート済み対象信号ハンドラ127が対象コンテキスト135を変更している場合には、プロキシ信号ハンドラ125は、変更された値を対象レジスタ・バンク141に保存する。図3では、対象コンテキストの記号「135’」の末尾のアポストロフィは、コンテントが変更されている場合があることを示す。例外信号がもたらされたときに、それらの対象レジスタ値のいずれかが目的レジスタ内で生存していたならば、プロキシ信号ハンドラ125は、目的コンテキスト133における対応するエントリも更新する。図1では、目的コンテキストの符号「133’」の末尾のアポストロフィはやはり、コンテンツが変更されている場合があることを示す。
後でさらに詳しく述べるように、対象信号ハンドラ127が必要とする正確度のレベルに依存して、トランスレータ19は、例外をもたらす命令の直前において目的コードをプラントしても良い。目的コードは、すべての対象レジスタ値を修正して、対象レジスタ・バンク141にスピルする。この結果、プロキシ信号ハンドラ125が対象レジスタ・バンク141から取り出す値は正確であること、かつトランスレート済み対象信号ハンドラ127に送られる対象コンテキスト135は正確であることが保証される。
図4に例示するのは、信号ハンドラ105が対象コンテキスト113を変更しない場合に、プログラムがその対象アーキテクチャ上で実行されているときの信号処理である。図4の対象アーキテクチャ信号処理シナリオでは、信号処理が始まるのは、対象プログラム101が例外信号111をもたらして、例外信号111が、制御をオペレーティング・システム103に移すときである。オペレーティング・システム103では、例外信号111が発生したときのプロセッサの状態を反映するコンテキスト構造113を構築する。そして、コンテキスト構造113は、特定の例外信号111に対して登録された信号ハンドラ105に送られる。信号ハンドラ105は、その動作を終了すると、制御をオペレーティング・システム103に戻す。そして、オペレーティング・システム103は、制御をプログラム101に戻す。
図5に例示するのは、トランスレート済みプログラム121に対する信号処理の制御フローである。この制御フローでは、目的コードによるプロキシ信号ハンドラ125の直接呼び出しを用いており、またトランスレート済み対象信号ハンドラ127は、対象コンテキスト135を変更しない。トランスレート済みプログラム121における、例外信号が発生したであろう時点において、目的コード21は、目的コンテキスト133を構築し、またプロキシ信号ハンドラ125を呼び出して、このプロキシ信号ハンドラ125に目的コンテキスト133を送る。プロキシ信号ハンドラ125では、目的コンテキスト133および対象レジスタ・バンク141を用いて、対象プロセッサの状態135を、対象コンテキスト構造として構築する。次に、トランスレータ19は、対応する対象プログラム信号ハンドラ127を識別し、トランスレートし、および実行することを、やはり、再構築された対象コンテキスト(状態)135を用いて行なう。対象信号ハンドラ127は、その動作を終了すると、制御をプロキシ信号ハンドラ125に戻す。プロキシ信号ハンドラは、その動作を終了すると、制御を、トランスレート済み対象コード121に戻し、対象コード121は実行を再開する。
前述したように、対象プロセッサ状態を再現することは、困難でありかつ高価となる可能性がある。第1に、対象プロセッサの状態を計算して収集することに付随する実際の費用が存在する。たとえば、遅延評価などのトランスレータ最適化を行なうと、対象レジスタ値の計算が先送りされることがある。先送りは、それらの値を計算するために必要なその下のデータを記憶することによってなされる。信号に応答して対象プロセッサの状態を再現するためには、それらの値を即座に修正(すなわち計算)する必要がある。たとえ対象レジスタが以前に計算されていても、対象レジスタを、メモリから(たとえば対象レジスタ・バンクから)取り出さなければならない。
第2に、対象プログラムの任意の時点で対象プロセッサの状態を計算する能力に付随する機会が存在する。動的なバイナリ・トランスレータにおける主要な最適化の多くは、バイナリ互換性の厳密なモデルから逸脱することを伴う。バイナリ互換性は、トランスレータが対象アーキテクチャの正確なプロセッサの状態を再現できることを意味する。厳密なモデルは、トランスレート済みプログラムの任意の時点で(すなわち、任意の対象命令において)、対象プロセッサの状態を再現できるモデルである。実行の任意の時点で対象プロセッサの状態を再現するために必要な情報を保持するためには、トランスレータは、著しい最適化を見合わせなければならない。このような最適化を用いていると、トランスレータは、対象コンテキストを正確に再現することはできない。このように、例外の実際の費用は、例外が発生するときの状態を生成していることではなく、状態を生成できることにある。
このような問題に対処するために、好ましいトランスレータ19では、可変正確度の例外処理メカニズム22を用いて例外をエミュレートする。それによって、対象コンテキスト、たとえば135が、特定の例外の要求に依存して、異なる例外に対して、異なるレベルの詳細で再構築される。トランスレータ19は、対象例外を、デコード時にまたはトランスレーションの間に直面したときに検出し、特定の例外に対する対象コンテキストに対して必要な正確度を決定し、適切なフラッグを設定する。一般に、トランスレータ19は、デコード時に、どのレベルの正確度が必要であるかを決定することができる。比較すると、簡単なトランスレータの場合は、非効率的であり、完全で正確な対象コンテキストがいつの時点でも必要とされ得ることを考慮して、最も堅実な解決方法を実施するであろう。
一実施形態においては、可変正確度の例外処理メカニズム22によって、例外処理が、対象コンテキスト正確度の4つのレベルで提供される。すなわち(0)状態全く必要としない、(1)最新の既知の整合性のあるスタック・フレーム、(2)正確なプログラム・カウンタ、(3)完全に修正された対象レジスタである。前述したように、すべての対象レジスタを修正するコストは非常に高く、したがって可能ならば回避される。それ故、トランスレータ19は、必要な正確度の最も低いレベルで、各例外を処理する。可変正確度の例外処理メカニズム22のこの実施形態では、対象コンテキスト正確度の4つのレベルについて説明しているが、可変正確度の例外処理メカニズム22は、正確度の任意の数の可能なレベルから正確度の任意のレベルを選択することができる。さらに、正確度の各レベルに対して、捕捉されている対象コンテキストの特定のコンポーネントの選択も、可変とすることができる。
表2には、4つの例外処理正確度レベル(レベル0〜レベル3)のそれぞれに対して、異なるトランスレータ・コンポーネントが行なう動作を、例示的な実施形態について示す。以下、各レベルに対する特定の動作について、さらに詳細に説明する。
Figure 0005284585
レベル・ゼロ(レベル0)は、例外処理時に、対象プロセッサの状態全く必要としないレベルである。
場合によっては、トランスレータ19は、対象プロセッサの状態全く必要としないことが、例外処理に必要であると決定する。これらの場合には、トランスレート済み信号ハンドラ127に送られる対象コンテキスト135は、正確なプロセッサの状態データを含む必要はまったくない。たとえば、Linux(登録商標)オペレーティング・システムでは、例外信号数31が、「Pthread」スレッディング・ライブラリに対して予約される。この信号は、新たに形成される子スレッドからその親に送られて、形成が成功したことを示す。Pthreadライブラリを実施するということは、ハンドラ127がどんな状態も必要としてはおらず、むしろ、例外を送る動作自体が唯一の必要とするデータであることを示している。
レベル1は、例外処理時に、最新の既知のスタック・フレームであることを必要とするレベルである。
正確度の他のレベルは、最新の既知のスタック・フレームを与えることである。最新の既知のスタック・フレームの意味は、スタック・ポインタ、ベース・ポインタ、およびプログラム・カウンタ(PC:Program Counter )レジスタの最新の既知の整合性のある値である。ほとんどの状況において、最も効率的なのは、最新の既知のスタック・フレームを、正確度のデフォルト・レベルにすることである。対象コンテキスト135における残りの未定義の値に、特別な値、たとえば「Oxdeadbeef」を、デバッギング目的で入力する。
これらの値は、対象プログラムの最新の既知の整合性のある状態を示しているが、現在の状態を正確に反映してはいない場合があるという点で、不正確である。トランスレータ19の一実施形態においては、最新の既知の整合性のある状態は、最後の基本ブロック境界に対応する。何故なら、一般的にすべての対象レジスタは、修正されて、基本ブロック間の対象レジスタ・バンクに保存されるからである。正確度の「最新の既知のスタック・フレーム」レベルは、対象レジスタ値の修正は必要ではない。
レベル2は、例外処理時に、現在の状態を反映し、対象プログラム・カウンタに対する正確なプログラム・カウンタ値であることを必要とするレベルである
レベル2の正確度が適用されるのは、トランスレータ19がデコード時に、(a)特定の対象命令が例外信号をトリガすること、(b)対象信号ハンドラが正確なプログラム・カウンタ値を必要とすることを、決定する場合である。たとえば、x86プロセッサ上では、IRET命令は、ある特定の特権レベルでのみ実行することができる。トランスレータ19がこの命令に、対象特権レベルが低すぎるときに直面する場合には、適切なエミュレーションを行なうためには、対応する対象信号ハンドラを呼び出す必要があるとともに、対象プログラム・カウンタに対する正確な値を信号ハンドラに送る必要がある。
トランスレータ19は、このような命令をエミュレートすることを、正しい例外を意図的にもたらすことによって、または適切な箇所において対象信号ハンドラを直接呼び出すことによって行なう。トランスレーションの間に、トランスレータ19は、例外を起こす命令の対象アドレスを、一時的な抽象レジスタに記録する。またトランスレータ19は、例外処理正確度レベルを示すようにフラッグを設定する。その結果、プロキシ信号ハンドラ125は、後で呼び出されるときにどの程度コンテキストを構築するべきかについて知ることになる。レベル2の場合には、「正確なプログラム・カウンタ」フラッグによって、プロキシ信号ハンドラ125に、正確なプログラム・カウンタ値を取り出すことが知らされる。次に、トランスレータ19は、目的コードをプラントして、適切な例外(普通はLinuxを含むUnix(登録商標)システム上のSIGILL)をもたらすか、あるいは対象信号ハンドラ127を直接呼び出す。プロキシ信号ハンドラ125は、呼び出されると、「正確なプログラム・カウンタ」フラッグが設定されていることを検出して、プログラム・カウンタ値PCをその記憶箇所から取り出す。
レベル3は、例外処理時に、対象レジスタ・バンクにおける修正された対象レジスタ値を含む正確な対象レジスタ値、及び対象プログラム・カウンタに対する正確なプログラム・カウンタ値であることを必要とするレベルである。
レベル3は、説明している実施形態の最も高い正確度レベルである。レベル3が使用されるのは、トランスレータ19がデコード時に、命令によって例外が発生することおよびプログラム・カウンタPCの値とその他のコンテキストが必要となることを、検出する場合である。場合によっては、トランスレータ19は、デコード時に、対象コード17における特定の命令によって例外が発生すること、例外処理にはプログラム・カウンタ値とその他の状態が必要であることを判断する。この場合には、デコード時にトランスレータ19は、除外された命令の正確なプログラム・カウンタ値PC(対象アドレス)を記録すること、および除外された命令の前のすべての対象レジスタ値を強制的に修正するためのコードを生成することの両方を行なう。この結果、トランスレータ19は、例外がもたらされたときに、完全な対象コンテキストをもたらすことができる。加えて、ブロック・トランスレーション・モードで動作するシステムの場合には、トランスレータ19は、例外を含むコードのブロックをマークして、コード生成の間にある特定の最適化が適用されることがないようにする。言い換えれば、コード移動を伴ういくつかの最適化においては、対象レジスタ値を、一時的に(すなわち、目的コードにおけるある特定の時点で)対象プロセッサの状態と、たとえ修正されても、整合性がないようにすることができる。これらの最適化は、例外を含むブロックの場合には停止される。これは、トランスレート済み対象信号ハンドラ127に送られる対象プロセッサの状態の正確度を保証するためである。
たとえば、いくつかの対象プログラムは、x86INB命令を用いて、ハードウェア・アクセスをエミュレートする。対象例外信号ハンドラは、この場合、すべての対象レジスタに対して正確な値(すなわち、完全なコンテキスト)を必要とする。トランスレーション(デコーディング)の間にx86INB命令に直面すると、トランスレータ19は、目的コード(またはIR、これは後で目的コードとして出される)を挿入して、すべての遅延または待ち状態の対象レジスタ値を修正した後、それらを対象レジスタ・バンク141にスピルする。こうして、トランスレート済みブロックには、修正コード、スピル・コード、および例外生成目的命令が含まれる。後でトランスレート済みブロックを実行する間に、例外がもたらされる前に対象プロセッサの状態を修正およびスピルして、プロキシ信号ハンドラ125が呼び出されるときに、対象レジスタ・バンク141における値が整合性があって正確であるようにする。
プロキシ信号ハンドラ125は、対象レジスタ・バンク141における修正された値を用いて対象コンテキスト135を構築し、信号をもたらした命令の記憶されたアドレスからsiginfo構造を構築する。次に、プロキシ信号ハンドラ125は、対象信号ハンドラ127をトランスレートして、それを、siginfo構造およびコンテキスト構造135とともに呼び出す。対象信号ハンドラ127は、実行を終了すると、制御をプロキシ信号ハンドラ125に戻す。プロキシ信号ハンドラ125が実行を終了すると、制御は、トランスレート済みプログラム121に戻る。
まれであるが、対象信号ハンドラ127は、コンテキスト構造135における対象レジスタの一部を変更する。この場合には、プロキシ信号ハンドラ125が、これらの変更された値をコピーして、対象レジスタ・バンク141内に戻すことを制御に戻る前に行なう。これによって、変更されたいかなる対象レジスタ値も、トランスレート済みプログラム121内に伝搬されることが保証される。このような場合の例は、「ゼロ除算」例外をすべて検出して、応答を、結果をゼロに設定して「除算」命令を飛び越えることによって行なう対象信号ハンドラである。
例示的な実施形態においては、トランスレータ19は、例外信号の供給源、信号数、および使用中の特定のオペレーティング・システム21に基づいて、正確度のレベルを決定する。このコンテキストでは、例外信号の「供給源」は3つ存在する。すなわち、(1)デコード時に検出される場合、(2)目的コードの実行によって生じる場合、および(3)外部のイベントによって生じる場合、の3つである。例示的な実施形態においては、非同期の外部イベントを含む外部イベントには常に、デフォルト・レベルのレベル1が割り当てられる。またレベル1は、供給源(1)および(2)に対する処理のデフォルト・レベルとしても機能する。
使用する正確度レベルにかかわらず、例外信号がメモリ・アクセスの結果である場合には、トランスレータ19は、例外を発生させた対応する対象アドレスにも入力する。この値は、プロキシ・ハンドラ125に送られる目的プロセッサの状態から得られるか、あるいは対象信号ハンドラ127を呼び出す目的コードにエンコードされる。対象コード17および目的コード21のメモリ・モデルに依存して、トランスレータ19は、対応する対象アドレスを得るために、メモリ・アクセスの目的アドレスをデマングル(demangle)する必要があっても良い。
いくつかの好ましい実施形態について図示して説明してきたが、当業者であれば理解するように、添付の請求項において規定されている本発明の範囲から逸脱することなく、種々の変形および変更を行なっても良い。
本出願に関連して本明細書と同時にまたは以前に出願され、本明細書とともに公衆の便覧に公開されているすべての論文および文献に注意を払うものであり、このような論文および文献はすべて、その内容が本明細書において参照により取り入れられている。
本明細書(任意の添付の請求項、要約、および図面を含む)で開示されるすべての特徴、および/または同様に開示されるいずれかの方法またはプロセスのすべてのステップは、このような特徴および/またはステップの少なくとも一部が互いに相容れない組み合わせを除いて、任意の組み合わせで組み合わせても良い。
本明細書(任意の添付の請求項、要約、および図面を含む)で開示される各特徴は、特にことわらない限り、同じ、同等、または類似の目的を満たす代替的な特徴と取り替えても良い。したがって、特にことわらない限り、開示される各特徴は、同等または類似の特徴の包括的な組の1つの例に過ぎない。
本発明は、前述の実施形態の詳細に制限されない。本発明は、本明細書(任意の添付の請求項、要約、および図面を含む)で開示される特徴の任意の新しい1つまたは任意の新しい組み合わせに及ぶか、または同様に開示される任意の方法またはプロセスのステップの任意の新しい1つまたは任意の新しい組み合わせに及ぶ。
本発明の実施形態を利用する装置を例示するブロック・ダイアグラム。 第1の例外信号処理プロセスを示す概略的なダイアグラム。 本発明の例示的な実施形態による例外信号処理プロセスを示すのに有用な概略的なダイアグラム。 第2の例外信号処理プロセスを示す概略的なダイアグラム。 本発明の例示的な実施形態による例外信号処理プロセスを示すのに有用な概略的なダイアグラム。

Claims (3)

  1. トランスレータによって対象プログラム・コードを目的コードにトランスレーションしながら、当該目的コードを実行する間に直面する例外を処理する方法であって、前記トランスレーションされた目的コードを実行する目的プロセッサとメモリとを備えているコンピュータが、
    前記トランスレータを使用して例外の発生を検出するステップと、
    前記検出された例外を処理するために要求される正確度レベルであって、前記例外が発生したときの対象プロセッサの状態の当該正確度レベルが最も低いレベルになるように、前記トランスレータを使用して下記基準に従い下記4つの正確度レベルから正確度レベルを選択するステップであって、
    前記対象プログラム・コードを実行する前記対象プロセッサの状態が、対象レジスタ値及びプログラム・カウンタ値を含み、
    前記正確度レベルは下記レベル0〜3から選択され、
    前記レベル0の選択は、前記トランスレータによるデコード時に、対象プロセッサの状態例外処理に全く必要としないと前記トランスレータが決定する場合に行われ、
    前記レベル1の選択は、例外信号の供給源が非同期の外部イベントを含む外部イベントである場合に行われ、又は、例外信号の供給源がデコード時に検出される場合若しくは例外信号の供給源が目的コードの実行によって生じる場合にデフォルト・レベルとして行われ、
    前記レベル2の選択は、前記トランスレータがデコード時に、特定の対象命令が例外信号をトリガすること、及び対象信号ハンドラが前記正確なプログラム・カウンタ値を必要とすること、を前記トランスレータが決定する場合に行われ、
    前記レベル3の選択は、前記トランスレータがデコード時に、命令によって例外が発生すること、及びプログラム・カウンタの値とその他のコンテキストが必要になること、を前記トランスレータが決定する場合、又は、前記トランスレータがデコード時に、前記対象プログラム・コードにおける特定の命令によって例外が発生すること、及び例外処理には前記対象プロセッサの状態プログラム・カウンタ値とその他の状態が必要になること、を前記トランスレータが決定する場合に行われ、
    当該正確度レベルがレベル0から3の順に高くなり、当該正確度レベルが、
    例外処理時に、対象プロセッサの状態く必としないレベルであるレベル0、
    例外処理時に、最新の既知のスタック・フレームであることを必要とするレベルであるレベル1、ここで前記最新の既知のスタック・フレームは、最新の既知のスタック・ポインタ値、ベース・ポインタ値、およびプログラム・カウンタ・レジスタ値の最新の既知の整合性のある値を含み、
    例外処理時に、現在の状態を反映し、対象プログラム・カウンタに対する正確なプログラム・カウンタ値であることを必要とするレベルであるレベル2、及び
    例外処理時に、対象レジスタ・バンクにおける修正された対象レジスタ値を含む正確な対象レジスタ値、及び対象プログラム・カウンタに対する正確なプログラム・カウンタ値であることを必要とするレベルであるレベル3、
    である、前記選択するステップと、
    前記選択された正確度レベルに対応付けられた動作を実行することで、前記検出された例外を処理するステップであって、前記正確度レベルに対応して、
    前記正確度レベルがレベル0の時にはプログラム・カウンタ値及び対象レジスタ値をロードしないような動作が行われ、
    前記正確度レベルがレベル1の時には前記最新の既知のスタック・フレームを与え、但し対象レジスタ値の修正をしないような動作が行われ、
    前記正確度レベルがレベル2の時には前記最新の既知のスタック・フレームを与え、且つ、前記正確なプログラム・カウンタ値を設定するような動作が行われ、但し対象レジスタ値の修正をしない、
    前記正確度レベルがレベル3の時には前記正確な対象レジスタ値、及び前記正確なプログラム・カウンタ値を設定するような動作が行われる、
    前記処理するステップと
    を実行することを含む、前記方法。
  2. トランスレータによって対象プログラム・コードを目的コードにトランスレーションしながら、当該目的コードを実行する間に直面する例外を処理するトランスレータ装置であって、
    メモリと、
    前記メモリに接続され、前記トランスレーションされた目的コードを実行する目的プロセッサであって、
    前記トランスレータを使用して例外の発生を検出すること、
    前記検出された例外を処理するために要求される正確度レベルであって、前記例外が発生したときの対象プロセッサの状態の当該正確度レベルが最も低いレベルになるように、前記トランスレータを使用して下記基準に従い下記4つの正確度レベルから正確度レベルを選択することであって、
    前記対象プログラム・コードを実行する前記対象プロセッサの状態が、対象レジスタ値及びプログラム・カウンタ値を含み、
    前記正確度レベルは下記レベル0〜3から選択され、
    前記レベル0の選択は、前記トランスレータによるデコード時に、対象プロセッサの状態例外処理に全く必要としないと前記トランスレータが決定する場合に行われ、
    前記レベル1の選択は、例外信号の供給源が非同期の外部イベントを含む外部イベントである場合に行われ、又は、例外信号の供給源がデコード時に検出される場合若しくは例外信号の供給源が目的コードの実行によって生じる場合にデフォルト・レベルとして行われ、
    前記レベル2の選択は、前記トランスレータがデコード時に、特定の対象命令が例外信号をトリガすること、及び対象信号ハンドラが前記正確なプログラム・カウンタ値を必要とすること、を前記トランスレータが決定する場合に行われ、
    前記レベル3の選択は、前記トランスレータがデコード時に、命令によって例外が発生すること、及びプログラム・カウンタの値とその他のコンテキストが必要になること、を前記トランスレータが決定する場合、又は、前記トランスレータがデコード時に、前記対象プログラム・コードにおける特定の命令によって例外が発生すること、及び例外処理には前記対象プロセッサの状態プログラム・カウンタ値とその他の状態が必要になること、を前記トランスレータが決定する場合に行われ、
    当該正確度レベルがレベル0から3の順に高くなり、当該正確度レベルが、
    例外処理時に、対象プロセッサの状態全く必要としないレベルであるレベル0、
    例外処理時に、最新の既知のスタック・フレームであることを必要とするレベルであるレベル1、ここで前記最新の既知のスタック・フレームは、最新の既知のスタック・ポインタ値、ベース・ポインタ値、およびプログラム・カウンタ・レジスタ値の最新の既知の整合性のある値を含み、
    例外処理時に、現在の状態を反映し、対象プログラム・カウンタに対する正確なプログラム・カウンタ値であることを必要とするレベルであるレベル2、及び
    例外処理時に、対象レジスタ・バンクにおける修正された対象レジスタ値を含む正確な対象レジスタ値、及び対象プログラム・カウンタに対する正確なプログラム・カウンタ値であることを必要とするレベルであるレベル3、
    である、前記選択すること、
    前記選択された正確度レベルに対応付けられた動作を実行することで、前記検出された例外を処理することであって、前記正確度レベルに対応して、
    前記正確度レベルがレベル0の時にはプログラム・カウンタ値及び対象レジスタ値をロードしないような動作が行われ、
    前記正確度レベルがレベル1の時には前記最新の既知のスタック・フレームを与え、但し対象レジスタ値の修正をしないような動作が行われ、
    前記正確度レベルがレベル2の時には前記最新の既知のスタック・フレームを与え、且つ、前記正確なプログラム・カウンタ値を設定するような動作が行われ、但し対象レジスタ値の修正をしない、
    前記正確度レベルがレベル3の時には前記正確な対象レジスタ値、及び前記正確なプログラム・カウンタ値を設定するような動作が行われる、
    前記処理すること
    を実行する、前記プロセッサと
    を備えている、前記トランスレータ装置。
  3. トランスレータによって対象プログラム・コードを目的コードにトランスレーションしながら、当該目的コードを実行する間に直面する例外を処理するコンピュータ・プログラムであって、前記トランスレーションされた目的コードを実行する目的プロセッサとメモリとを備えているコンピュータに、請求項1に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
JP2006518322A 2003-07-04 2004-06-22 トランスレータによって対象プログラム・コードを目的コードにトランスレーションしながら、目的コードを実行する間に直面する例外を処理する方法並びにそのトランスレータ装置及びコンピュータ・プログラム Expired - Fee Related JP5284585B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB0315844.1 2003-07-04
GBGB0315844.1A GB0315844D0 (en) 2003-07-04 2003-07-04 Method and apparatus for performing adjustable precision exception handling
GB0322953A GB2403563B (en) 2003-07-04 2003-10-01 Method and apparatus for performing adjustable precision exception handling
GB0322953.1 2003-10-01
PCT/GB2004/002653 WO2005006106A2 (en) 2003-07-04 2004-06-22 Method and apparatus for performing adjustable precision exception handling

Publications (3)

Publication Number Publication Date
JP2007525737A JP2007525737A (ja) 2007-09-06
JP2007525737A5 JP2007525737A5 (ja) 2013-05-23
JP5284585B2 true JP5284585B2 (ja) 2013-09-11

Family

ID=33554172

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006518322A Expired - Fee Related JP5284585B2 (ja) 2003-07-04 2004-06-22 トランスレータによって対象プログラム・コードを目的コードにトランスレーションしながら、目的コードを実行する間に直面する例外を処理する方法並びにそのトランスレータ装置及びコンピュータ・プログラム

Country Status (10)

Country Link
US (1) US7685579B2 (ja)
EP (1) EP1644829A2 (ja)
JP (1) JP5284585B2 (ja)
KR (1) KR101103973B1 (ja)
CN (1) CN1813242B (ja)
GB (2) GB0315844D0 (ja)
HK (1) HK1068701A1 (ja)
IL (1) IL172828A (ja)
TW (1) TWI340916B (ja)
WO (1) WO2005006106A2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7313790B2 (en) * 2003-06-23 2007-12-25 Intel Corporation Methods and apparatus for preserving precise exceptions in code reordering by using control speculation
US7849467B2 (en) * 2005-01-06 2010-12-07 Hewlett-Packard Development Company, L.P. Handling a signal at an application context that employs a remote kernel service
GB2425372B (en) 2005-04-20 2007-06-13 Transitive Ltd Method and apparatus for precise handling of exceptions during program code conversion
US7577945B2 (en) * 2005-05-26 2009-08-18 Hewlett-Packard Development Company, L.P. Memory mapped lazy signal blocking
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
US7389426B2 (en) 2005-11-29 2008-06-17 Research In Motion Limited Mobile software terminal identifier
DE602005019307D1 (de) * 2005-11-29 2010-03-25 Research In Motion Ltd Überprüfung von drahtloser Zugangssoftware mittels Hashing von Kennungen
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
WO2008068519A1 (en) 2006-10-02 2008-06-12 Transitive Limited Computer system and method of adapting a computer system to support a register window architecture
GB0623276D0 (en) 2006-11-22 2007-01-03 Transitive Ltd Memory consistency protection in a multiprocessor computing system
GB2448523B (en) * 2007-04-19 2009-06-17 Transitive Ltd Apparatus and method for handling exception signals in a computing system
US8146085B2 (en) 2007-06-25 2012-03-27 Microsoft Corporation Concurrent exception handling using an aggregated exception structure
US7861072B2 (en) * 2007-06-25 2010-12-28 Microsoft Corporation Throwing one selected representative exception among aggregated multiple exceptions of same root cause received from concurrent tasks and discarding the rest
US8146106B2 (en) * 2007-12-31 2012-03-27 Intel Corporation On-demand emulation via user-level exception handling
US8633936B2 (en) * 2008-04-21 2014-01-21 Qualcomm Incorporated Programmable streaming processor with mixed precision instruction execution
GB0813833D0 (en) 2008-07-29 2008-09-03 Transitive Ltd Apparatus and method for handling page protection faults in a computing system
JP5967772B2 (ja) * 2010-02-11 2016-08-10 エイブリィ デニソン コーポレーション 新規のアンビル構造を備えたプラスチックファスナーを繰り出すハンドツール
WO2013048328A1 (en) * 2011-09-30 2013-04-04 General Electric Company Systems and methods for self-referenced detection and imaging of sample arrays
CN103077073B (zh) * 2013-01-15 2016-12-28 华为技术有限公司 即时功能级仿真器的实现方法和装置及仿真处理器
US9733930B2 (en) * 2015-12-21 2017-08-15 Successfactors, Inc. Logical level difference detection between software revisions
US11995324B2 (en) * 2019-01-18 2024-05-28 The Trustees Of Columbia University In The City Of New York Methods and systems for fine granularity memory blacklisting to detect memory access violations

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778211A (en) * 1996-02-15 1998-07-07 Sun Microsystems, Inc. Emulating a delayed exception on a digital computer having a corresponding precise exception mechanism
US5958061A (en) 1996-07-24 1999-09-28 Transmeta Corporation Host microprocessor with apparatus for temporarily holding target processor state
US5764962A (en) * 1996-07-31 1998-06-09 Hewlett-Packard Company Emulation of asynchronous signals using a branch mechanism
US6052530A (en) * 1996-10-09 2000-04-18 Hewlett-Packard Co. Dynamic translation system and method for optimally translating computer code
US5838978A (en) * 1996-10-09 1998-11-17 Hewlett-Packard Company System and method of using annotations to optimize dynamically translated code in the presence of signals
US6128641A (en) 1997-09-12 2000-10-03 Siemens Aktiengesellschaft Data processing unit with hardware assisted context switching capability
US6898700B2 (en) 1998-03-31 2005-05-24 Intel Corporation Efficient saving and restoring state in task switching
US6131187A (en) 1998-08-17 2000-10-10 International Business Machines Corporation Method and system for translating exception handling semantics of a bytecode class file
US6308318B2 (en) * 1998-10-07 2001-10-23 Hewlett-Packard Company Method and apparatus for handling asynchronous exceptions in a dynamic translation system
US7065750B2 (en) * 1999-02-17 2006-06-20 Elbrus International Method and apparatus for preserving precise exceptions in binary translated code
JP4709394B2 (ja) * 1999-04-27 2011-06-22 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムコード変換において使用する例外処理の方法および装置
US6842811B2 (en) 2000-02-24 2005-01-11 Pts Corporation Methods and apparatus for scalable array processor interrupt detection and response
US20030101439A1 (en) 2001-11-29 2003-05-29 Giuseppe Desoli System and method for supporting emulation of a computer system through dynamic code caching and transformation
US7000226B2 (en) * 2002-01-02 2006-02-14 Intel Corporation Exception masking in binary translation
US7003762B2 (en) * 2002-08-01 2006-02-21 Sas Institute Inc. Computer-implemented exception handling system and method
US20040128658A1 (en) * 2002-12-27 2004-07-01 Guei-Yuan Lueh Exception handling with stack trace cache
JP4166096B2 (ja) * 2003-01-31 2008-10-15 芦森工業株式会社 シートベルトリトラクター
GB0309056D0 (en) 2003-04-22 2003-05-28 Transitive Technologies Ltd Block translation optimizations for program code conversion

Also Published As

Publication number Publication date
IL172828A (en) 2010-11-30
HK1068701A1 (en) 2005-04-29
US20050005265A1 (en) 2005-01-06
WO2005006106A2 (en) 2005-01-20
GB0322953D0 (en) 2003-11-05
EP1644829A2 (en) 2006-04-12
KR20060029178A (ko) 2006-04-04
GB2403563A (en) 2005-01-05
IL172828A0 (en) 2006-06-11
CN1813242A (zh) 2006-08-02
GB2403563B (en) 2005-11-23
WO2005006106A3 (en) 2005-08-25
TWI340916B (en) 2011-04-21
KR101103973B1 (ko) 2012-01-06
GB0315844D0 (en) 2003-08-13
US7685579B2 (en) 2010-03-23
JP2007525737A (ja) 2007-09-06
TW200513967A (en) 2005-04-16
CN1813242B (zh) 2010-04-28

Similar Documents

Publication Publication Date Title
JP5284585B2 (ja) トランスレータによって対象プログラム・コードを目的コードにトランスレーションしながら、目的コードを実行する間に直面する例外を処理する方法並びにそのトランスレータ装置及びコンピュータ・プログラム
JP5182815B2 (ja) プログラム・コード変換において例外を正確に処理するための方法、並びにその装置及びコンピュータ・プログラム
JP5077605B2 (ja) コンピュータ・システムにおいて例外信号を処理するための装置及び方法
US8458674B2 (en) Method and apparatus for handling exceptions during binding to native code
US9495136B2 (en) Using aliasing information for dynamic binary optimization
US7500230B2 (en) Raising native software code
Dam et al. Machine code verification of a tiny ARM hypervisor
US9129062B1 (en) Intercepting subroutine return in unmodified binaries
KR101244069B1 (ko) 프로그램 코드 변환시 정밀한 예외 핸들링을 위한 방법 및장치
US8286144B2 (en) Administering a process filesystem with respect to program code conversion
Dodge et al. A study of initialization in Linux and OpenBSD
Paul et al. A Generic Operating System Kernel
Hsu A robust foundation for binary translation of X86 code
US20070169062A1 (en) Suspending memory analyzing of a program performed by a runtime memory analysis system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070621

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070621

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

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100303

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100519

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100910

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100910

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110719

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110719

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110725

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20111007

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120322

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130307

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20130307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130405

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20130405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130509

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20130509

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130530

LAPS Cancellation because of no payment of annual fees