JP2015511041A - ネスト構造化されたエミュレーションおよび動的リンキング環境 - Google Patents

ネスト構造化されたエミュレーションおよび動的リンキング環境 Download PDF

Info

Publication number
JP2015511041A
JP2015511041A JP2015500737A JP2015500737A JP2015511041A JP 2015511041 A JP2015511041 A JP 2015511041A JP 2015500737 A JP2015500737 A JP 2015500737A JP 2015500737 A JP2015500737 A JP 2015500737A JP 2015511041 A JP2015511041 A JP 2015511041A
Authority
JP
Japan
Prior art keywords
library
call
isa
additional
source
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
Application number
JP2015500737A
Other languages
English (en)
Other versions
JP5976917B2 (ja
Inventor
ジョーン,シュエリヤーン
リー,ジエンホゥイ
チェン,ジエンピーン
リー,ティーンタオ
ウー,ヨーン
タン,ウエン
リン,シヤオドーン
Original Assignee
インテル コーポレイション
インテル コーポレイション
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 インテル コーポレイション, インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2015511041A publication Critical patent/JP2015511041A/ja
Application granted granted Critical
Publication of JP5976917B2 publication Critical patent/JP5976917B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本発明を実施するための様々な実施例は、ソース側アプリケーションとソース側エミュレータのためのネスト構造化されたエミュレーションを含んでいる。ソース側ISAライブラリーを複製すると、ソース側エミュレータによるライブラリー呼び出しは、ターゲット側ライブラリーへとリダイレクトされるので、ネイティブなエミュレータが第1のISAと第2のISAとのに間における適切なエミュレーション経路を通じてエミュレートを実行することを強要することが可能となる。本発明に係るその他の実施例は、PLTコードのエミュレーションを介して処理される代りに、PLTコードを変換する必要なしに直接呼び出される特定の関数を呼び出すべき旨を決定することにより高速化される動的リンキング技術と関係がある。本発明に係る幾つかの実施例は、ネスト構造化されたエミュレーション技術および高速化された動的リンキング技術の両方の実現に取り組むものであるが、本発明に係るその他の実施例は、ネスト構造化されたエミュレーション技術および高速化された動的リンキング技術のうちの一方を含んでいる。それ以外の実施例も本明細書中に記述されている。

Description

コンピューティング装置はその命令セット・アーキテクチャ(ISA)によって特徴付けられることが可能である。典型的には、コンピューティング装置はオペレーティング・システム(OS)サービスを含むことが可能であり、OSサービスはランタイム・ライブラリ(LIB)サービスを含むことが可能であり、当該ランタイム・ライブラリ・サービスは、アプリケーション開発者がコンピューティング装置上で動作するアプリケーションを開発するのを助けるためにコンピューティング装置のISAのために開発されたサービス機能である。アプリケーションがコンピューティング装置用のISA以外のISAに関して書かれている場合、アプリケーションはエミュレーションにより実行されることが必要であろう。具体的には、エミュレーションは、(第2のISAを使用する)コンピューティング装置のアーキテクチャー上で(第1のISAのために書かれた)アプリケーションが実行されることを可能にする。アプリケーション内においてISAに依存した部分は、ソース側LIBサービスに対する関数呼び出しを含むことが可能であり、当該呼び出し元LIBサービスは、ターゲット側LIBサービスを使用することによりエミュレートする必要がある。さらに、アプリケーション内においてISAに依存した部分はコールバック関数を含むことが可能である(例えば、ISAに依存するランタイム・ライブラリ(LIB)からエミュレーションにより実行されているアプリケーションに対してコールバックを行う関数、またはエミュレートされることを必要とする呼び出し元LIBサービスに対してコールバックを実行する関数など)。そのようなコールバック呼び出しの必要性はランタイム実行時まで発見されない可能性があるので、2種類のISA間を橋渡し(ブリッジング)しようとする際に、従来型のアプローチ(例えばバイナリ変換)は有効ではなくなってしまう。
上記のようなアプリケーションを実行するために、そのアプリケーションはリンクされることが必要となる場合があり得る。リンク処理は相互接続参照(例えばアプリケーションによって呼び出されたライブラリ・ルーチン間の相互接続)を解決することにより、コンパイル済みモジュール(例えばライブラリ)から実行可能プログラムを生成する。このリンク解決処理(本明細書中では時として「ローディング処理」とも呼ばれる)は、バイナリ変換システム(BT)によって動的に(ダイナミックに)実行されることが可能である。動的リンキングは、プログラムが実行を開始するまでリンク解決処理プロセスにおける多くの部分の実行を延期する。動的リンカーは、実行可能プログラムが実行される際に、実行可能プログラムのために共有ライブラリをロードし、リンクするOS機能の一部とすることが可能である。本発明に係る技術内容は、アプリケーションからのライブラリー呼び出し先をダイナミック・リンクされるライブラリ・モジュールへと向けるために、プロシージャ・リンク・テーブル(PLT)、グローバル・オフセット・テーブル(GOT)および間接的ジャンプ命令を使用することが可能である。
本発明に係る実施例は、添付図面によって図示されるように、本発明の技術的範囲を制限する趣旨ではなく典型的な実施例を単に例示するという趣旨で記述され、添付図面中において、同様の参照符号は同様の構成要素を表わす。
本発明に係る実施例に従ってISA間を橋渡し(ブリッジング)する処理機能を含むコンピューティング装置を示す図。 図1に示すISA間ブリッジング層をより詳細に示す図。 本発明に係る実施例に従い、ソース側ISAのアプリケーションとターゲット側ISAのライブラリ・サービスとの間における呼び出しおよびコールバックをブリッジングする方法を示すフロー図。 本発明に係る実施例に従い、ソース側ISAのアプリケーションとターゲット側ISAのライブラリ・サービスとの間における呼び出しおよびコールバックをブリッジングする方法を示すフロー図。 本発明に係る一実施例に従って実施されるBTシステムを示す図。 本発明に係る実施例に従い、動的リンキングの実行を高速化するための方法を示すフロー図。 本発明に係る実施例に従い、動的リンキングの実行を高速化するための疑似プログラム・コードを示す図。
以下において、本発明に係る様々な処理動作は、本発明に係る例示的な実施例の理解のために非常に有用な方法に従って、多数の離散的な処理動作として順番に後述されるであろう。しかしながら、本明細書中において一連の処理動作が記述される順序は、これら一連の処理動作が必ずしも実行順序に依存したものであると解釈されるべきではない。特に、これら一連の処理動作は、本明細書および添付図面の記載中で提示された順序のとおりに実行されなくてはならない必要性はない。さらに、一連の処理動作を離散的な処理動作として記述していることは処理動作の各々が、必ずしも独立しておよび/または別個の実行主体によって実行される必要があると解釈されるべきではない。同様に、別個のモジュールとしての実行主体および/または機能モジュールに関する記述は、そのような機能モジュールが、別個に設けられおよび/または別個の処理動作を実行する必要があると解釈されるべきではない。本発明に係る様々な実施例中において、添付図面で図示されおよび/または本明細書中で後述される処理動作、実体、データおよび/または機能モジュールは、併合され、さらに小さな構成部分へと分解され、および/または省略されることが可能である。用語「実施例」は本明細書中で繰り返し使用され、当該用語は、一般的な場合には、同一の実施例を指して言うものではないが、場合によっては同一の実施例を指して言うこともあり得る。用語「具備する」、「有する」および「含む」は、文脈上そうではないことが明らかでない限り、互いに同意語である。表記「A/B」は「AあるいはB」を意味する。表記「Aおよび/またはB」は、「A」、「B」または「AとB」のいずれかを意味する。表記「A、BおよびCの中の少なくとも一つ」は「A」、「B」、「C」、「AとB」、「AとC」、「BとC」および「AとBとC」を意味する。
本発明に係る様々な実施例は、ソース側アプリケーションおよびソース側エミュレータのためのネスト構造化されたエミュレーション処理を含んでいる。ソース側ISAライブラリを複製すると、ソース側エミュレータ・ライブラリ呼び出しをターゲット側ライブラリにリダイレクトすることとなるので、ネーティブなエミュレータが第1のISAと第2のISAとの間における適切なエミュレーション・チャネルを介して実行されることを強制することが可能となる。本発明に係るその他の実施例は、PLTコードのエミュレーションを介して処理される代りに、PLTコードを変換する必要なしに直接呼び出される特定の関数を呼び出すべき旨を決定することにより高速化される動的リンキング技術と関係がある。本発明に係る幾つかの実施例は、ネスト構造化されたエミュレーション技術および高速化された動的リンキング技術の両方の実現に取り組むものであるが、本発明に係るその他の実施例は、ネスト構造化されたエミュレーション技術および高速化された動的リンキング技術のうちの一方を含んでいる。
図1は、一実施例に従い、ISA間を橋渡し(ブリッジング)する処理機能を含む(任意付加的にコールバック機能もさらに含む)例示的なコンピューティング装置を示す。コンピューティング装置102は、プロセッサー、メモリ素子配列104を含むことが可能であり、図中に示すように(直接的または間接的に)相互に結合しているOS122、ISA間ブリッジング層123、アプリケーション120、グラフィック処理ユニット(GPU)106、ディスプレー装置108およびネットワーク・インターフェース110は、当該プロセッサとメモリ素子配列に含まれているか当該プロセッサ及びメモリ素子配列と結合している。OS122は、サービスのライブラリ124(ライブラリ127およびライブラリ128へと細分されており、包括的にシンボル「A」乃至「H」を含んでいる)を含むことが可能である。コンピューティング装置102は、アプリケーション120とOS 122との間において任意付加的なミドルウェア121を含むようにすることが可能である。以下においてより詳細に後述するとおり、ISA間ブリッジング層123は、様々なランタイム特性およびサービス(例えば、動的なバインディング処理を含むがこれに限定はされない)によって構成されることが可能であり、それによって、(ライブラリ・サービス124を含む)OS122がソース側ISAとは異なるターゲット側ISAにおいて実装されている可能性がある場合であっても、(例えばISAに依存しないミドルウェア121がさらに使用される場合に)アプリケーション120の全体またはその一部がソース側ISAにおいて実装されることが可能となる。さらに、アプリケーション120は、ライブラリ・サービス124の使用に関する特性を含んでいるアプリケーション(特に、ソース側ISAを使用して実装されたアプリケーション部分)とすることが可能であり、当該ライブラリ・サービスの使用に関する特性は、様々な条件の下でのアプリケーション120の様々なコールバック関数125をコールバック呼び出しするライブラリ・サービス124の様々な構成要素(例えば関数)を必要とする。ISA間ブリッジング層123はさらに、本明細書中においてプロセス・バーチャル・マシン(PVM)とも呼ばれ得る。
コンピューティング装置102はサーバ機器、デスクトップ型コンピュータ、ラップトップ型コンピューター、タブレット型コンピューター、スマートフォン、携帯情報端末、ゲーム機、インターネット・アプライアンス、モバイル・インターネット装置、携帯電話、モバイル・ネットワーク装置、モバイル・コンピューティング・ノードあるいはその他のコンピューティング装置とすることが可能である。プロセッサーとメモリ素子配列104は、広範な種類のプロセッサーとメモリ素子の配列を表す。様々な実行速度および電力消費量を有する単一コア構造またはマルチコア構造のプロセッサーおよび様々なアーキテクチャー(例えば1レベル以上のキャッシュを備えた)および様々なタイプ(例えばダイナミック・ランダム・アクセス・メモリなのか、フラッシュ・メモリなのか等)のメモリを備えたシステム構成を含んでいる。本発明に係る様々な実施例において、GPU106は、ビデオ復号化機能および/またはグラフィックス処理機能をOS122に対して提供するように構成されることが可能であり、他方、ディスプレー装置108は、マルチメディア・コンテンツ(例えばHDビデオ)をその画面上で描画処理することを可能にするように構成することができる。同様に、GPU 106およびディスプレー装置108は、当該技術分野において周知である広範なタイプのグラフィックス・プロセッサーおよびディスプレイ機能部を表わすように意図される。同様に、ネットワーク134は、当該技術分野において周知である広範なタイプのネットワークを表わすように意図される。ネットワーク134の具体例には、有線接続さされた又は無線のネットワーク、ローカルエリア網や広域網、プライベート網、インターネットを含む公衆網などが含まれ得る。ライブラリ・サービス124の起動手段を定義するアプリケーション・プログラミング・インターフェイス(API)を除いて、(ライブラリ・サービス124を含む)OS122は、当該技術分野において周知である広範なタイプのOS構成要素を表わしている。OS122は、メモリー資源を管理し、タスク実行をスケジューリングする等の機能を実行するように構成されたカーネルおよび様々なデバイス資源を管理するように構成されたデバイス・ドライバのような従来のコンポーネントを含むことが可能である。一実施例では、OS122は、任意付加的なミドルウェア121によるサポートの下でバーチャル・マシンを含むことが可能である(例えば、アンドロイド(登録商標)アプリケーション・フレームワークによるサポートの下で動作するアンドロイド(登録商標)バーチャル・マシンなど)。ライブラリ・サービス124の起動手段の定義に加えて、アプリケーション120のコールバック関数125を起動する仕組みを実現するために、ライブラリ・サービス124のAPIは、アプリケーション120のコールバック関数125の対応するスタブおよびシグネチャをさらに含むことが可能である。OS122の具体例には、Windows(登録商標)オペレーティング・システム、Linux(登録商標)、アンドロイド(登録商標)、iOS(登録商標)などが含まれ得る。同様に、任意付加的なミドルウェア121は、広範囲のミドルウェア構成要素を表わすように意図され、ISAに依存しないミドルウェアを含むが、これに限定はされない。ミドルウェア121の具体例には、アンドロイド(登録商標)アプリケーション・フレームワーク、Java(登録商標)、その他のアプリケーション・フレームワークあるいはISAに依存しない実行環境等が含まれるがこれらだけに限定はされない。同様に、アプリケーション120(コールバック関数125を含む)は広範なタイプのアプリケーションを表わし、パーソナル支援や生産性のためのアプリケーション、ソーシャル・ネットワーキング・アプリケーション、カレンダー機能アプリケーション、文書処理、スプレッド・シート、ツイッター(登録商標)、Facebook(登録商標)、ブラウザなどのアプリケーションを含んでいる。
図1の残りの構成要素は、図2に関する検討に続く以下の記述においてさらに議論される。
図2では、ISA間ブリッジング層123は、ISA間ブリッジング・ローダー202、ソース側ISAエミュレータ204およびターゲット側ISAライブラリー・エミュレータ206(これらは、動的バインディング・サービス機能を含む様々なランタイム特性およびサービス機能を提供するように構成されている)を含むことが可能である。ソース側ISAエミュレータ204は、ソース側ISAコンテキスト212およびバイナリ変換エンジン215を含むことが可能である。ソース側ISAエミュレータ204は、ソース側ISAコンテキスト212内において、ソース側ISAアーキテクチャーの実行コンテキストを維持することが可能であり、このような実行コンテキストには、現在実行中の命令を指す命令ポインター(IP)等が含まれる。バイナリ変換エンジン215は、ソース側のISA命令をターゲット側のISA命令に変換するように構成されることが可能である。LIBエミュレータ206は、ターゲット側ISA LIBコンテキスト222、ゲート224(例えば、プロセッサーによって使用されるデータ構造であって、特権モードで実行されるべき機能へのアクセスを制御するために、あるいはデータ・セグメントや切り替えテーブルなどを変更するなどのために使用されるデータ構造)およびラッパー関数226を含むことが可能である。LIBエミュレータ206は、ターゲット側ISA LIBコンテキスト222内においてターゲット側ISAライブラリー124の実行コンテキストを維持することが可能である。本発明に係る様々な実施例においては、全てのライブラリ・サービス124の各々について、ゲート224とラッパー関数226から成る対応するペアが存在することが可能であり、当該ペアは、ソース側ISAアーキテクチャとターゲット側ISAアーキテクチャーとの間を跨いでアプリケーション120によってライブラリ・サービス124を呼び出すための仕組みを実現するように構成されている。同様に、コールバック関数125の各々について、ゲート224およびラッパー関数226から成る一つの対応するペアが存在することが可能であり、ソース側ISAアーキテクチャとターゲット側ISAアーキテクチャーとの間を跨いでライブラリ・サービス124によってコールバック関数をコールバック呼び出しするための仕組みを実現するように構成されている。
ISA間ブリッジング・ローダー202は、メモリー上にアプリケーション120をロードするように構成されたユーティリティとすることが可能である。アプリケーション120をロードする際に、ISA間ブリッジング・ローダー202は、ソース側アプリケーション120に対応するライブラリと関係付けられているアプリケーション120内の任意の未解決シンボル126をアドレス解決するように構成されることが可能である。一つのシンボルは、レジスタ、メモリ・アドレスなどの識別子(例えばテキスト文字列)とすることが可能である。ISA間ブリッジング・ローダー202は、シンボルを(コールバック関数125へと)修正し、コールバック関数125に関するシンボルを、対応するラッパー関数226と関連付けるように構成されることが可能である。ISA間ブリッジング・ローダー202は、バイナリ形式に基づく制御転送機能の使用を含む数多くの周知な手法の中のいずれか一つの手法に従って、OS122(あるいはもし使用されている場合には、ミドルウェア121)のローダー(図示せず)からロードを実行するための制御を獲得することが可能であり、あるいは、OS122あるいはミドルウェア121によってサポートされている場合には、変数をロードまたは事前ロードすることが可能である。本発明に係るその他の実施例においては、上記の仕組みの代わりに、OS122(あるいはもし使用されている場合には、ミドルウェア121)のローダーは、ISA間ブリッジング・ローダー202への制御の受け渡しの仕組みを実現するために修正されることが可能である。
ソース側ISAエミュレータ204は、ソース側ISAアプリケーション120を実行するためにターゲット側ISA122の上においてソース側ISAアプリケーション120をエミュレートすることが可能である。以前に記述されるように、ソース側ISAエミュレータ204は、ソース側ISA実行コンテキスト212を維持するように構成されることが可能である。例えば、ソース側ISAエミュレータ204は、アプリケーション120の実行中においてソース側ISAのIP(命令ポインター)を追跡するように構成されることが可能である。アプリケーション120がライブラリ・サービス124を起動しようとを試みる場合、ソース側ISAエミュレータ204はソース側のISA実行をモニタリングし続けることが可能であり、その代わりに、LIBエミュレータ206を起動し、LIBエミュレータ206に実行制御を転送することが可能である。本発明に係る様々な実施例においては、ソース側ISAエミュレータ204は、ライブラリ・サービス124の対応するゲート224(以下においてさらに議論される)を起動し、ゲート224に実行制御を転送することが可能である。
LIBエミュレータ206は、ターゲット側LIB124に対して写像する動作を介して、ソース側LIB(あるいはその他のLIB)をエミュレートすることが可能である。さらに、LIBエミュレータ206は、ターゲット側ISAライブラリー(LIB)の実行コンテキスト222を維持するように構成されることが可能である。ライブラリ・サービス124に対応するゲート224は、ライブラリ・サービス124および対応するラッパー関数226のそれぞれに向けて呼び出しをリダイレクトするように構成されることが可能であり、当該対応するラッパー関数は、当該呼び出しを処理し、セット・アップするラッパー関数である。コールバック関数125に対応するゲート224は、対応するラッパー関数226からソース側ISAエミュレータ204に対してコールバック呼び出しのための実行制御を転送するように構成されることが可能である。本発明に係る様々な実施例においては、ゲート224はそれぞれ、対応するラッパー関数226あるいはソース側ISAエミュレータ204へのリダイレクト動作を有効化するように構成された命令を含むことが可能である。本発明に係る様々な実施例においては、各ゲート224の指示は、実行制御の転送を有効にするために、バイナリ変換エンジン215と協働するように構成されたソース側ISA命令とすることが可能である。本発明に係る様々な実施例においては、各ゲート224は、対応するラッパー関数226を識別する表示情報をさらに含むことが可能である。
本発明に係る様々な実施例においては、対応するライブラリ・サービス124に呼び出しを処理し、セット・アップするために、ライブラリ・サービス124に対応するラッパー関数226の各々は、ソース側ISAコンテキスト212からの呼び出しの関連するパラメータ値を検索し、当該呼び出しをソース側ISAのアプリケーション・バイナリー・インターフェース(ABI)フォーマットからターゲット側ISAのABIフォーマットへと変換し、当該変換された呼び出しを、当該パラメータ値と共に、LIBコンテキスト222内に保存するように構成されることが可能である。コールバック関数125へのコールバック呼び出しに際して、実行制御はコールバック関数125の対応するラッパー関数226に転送されることが可能である。本発明に係る様々な実施例においては、アプリケーション120のコールバック関数125へのコールバック呼び出しを処理し、セット・アップするために、コールバック関数125に対応するラッパー関数226の各々は、当該コールバック呼び出しを、ターゲット側ISAのABIフォーマットからソース側ISAのABIフォーマットへと変換し、当該コールバック呼び出しと関連するパラメータ値を添付し、ソース側ISAコンテキスト212内に当該パラメータ値と共に当該変換されたコールバック呼び出しを保存するように構成されることが可能である。コールバック関数125に対応するゲート224は、ターゲット側ISA104の上でソース側ISAフォーマットによって提示されたコールバック関数をエミュレートするために、ソース側ISAコンテキスト212(ラッパー関数226によって準備され、コールバック関数125に対応している)を使用してソース側ISAエミュレータ204を起動するように構成されることが可能である。
図1および図2の両方を参照すると、幾つかのアプリケーション環境では、ISA間ブリッジング層123は、システム・ローダ160の処理動作を妨げてしまう可能性がある。システム・ローダは、ターゲット側ISA122上のLIBサービス124と対を成すものとしてソース側ISA120上のLIBサービスの一部として提供されることが可能である。システム・ローダ160はアプリケーション120だけのための専用のローダではないが、その代り、アプリケーション120のシステム階層において様々なコンポーネント(例えば多数のアプリケーション)と共に動作する。ISA間ブリッジング層123は、アプリケーション120からシステム・ローダ160への関数呼び出しを遮って横取りし、ISA間ブリッジング・ローダ202へとそのような呼び出しをリダイレクトすることが可能であり、ISA間ブリッジング・ローダ202によって、ソース側アプリケーション120は、本来のターゲット側ライブラリであるはずのライブラリにリンクされる代わりに、ISAゲート224へとリンクされる。実行時において、アプリケーション120が(ソース側ISA120上に、あるいは他の場所に位置する)ライブラリーを呼び出す場合、ISAゲート224は、ターゲット側ISA122上において意味論的に同一となるライブラリー124に対して実行制御を転送する。しかしながら、幾つかの事例においては、アプリケーション120(例えば、LIBmono)は、(例えば、ライブラリをロードするための)自分専用のローダー131に依存し、かつ不確定のシンボル126をアドレス解決するように構成されることが可能である。そのようなローダーはエミュレータ130および/またはアプリケーション120のための専用のローダーであり、システム・ローダ160の代わりに、あるいは当該システム・ローダに追加する形で機能することが可能である。ISA間ブリッジング層123は、ローダー131をモニタリングするようには構成されない場合もあり得る(あるいはローダー131が存在する事すら知らない場合もあり得る)。その結果、アプリケーション120は、ターゲット側ライブラリーLIB1 127(アプリケーション120によって最初にターゲット側ライブラリとされたライブラリ名と同一の名前を有するライブラリあるいはシンボルを有する可能性もある)に対して直接的にリンクすることを試みる場合がある。実行時において、ISA間ブリッジング層123が、ローダー131(それはシステム・ローダ160とは異なる呼び出しを使用してもよい)を遮ることができない場合が起こり得る。これは、ローダー131の不正な動作により、エミュレータ204およびエミュレータ206が迂回され、ターゲット側ISAライブラリーLIB1 127が不正にロードされ、ターゲット側ライブラリLIB1 127が不正にリンクされる結果となり、アプリケーションが不適切に実行されるという結果に帰着する。
この問題に対処するために、本発明に係る実施例は、エミュレータ130およびアプリケーション120のために、ネスト構造化された(つまり多重階層化された)エミュレーションの仕組みを実現する。一例においては、アプリケーション120(エミュレーション層3)はエミュレータ130(エミュレーション層2)によってエミュレートされ、エミュレーション層2はさらに、ISA間ブリッジング層123(エミュレーション層1)によってエミュレートされ、エミュレーション層1はさらに、ターゲット側ISA122(エミュレーション層0)の上に存在する。
一つの実施例は、エミュレータ130によってロードされる特別のソース側ISAライブラリー140(ライブラリーLIB1 141とLIB2 142を含む)を含んでいる。図1に示されるように、ソース側ISA120は未定義のシンボル126「A」、「B」、「C」および「D」を含んでいる。ライブラリーLIB1 141とLIB2 142は対応するターゲット側ライブラリ127および128と同一のライブラリ名(同一の関数名を含む)を使用している可能性がある。例えば、ソース側ISAライブラリー141およびターゲット側ISAライブラリ127の両者は「LIB1」と命名され、両者は、「A」、「B」、「C」および「D」という名前の関数を含んでいる。エミュレータ130が未定義のシンボル126「A」、「B」、「C」および「D」をアドレス解決しようとする場合、それは特別のライブラリ141の中から対応するシンボルを見つけ出す。続いて、エミュレータ130は、例えば、シンボル「A」のような、その未定義のシンボルを特別のライブラリLIB1 141内から見つけ出された対応するシンボル「A」とリンクする。関数「A」、「B」、「C」および「D」の各々に関して、上述した特別のライブラリLIB1 141は(これに加えて、関数「E」、「F」、「G」および「H」に関するLIB2 142も同様に)、実際の関数の代理として機能する関数のためにゲートを実装する(ゲート251およびゲート252を参照されたい)。例えば、関数「A」は、ライブラリ141に関数「A」のためのISAゲート(関数「A」の実体は含んでいないがゲートを含んでおり、ゲート251として図示されているゲート「A」を参照)を単に含んでいるだけであり、当該ISAゲートは、ターゲット側ISA122上において意味論的に同一であるライブラリーLIB1 127へと実行制御を転送する。一つの実施例では、特別のソース側ISAライブラリ140は単にISAゲートを含んでいるだけである。
図1に示すように、本発明に係る一つの実施例においては、ISAゲートは別個のライブラリ141と142に組織化され、当該ISAゲートはオンデマンドでロードされることが可能である。例えば、LIB2 142に対応する関数がアプリケーション120にとって必要な場合に、それを必要とする時点において、エミュレータ130は、LIB2 142(または、その他のライブラリ)がロードされるのを待っている間に、LIB1 141だけをロードする(すなわち、リンクする)ことが可能である。。
図3および図4は、本発明に係る実施例に従って、コールバック呼び出しを使用してISA間を橋渡し(ブリッジング)するための例示的な方法を図示している。本発明に係る方法300は2つの構成部分を含むことが可能であり、第1の構成部分は、(ソース側ISAの)アプリケーション120から(ターゲット側ISAの)ライブラリ・サービス124への呼び出しを橋渡し(ブリッジング)するための部分300aであり、第2の構成部分は、(ターゲット側ISAの)ライブラリ・サービス124から(ソース側ISAの)アプリケーション120のコールバック関数125に対するコールバック呼び出しを橋渡し(ブリッジング)するための部分300bである。部分300aと部分300bとは、互いに無関係に実装されることが可能である。さらに、本発明に係る様々な実施例はラッパー関数および/またはコールバック関数と関連している必要はなく、しかし、その代りに、例えば特別のソース側ISAライブラリ141および142等のようなネスト構造化されたエミュレーションに関する他の技術的側面に焦点を当ててもよい。
図3に示すブロック302において、ISA間ブリッジング・ローダー202は、ソース側アプリケーション120をロードすることが可能である。上述したように、アプリケーション120をロードする際に、ISA間ブリッジング・ローダー202は、シンボル名あるいはライブラリ・サービス124への参照126をアドレス解決し、コールバック関数125のシンボル名あるいは参照を修正することが可能である。ブロック304では、実行過程において、アプリケーション120は、ライブラリ・サービス124のうちの一つを呼び出す。本発明に係る様々な実施例において、アプリケーション120は、呼び出されたライブラリ・サービス124によって自身のコールバック関数125の中の一つをコールバック呼び出しすることを必要とする場合があり得る。本発明に係る実施例において、アプリケーション120は、呼び出されたライブラリ・サービス124に対する呼び出し動作の一部として、コールバック関数125へのポインターを含むことが可能である。ポインターをコールバック関数125へと渡す代わりに、ライブラリ・サービス124のラッパー関数226は、コールバック関数125の対応するラッパー関数226を渡すことも可能である。ブロック305では、エミュレータ130は、ライブラリにリンクしようと試み、そのような試みを実行する中で、LIB1 141(それはLIB1 127と等しい名前が付けられている)に対してリンクする。LIB1 141は、ソース側ISAエミュレータ204に関数呼び出し(例えば、関数「A」に対する呼び出し)を転送するゲートを含んでいる。ブロック306では、(例えばソース側ISAのIP(命令ポインタ)のモニタリングし、当該IPがターゲット側ライブラリのアドレス範囲内にあるメモリ・アドレスを参照しているとを判断することを通じて)呼び出しを検知した際に、ソース側ISAエミュレータ204は、当該呼び出しを転送し、LIBエミュレータ206中のライブラリ・サービス124の対応するゲート224に実行制御を転送することが可能である。例えば、関数「A」に関して、LIB1 141のゲート「A」は、当該呼び出しをソース側ISAエミュレータ204へとリダイレクトし、続いて、ゲート251として図示されたゲート「A」にへとリダイレクトすることが可能である。ブロック308では、複数のゲート224からの適切な一のゲートは当該呼び出しをさらに呼び出されたライブラリ・サービス124の対応するラッパー関数226へとリダイレクトし、実行制御を当該ラッパー関数へと転送することが可能である。ブロック310では、上述したように、呼び出されたライブラリ・サービス124のラッパー関数226は、当該呼び出されたライブラリ・サービス124による実行のために、当該呼び出しを処理し、LIBコンテキスト222内において当該呼び出しをセット・アップすることが可能である。ブロック312では、当該呼び出されたライブラリ・サービス124のゲート224は、LIBコンテキスト222から当該呼び出しに対する返り値を収集し、ソース側ISAコンテキスト212を更新し、さらに、ソース側ISAエミュレータ202へと実行制御を転送することが可能である。
したがって、図3は、ネスト構造化されたエミュレーションの一形態を示しており、当該エミュレーション形態においては、アプリケーション(例えば、ゲーム)はエミュレータ(例えば、エミュレータ130)の上において実行され、当該アプリケーションは第1のISAに合わせてフォーマットされる。当該エミュレータは、ISA間ブリッジング層123の上において(つまり、ISA間ブリッジング層123によってネスト構造化されて)実行されることが可能であり、アプリケーションの透過的なバイナリ変換を行ない、第1のISAとは異なる第2のISAの上でエミュレータを実行する。これは、ISA間ブリッジング層123および一つ以上の特別のソース側ISAライブラリ(例えばライブラリ141とライブラリ142)を使用して達成され、これら特別のソース側ISAライブラリは、自分用のローダー131を使用して、エミュレータ130とリンクされる。エミュレータ130がライブラリを起動する際に、エミュレータ130は、ISAゲート(例えば図中の141と142に対応するゲート)を起動し、続いて、当該ISAゲートは、ゲート251およびゲート252を介して、ターゲット側ISAライブラリ127および128に対して関数呼び出しをマッピングする(上述したISAゲートは、複数のゲート224の一般的な集合体から成る個別のライブラリである)。本発明に係る実施例は、任意の階層数のエミュレーション層(例えば2層、3層、4層、5層など)をカバーするために拡張されることが可能である。各エミュレーション層は、(ISAゲートを含んでいるか又はISAゲートと結合している)特別のISAライブラリとリンクされ、それは、エミュレーション層の次の階層レベルへと転送される。
図4(上述した部分300b)に示すブロック404では、呼び出されたライブラリ・サービス124の実行過程において、あるいはその実行完了に際して、ライブラリ・サービス124は、(例えば、アプリケーション120から渡されたコールバック呼び出し用のポインターを呼び出すことによって)アプリケーション120のコールバック関数125をコールバック呼び出しすることが可能である。ブロック406では、実行制御は、上記のとおり修正された参照に従って、コールバック関数125の対応するラッパー関数226に転送されることが可能である。ブロック408では、上述したとおり、アプリケーション120のコールバック関数125による実行のために、ラッパー関数226は、コールバック呼び出しを処理し、ソース側ISAコンテキスト212内においてコールバック呼び出しをセット・アップし、それに続いて、コールバック関数125の対応するゲート224へと実行制御を転送することが可能である。ブロック410では、コールバック関数125に対応するゲート224はコールバック呼び出しを転送し、ラッパー関数226によって準備されたソース側ISAコンテキストと共にISAエミュレータに対して実行制御を転送することが可能である。ブロック412では、ソース側ISAエミュレータ204は、ソース側ISAコンテキスト内のIP(命令ポインタ)に従って、コールバック関数のエミュレーションを開始することが可能である。ブロック414では、コールバック関数125のゲート224は、ソース側ISAコンテキスト212からコールバック呼び出しの返り値を収集し、LIBコンテキスト222を更新し、実行制御をLIBエミュレータ204へと転送し、その結果として、ライブラリ・サービス124に対してコールバック関数125の返り値が返される。
本発明の理解を容易なものとするために、本発明に係る様々な実施例は、一つのターゲット側ISAに対して一つのソース側ISAを橋渡し(ブリッジング)する一つのISA間ブリッジング層123について記述されてきた。しかしながら、本明細書の開示はそのような実施態様だけに制限されていない。本発明に係る実施例においては、多数のISA間ブリッジング層123が、一つ又は複数のターゲット側ISAに対して多数のソース側ISAを橋渡し(ブリッジング)することが可能である。これらの実施例のうちの幾つかにおいては、ブリッジングが必要とされていることを検知するためにディスパッチャーが追加的に設けられ、必要なISA間ブリッジング機能を提供するために、一つ以上の適切なISA間ブリッジング層123をインスタンス生成することが可能である。さらに、本発明に係る様々な実施例においては、本開示は、必要とされるブリッジングの量を減らすために、(ソース側ISA内における)アプリケーション120の構成部分のために(ターゲット側ISA内における)バイナリーを置換する形で使用して実施されることが可能である。その他の実施例においては、ブリッジングに使用された資源のうちの幾つか(例えば、ラッパー関数のうちの幾つか)は、ISA間ブリッジング層123をアクセス可能なリモート・サーバ上に置かれることが可能である。さらに、本発明の理解を容易にするために、本明細書では、ISA間ブリッジング層123は、ソース側ISAを、それとは別個のターゲット側ISAへと橋渡し(ブリッジング)するように構成されるものとして記述されてきた。しかしながら、様々なアプリケーションに関して、ISA間ブリッジング層123は、互いに同一であるソース側ISAとターゲット側ISAとの間を橋渡し(ブリッジング)するために使用されることも可能である。そのようなアプリケーションにおいては、本明細書中で上述した構成要素(例えば、バイナリ変換エンジン215)の一つ以上は必須の構成要素ではないかもしれない。そのようなアプリケーションの一例は、コンピューティング装置102に機能拡張された動作セキュリティを提供するものなどだろう。その他のアプリケーションも同様に、そのようなブリッジング動作による恩恵を受けることが可能である。従って、本明細書の開示内容はコンピューティング装置の技術的問題の解決策とすることが可能であり、当該解決策によって、ある一つのISAが、全く別のISAのために開発されたアプリケーションをサポートすることが可能となり、当該アプリケーションは、時として呼び出されたライブラリ・サービスからのコールバック呼び出しを必要とする使用の特性を有する。本明細書の開示内容の技術的利点は、コンピューティング装置固有のISAにおけるアプリケーションを完全に翻訳する必要性を回避し、あるいはそのようなアプリケーションを実装しなおす必要性を回避することを含み得る。
本発明に係る実施例は、ネスト構造化されたエミュレーションあるいは上述されたその他の技術的特徴のいずれかのみに制限されてはいない。例えば、一つの実施例は高速化可能なBTエミュレーションによる動的リンキングと関係があり、これは、そのようなリンク処理を(例えば、実行速度の観点から)静的なリンク処理に匹敵するようにするためである。
従来式の動的リンキング・システムは、ライブラリとリンクされなくてはならないソース側ISAアプリケーション(例えば、アプリケーション120)と関係し得る。そのようにするために、当該アプリケーションは、(ライブラリを呼び出すために使用される)呼び出し元コード、(GOTを読み込むためのコードを含む)PLTコードおよび(未解決となっているシンボル位置および関数位置のリストを含み得る)GOTを使用することが可能である。ターゲット側ISAの上で走るアプリケーションをエミュレートするために、BTシステムは、実行可能プログラム・ローダー、変換処理部およびランタイム実行環境を使用することが可能である。上述したように、PLTおよびGOTに基づいた方法を使用する場合には、ダイナミック・リンクされたライブラリ内のターゲット側関数に対してアプリケーションからのライブラリー呼び出しを向けるために、間接的なジャンプが必要となるだろう。しかしながら、動的リンキングのための間接的なジャンプは静的なリンクと比較して、余分なランタイム・オーバーヘッドをもたらす。図5は動的リンキングを高速化するための実施例について記述し、そのような実施例は、BTシステム内において動的リンキング加速器(DLA)を使用して実行されることが可能である。
実行可能プログラム・ローダー520、変換処理部525およびランタイム実行環境530を含むBTシステム515は、ターゲット側ISA535上においてソース側ISAアプリケーション505をエミュレートする。実行可能プログラム・ローダー520は、ソース側ISAアプリケーション505およびアプリケーション505とダイナミックにリンクすべきソース側ISAライブラリ510をロードする。変換処理部525は、アプリケーション505からロードした複数の命令コードを変換単位526のような変換単位毎にグループ化し、各翻訳単位毎にソース側ISAからターゲットISAへのバイナリ変換を実行する。ランタイム実行環境530は、ターゲット側ISA535の上でバイナリ変換されたコードを実行するためのサポート環境および補助ライブラリ(図示せず)を提供する。
図5に示す実施例は、例えばDLAローダー521およびDLA最適化処理部527などを使用することにより、BTを機能拡張する。DLAローダー521は、ダイナミック・リンクされたライブラリーの各々のアドレス範囲を格納するためにライブラリー・アドレス範囲テーブル522を使用する。テーブル522は、アドレスの検証、および何れのライブラリー呼び出しを高速化すべきなのかを制御するために使用される。例えば、特定のシステム・ライブラリ(例えば、LIBcまたはLIBm)への呼び出しは高速化の対象とするのに好適な候補である。何故なら、これらのシステム・ライブラリは、ロードされると、アプリケーション505の実行中はロードされた状態をずっと維持しているからである。しかしながら、頻繁にロードされたりアンロードされたりするその他のユーザ・ライブラリ等は、何度も繰り返しロードされ又はアンロードされる動作を伴うので、反復的にバイナリ変換されることによる動作上のコストに起因して、高速化対象として好適な候補とはならない可能性がある。したがって、高速化対象として選ばれるライブラリー呼び出しがテーブル522内に格納される一方で、その他のライブラリー呼び出しはテーブル522内に格納されない。
以下においてさらに詳しく後述するように、DLA最適化処理部527は、ソース側ISAアプリケーション505におけるPLTコード507を解析し、ソース側ライブラリ511に関するアドレスを計算する。続いて、このアドレスは、テーブル522に格納されたアドレス範囲(例えば、LIBcはアドレス範囲0x4000-0x5000にある)と比較される。当該アドレスが何れかのアドレス範囲と合致する場合、それに続いて、DLA最適化処理部527は、PLTコード507をライブラリ関数への直接実行可能な呼び出しで置き換える。このDLA機能拡張により、PLTコードは、もはやBTシステム515内においてエミュレートされることはない。その結果、動的リンキングは静的なリンクと同じくらい速くなる可能性がある(そうでなくとも、少なくとも従来式の動的リンキングの実行速度と比べれば充分に改善される)。動的リンキングを実行するための実施例は、図6を参照しながら以下において詳細に検討される。
図6は、DLAローダー521およびDLA最適化処理部527を使用して、高速化された動的リンキングを実行する方法600を含んでいる。ブロック605では、ソース側ISAアプリケーション505がBTシステム515上で動作している場合に、実行可能プログラム・ローダー520はアプリケーション505、およびそのダイナミックにリンクされたライブラリ(例えば、LIBc、LIBm、LIBc++などを含むことが可能なライブラリ510)をロードする。ブロック610では、DLAローダー521は、ロードした各ライブラリのメモリ・アドレス範囲を記録し、ライブラリー・アドレス範囲テーブル522内に一つ以上のアドレスを格納する(例えば、LIBcはアドレス範囲0x4000-0x5000にある)。ブロック615では、変換処理部525は、アプリケーションのエミュレートされた実行フローに続いて、ロードしたコード505を一つ以上の変換単位(例えば図中の単位526)へとグループ化する。例えば、実行制御を転送すべき旨の命令に遭遇するまで、変換処理部525は一つの変換単位の中へ一つ以上の命令を追加することが可能である。実行制御の転送命令に遭遇した際には、変換処理部525は、実行制御の転送命令(例えば、図5のブロック526を参照)に関連したヒューリスティック情報や履歴情報に従って、実行制御転送命令のターゲット・アドレスの直後に続けて命令を連続的に追加することが可能である。グループ化の処理の実行中において、変換処理部525がコール命令(例えばCALL 0X123@PLT)に遭遇したならば、変換処理部525は、呼び出しのターゲット・アドレス(例えば、0X123)をDLA最適化処理部527に対して送信する。ブロック620では、DLA最適化処理部527は、呼び出しのターゲット・アドレス(例えば、0X123)がPLTコードに含まれているか否かを判断するために、コード・パターンのマッチング(以下においてさらに検討される)を使用する。呼び出しのターゲットがPLTコード中にあると判定された場合、DLA最適化処理部527は、PLTコードを計算し、GOT(図示されないが、コード505中に含まれている)から(例えば、メモリを割り当てるために関数呼び出しによって規定される「CALL malloc」などの)ライブラリ関数のアドレスを呼び出す。ブロック625では、DLA最適化処理部527は、アドレスの検証のためにDLAローダー521に対してこのライブラリ関数アドレスを送信する(図5の矢印529を参照)。ブロック630では、DLAローダー521は、DLA最適化処理部527から供給されたライブラリ関数アドレスをライブラリー・アドレス範囲テーブル522中の内容と比較し、それによって、当該供給されたアドレスが高速化の対象として正当な候補であることを検証する。上述した検証が一旦実行されたならば、ブロック635では、DLA最適化処理部527は、PLT507に対して本来の呼び出しをライブラリ関数511への直接呼び出しで置き換え、変換単位からPLTコードを取り除く(図中において変換単位526からのPLTコードを含んでいない変換単位528を参照)。その結果、PLTコードは、もはやBTシステム515によってエミュレート実行されることはない(それにより、エミュレーション実行によるオーバーヘッドを回避することが出来る)。
図7は、例えば、DLAローダー521、DLA最適化処理部527、および図6に示した方法600の一部を使用することにより、ダイナミック・リンクの高速化を実行するための疑似プログラム・コードを含んでいる。説明を簡単にするために、当該疑似プログラム・コードの全てのプログラム行が議論されるとは限らない。プログラム行706〜707は、コール命令およびそのターゲット・アドレスを認識する処理動作と関係している。プログラム行708では、ターゲット・アドレスおよびその周囲のアドレスがPLTコード内に位置している場合、当該呼び出しがPLTコード内をターゲットとしている可能性が高いことをこのパターン・マッチは示す。プログラム行709〜711では、適切なライブラリー・アドレスが見つかり、アドレス検証される。プログラム行712〜713では、PLTコードは直接呼出しと置き換えられ、それによって、PLTコードのエミュレーション実行による高い計算コストおよびそれに伴う間接的ジャンプやテーブル検索処理を回避することが可能となる。動的リンキングの実行に際して、ライブラリ関数アドレス計算のためにPLTとGOTを横断的に調べることはもはや必要とはされない。
本発明に係る実施例は、プログラム・コード中において実装されることが可能であり、命令を実行するようにシステムをプログラミングするために使用することが可能な命令コードが記録されている記憶媒体上に格納されることが可能である。当該記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、ソリッド・ステート・ドライブ(SSD)、コンパクト・ディスク(CD)を使用した読み出し専用メモリー(CD-ROM)、再書き込み可能コンパクト・ディスク(CD-RW)および光磁気ディスクを含む任意のタイプのディスク、読み出し専用メモリ(ROM)、ダイナミックRAM(DRAM)のようなランダム・アクセス・メモリー(RAM)、スタティックRAM(SRAM)、消去可能PROM(EPROM)、フラッシュ・メモリー、電子的に消去可能なPROM(EEPROM)のような半導体デバイス、磁気カードや光カード、あるいは電子的命令コードを格納するのに適したその他のタイプの媒体を含むがこれらだけに限定はされない。本発明に係る実施例は、命令、関数、プロシージャ、データ構造、アプリケーション・プログラム、構成設定、コードなどのデータとの関連において本明細書中で記述されることが可能である。当該データがマシンによってアクセスされる場合、本明細書中において詳細に述べたように、当該マシンは、タスクを実行し、抽象データ型を定義し、低レベル・ハードウェアの実行コンテキストを確立し、および/またはその他の処理動作を実行することによってこれに応答することが可能である。データは揮発性および/または不揮発性のデータ記憶装置内に保存されることが可能である。この開示の目的のために、「コード」や「プログラム」等の用語は、アプリケーション、ドライバ、プロセス、ルーチン、方法、モジュールおよびサブ・プログラムを含む広範なタイプのコンポーネントおよび構成物を包含すると解釈される。したがって、「コード」や「プログラム」等の用語は、処理システムによって実行された際に、一つ以上の所望の処理動作を実行する命令の任意の集合体を指して言うために使用されてもよい。さらに、代替的な実施例は、本明細書中に開示された全ての処理動作よりも少ない処理動作しか使用しない方法、追加の処理動作を使用する方法、上述した実施例と同一の処理動作を上述した実施例とは異なる実行順序で使用する方法、および本明細書中に示された個々の処理動作が組み合わせられ、細分化され、そうでなければ変更された方法を含むことが可能である。一つの実施例において、用語「制御ロジック」の使用は、トランジスター、レジスタあるいはその他のハードウェア回路(例えば、プログラミング可能論理回路(535)など)のようなハードウェアを含んでいる。しかしながら、さらに別の実施例では、制御ロジックは、ソフトウェアあるいはコード(531)をさらに含んでいる。そのような制御ロジックはファームウェアやマイクロコード(536)のようなハードウェア・ロジックに統合されることが可能である。プロセッサーやコントローラーは制御ロジックを含むことが可能であり、当該技術分野において周知である多種多様な制御論理のうちの任意のものを表わすように意図され、そのような制御ロジックは、好適には、マイクロ・プロセッサー、マイクロ・コントローラ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、プログラミング可能論理回路(PLD)などとして実装される。
図1を参照すると、一つの実施例に関して、少なくとも一つのプロセッサーとメモリ素子の配列104は、一緒にパッケージングにされることが可能であり、当該パッケージングにおいては、ISA間ブリッジング層123の計算論理(あるいはその部分集合)が図3、4、6および7に図示された方法の処理動作(あるいはその部分集合)を実行するように構成されている。一つの実施例に関して、少なくとも一つのプロセッサーとメモリ素子の配列104は、一緒にパッケージングにされることが可能であり、当該パッケージングにより、ISA間ブリッジング層123の計算論理(あるいはその部分集合)が図3、4、6および7に図示された方法の処理動作(あるいはその部分集合)を実行するためのシステム・イン・パッケージ(SIP)が形成される。一つの実施例に関して、少なくとも一つのプロセッサーとメモリ素子の配列104は、半導体チップの同じダイの上に統合実装されることが可能であり、当該ダイ上の実装においては、ISA間ブリッジング層123の計算論理(あるいはその部分集合)が図3、4、6および7に図示された方法の処理動作(あるいはその部分集合)を実行するように構成されている。一つの実施例に関して、少なくとも一つのプロセッサーとメモリ素子の配列104は、半導体チップの同じダイの上に統合実装されることが可能であり、当該ダイ上の実装においては、ISA間ブリッジング層123の計算論理(あるいはその部分集合)がシステム・オン・チップが形成される。少なくとも一つの実施例に関して、SoCは、デスクトップ型コンピュータ、ラップトップ型コンピューター、スマート・フォン、コンピューティング・タブレット、インターネット・アプライアンス、携帯情報端末(PDA)、ポータブル型ゲーム機器、サーバあるいはその他の計算装置において利用されることが可能である。
本発明に係る実施例は、少なくとも一つのプロセッサーにより実行される方法であって、当該方法は:ソース側命令セット・アーキテクチャ(ISA)を有するアプリケーションをロードするステップ;呼び出しがソース側ISAライブラリーに到達しないようにするために、ソース側ISAライブラリーのライブラリ・サービスについての前記呼び出しを第1のライブラリーへとリダイレクトするステップ;前記呼び出しを、第1のライブラリーからターゲット側ISAライブラリーのライブラリ・サービスへと向けるステップ;および、ターゲット側ISAライブラリーを介してアプリケーションをエミュレート実行するステップ;を含む。当該方法はアプリケーションに関する未定義のシンボルをアドレス解決するステップをさらに含むことが可能である。未定義のシンボルのアドレス解決は、第1のライブラリーの第1のゲートを介してターゲット側ISAライブラリーのターゲット側ゲートに間接的にリンクする動作を含む。第1のゲートは第1の名前を有することが可能であり、ターゲット側ゲートは、前記第1の名前を含むターゲット名を有することが可能である。例えば、(ファイル拡張子を無視するならば)名前は同一であるか、あるいは単に接頭辞や接尾辞などが異なるだけかもしれない。第1のライブラリーへの呼び出しのリダイレクト動作は、前記アプリケーション専用に設けられたエミュレータからの呼び出しをリダイレクトする動作を含むことが可能である。第1のライブラリーへの呼び出しのリダイレクト動作は、前記アプリケーション専用に設けられたエミュレータであって、汎用のシステム・ローダーではないエミュレータからの呼び出しをリダイレクトする動作を含むことが可能である。当該方法は、前記アプリケーションと関連した追加的なライブラリ・サービスの追加的な呼び出しを提供するステップであって、前記追加的な呼び出しは、プロシージャ・リンキング・テーブル(PLT)内に含まれているコードへと向けられている、ステップ;および、前記追加的な呼び出しを、直接実行可能な追加的呼び出しで置き換えるステップであって、前記直接実行可能な追加的呼び出しは、PLTを迂回しながらソース側ISAライブラリーおよび追加的なソース側ISAライブラリーの一方に対して直接的に実行される追加的呼び出しである、ステップ;を含むことが可能である。当該方法は、前記追加的な呼び出しに関するアドレスを識別するステップを含むことが可能であり;前記追加的な呼び出しの決定は、前記追加的な呼び出しに関する前記アドレスを前記識別した結果に基づいて、PLT内に含まれているコードに対して指示される。請求項1に係る方法は、アプリケーションと関連した追加的なライブラリ・サービスの追加的な呼び出しを提供するステップであって、前記追加的な呼び出しは、プロシージャのアドレス位置を特定するように構成されたコードへと向けられている、ステップ;および、前記追加的な呼び出しを、直接実行可能な追加的呼び出しに置き換えるステップであって、前記直接実行可能な追加的呼び出しは、プロシージャのアドレス位置を特定するように構成されたコードを迂回しながらソース側ISAライブラリーおよび追加的なソース側ISAライブラリーの一方に対して直接的に実行される追加的呼び出しである、ステップ;を含むことが可能である。
本発明に係る実施例では、装置は少なくとも一つのメモリおよび前記少なくとも一つのメモリに結合されている少なくとも一台のプロセッサーを具備しており、当該装置は、ソース側命令セット・アーキテクチャ(ISA)を有するアプリケーションをロードする動作;前記アプリケーションと関連したライブラリ・サービスのための呼び出しを提供する動作であって、追加的な呼び出しが、プロシージャのアドレス位置を特定するように構成されたコードへと向けられる、動作;前記呼び出しを、直接実行可能な呼び出しに置き換える動作であって、前記直接実行可能な追加的呼び出しは、前記プロシージャのアドレス位置を特定するように構成された前記コードを迂回しながらソース側ISAライブラリーに対して直接的に実行される追加的呼び出しである、動作;および、ターゲット側ISAライブラリを介して前記アプリケーションをエミュレート実行する動作;を具備する一連の処理動作実行する。前記プロシージャのアドレス位置を特定するように構成された前記コードは、プロシージャ・リンク・テーブル(PLT)内に含まれることが可能である。本発明に係る一実施例は:呼び出しのためのアドレスを識別する動作を具備する一連の処理動作を具備することが可能であり;前記呼び出しの決定は、前記呼び出しのためのアドレスを前記識別した結果に基づいて、PLT内に含まれているコードに対して指示される。本発明に係る一実施例は:追加的な呼び出しがソース側ISAライブラリーおよび追加的なソース側ISAライブラリーの一方に到達しないようにするために、ソース側ISAライブラリーおよび追加的なソース側ISAライブラリーの一方に関する追加的なライブラリ・サービスのための追加的な呼び出しを、第1のライブラリに対してリダイレクトする動作;および、第1のライブラリーからの追加的な呼び出しを、ターゲット側ISAライブラリーおよび追加的なターゲット側ISAライブラリーの一方へと向ける動作;を具備する一連の処理動作を実行することが可能である。本発明に係る一実施例は、アプリケーションに関する未定義のシンボルをアドレス解決する動作を具備する一連の処理動作を実行することが可能である。本発明に係る一実施例においては、未定義のシンボルのアドレス解決は第1のライブラリーのゲートを介してターゲット側ISAライブラリーおよび追加的なターゲット側ISAライブラリーのいずれか一方についてのゲートに対して間接的にリンクする動作を含む。一実施例においては、追加的な呼び出しのリダイレクト動作は、前記アプリケーション専用に設けられたエミュレータからの追加的な呼び出しをリダイレクトする動作を含む。 一実施例においては、追加的な呼び出しのリダイレクト動作は、前記アプリケーション専用に設けられたエミュレータであって、汎用のシステム・ローダーではないエミュレータからの追加的な呼び出しをリダイレクトする動作を含むことが可能である。
したがって、本発明に係る様々な実施例は、ソース側アプリケーションとソース側エミュレータのためのネスト構造化されたエミュレーションを含んでいる。ソース側ISAライブラリーを複製すると、ソース側エミュレータによるライブラリー呼び出しは、ターゲット側ライブラリーへとリダイレクトされるので、ネイティブなエミュレータが第1のISAと第2のISAとのに間における適切なエミュレーション経路を通じてエミュレートを実行することを強制することが可能となる。これは、適切なエミュレーション実行を結果としてもたらすという技術的利点を提供する。さらに、本発明に係る様々な実施例の技術的利点は、動的リンキングの効率および実行速度を高めるという点である。例えば、効率の改善は、間接のPLTとGOTに基づいて実行される方法の事前の使用と関連した間接的ジャンプによって達成される。
本明細書の開示内容がコンピューティング装置に対して強化されたセキュリティを提供するための技術的問題の解決策となり得ることは当業者であれば理解できよう。本明細書の開示内容の技術的利点は、実現される分離のロバスト性を含み得るが、これだけに制限されない。

Claims (20)

  1. 少なくとも一つのプロセッサーにより実行される方法であって:
    ソース側命令セット・アーキテクチャ(ISA)を有するアプリケーションをロードするステップ;
    呼び出しがソース側ISAライブラリーに到達しないようにするために、ソース側ISAライブラリーのライブラリ・サービスについての前記呼び出しを第1のライブラリーへとリダイレクトするステップ;
    前記呼び出しを、第1のライブラリーからターゲット側ISAライブラリーのライブラリ・サービスへと向けるステップ;および、
    ターゲット側ISAライブラリーを介してアプリケーションをエミュレート実行するステップ;を含む、方法。
  2. 前記アプリケーションに関する未定義のシンボルをアドレス解決するステップを含む請求項1記載の方法。
  3. 前記未定義のシンボルのアドレス解決は、第1のライブラリーの第1のゲートを介してターゲット側ISAライブラリーのターゲット側ゲートに間接的にリンクする動作を含む、請求項2記載の方法。
  4. 前記第1のゲートは第1の名前を有することが可能であり、ターゲット側ゲートは、前記第1の名前を含むターゲット名を有する、請求項3記載の方法。
  5. 前記第1のライブラリーへの呼び出しの前記リダイレクト動作は、前記アプリケーション専用に設けられたエミュレータからの呼び出しをリダイレクトする動作を含む、請求項1記載の方法。
  6. 前記第1のライブラリーへの呼び出しのリダイレクト動作は、前記アプリケーション専用に設けられたエミュレータであって、汎用のシステム・ローダーではないエミュレータからの呼び出しをリダイレクトする動作を含む、請求項1記載の方法。
  7. 前記アプリケーションと関連した追加的なライブラリ・サービスの追加的な呼び出しを提供するステップであって、前記追加的な呼び出しは、プロシージャ・リンキング・テーブル(PLT)内に含まれているコードへと向けられている、ステップ;および、
    前記追加的な呼び出しを、直接実行可能な追加的呼び出しで置き換えるステップであって、前記直接実行可能な追加的呼び出しは、PLTを迂回しながらソース側ISAライブラリーおよび追加的なソース側ISAライブラリーの一方に対して直接的に実行される追加的呼び出しである、ステップ;を含む、請求項1記載の方法。
  8. 前記追加的な呼び出しに関するアドレスを識別するステップを含むことが可能であり;
    前記追加的な呼び出しの決定は、前記追加的な呼び出しに関する前記アドレスを前記識別した結果に基づいて、PLT内に含まれているコードに対して指示される、請求項1記載の方法。
  9. 前記アプリケーションと関連した追加的なライブラリ・サービスの追加的な呼び出しを提供するステップであって、前記追加的な呼び出しは、プロシージャのアドレス位置を特定するように構成されたコードへと向けられている、ステップ;および、
    前記追加的な呼び出しを、直接実行可能な追加的呼び出しに置き換えるステップであって、前記直接実行可能な追加的呼び出しは、プロシージャのアドレス位置を特定するように構成されたコードを迂回しながらソース側ISAライブラリーおよび追加的なソース側ISAライブラリーの一方に対して直接的に実行される追加的呼び出しである、ステップ;
    を含む請求項1記載の方法。
  10. 請求項1乃至請求項9のいずれか一項に記載された処理動作を実行するための実効手段を具備する装置。
  11. コンピューティング装置によって実行されるのに応答して、請求項1乃至請求項9のいずれか一項に記載された方法を前記コンピューティング装置に実行させる複数の命令コードを具備した少なくとも一つの機械読み取り可能な記録媒体。
  12. 少なくとも一つのメモリおよび前記少なくとも一つのメモリに結合されている少なくとも一台のプロセッサーを具備している装置であって:
    ソース側命令セット・アーキテクチャ(ISA)を有するアプリケーションをロードする動作;
    前記アプリケーションと関連したライブラリ・サービスのための呼び出しを提供する動作であって、追加的な呼び出しが、プロシージャのアドレス位置を特定するように構成されたコードへと向けられる、動作;
    前記呼び出しを、直接実行可能な呼び出しに置き換える動作であって、前記直接実行可能な追加的呼び出しは、前記プロシージャのアドレス位置を特定するように構成された前記コードを迂回しながらソース側ISAライブラリーに対して直接的に実行される追加的呼び出しである、動作;および、
    ターゲット側ISAライブラリを介して前記アプリケーションをエミュレート実行する動作;
    を具備する一連の処理動作実行する、装置。
  13. 前記プロシージャのアドレス位置を特定するように構成された前記コードは、プロシージャ・リンク・テーブル(PLT)内に含まれている、請求項12記載の装置。
  14. 前記少なくとも一つのプロセッサは:
    呼び出しのためのアドレスを識別する動作を具備する一連の処理動作を具備することが可能であり;
    前記呼び出しの決定は、前記呼び出しのためのアドレスを前記識別した結果に基づいて、PLT内に含まれているコードに対して指示される、
    ことを特徴とする請求項13記載の装置。
  15. 前記少なくとも一つのプロセッサは:
    追加的な呼び出しがソース側ISAライブラリーおよび追加的なソース側ISAライブラリーの一方に到達しないようにするために、ソース側ISAライブラリーおよび追加的なソース側ISAライブラリーの一方に関する追加的なライブラリ・サービスのための追加的な呼び出しを、第1のライブラリに対してリダイレクトする動作;および、
    第1のライブラリーからの追加的な呼び出しを、ターゲット側ISAライブラリーおよび追加的なターゲット側ISAライブラリーの一方へと向ける動作;
    を具備する一連の処理動作を実行する、請求項12記載の装置。
  16. 前記少なくとも一つのプロセッサは:
    アプリケーションに関する未定義のシンボルをアドレス解決する動作を具備する一連の処理動作を実行する、請求項12記載の装置。
  17. 前記未定義のシンボルの前記アドレス解決は、第1のライブラリーのゲートを介してターゲット側ISAライブラリーおよび追加的なターゲット側ISAライブラリーのいずれか一方についてのゲートに対して間接的にリンクする動作を含む、請求項16記載の装置。
  18. 追加的な呼び出しのリダイレクト動作は、前記アプリケーション専用に設けられたエミュレータからの追加的な呼び出しをリダイレクトする動作を含む、請求項12記載の装置。
  19. 追加的な呼び出しのリダイレクト動作は、前記アプリケーション専用に設けられたエミュレータであって、汎用のシステム・ローダーではないエミュレータからの追加的な呼び出しをリダイレクトする動作を含む、請求項12記載の装置。
  20. 請求項12乃至請求項19の中のいずれか一項に記載された少なくとも一つのプロセッサと、少なくとも一つのディスプレイ装置を含んでいる、コンピュータ・システム。
JP2015500737A 2012-03-22 2012-03-22 ネスト構造化されたエミュレーションおよび動的リンキング環境 Expired - Fee Related JP5976917B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/072770 WO2013139014A1 (en) 2012-03-22 2012-03-22 Nested emulation and dynamic linking environment

Publications (2)

Publication Number Publication Date
JP2015511041A true JP2015511041A (ja) 2015-04-13
JP5976917B2 JP5976917B2 (ja) 2016-08-24

Family

ID=49221814

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015500737A Expired - Fee Related JP5976917B2 (ja) 2012-03-22 2012-03-22 ネスト構造化されたエミュレーションおよび動的リンキング環境

Country Status (7)

Country Link
US (2) US9851987B2 (ja)
EP (1) EP2828739A4 (ja)
JP (1) JP5976917B2 (ja)
KR (1) KR101665219B1 (ja)
CN (1) CN104246695B (ja)
AU (1) AU2012373895B2 (ja)
WO (1) WO2013139014A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112020007705T5 (de) 2020-12-24 2023-09-28 Mitsubishi Electric Corporation Datenverarbeitungseinrichtung, datenverarbeitungsverfahren und datenverarbeitungsprogramm
WO2024069678A1 (ja) * 2022-09-26 2024-04-04 日立Astemo株式会社 電子制御装置

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013102280A1 (en) * 2012-01-06 2013-07-11 Intel Corporation (A Corporation Of Delaware) Method and apparatus for substituting compiler built-in helper functions with machine instructions
US9830176B2 (en) * 2013-04-19 2017-11-28 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for binary compatible graphics support in mobile operating systems
CN106528188B (zh) * 2015-09-09 2019-08-30 腾讯科技(深圳)有限公司 一种应用加速方法及装置
US10268465B2 (en) * 2016-10-24 2019-04-23 International Business Machines Corporation Executing local function call site optimization
US10552207B2 (en) 2016-12-21 2020-02-04 Intel Corporation Systems and methods for multi-architecture computing including program stack translation
US10684984B2 (en) 2016-12-21 2020-06-16 Intel Corporation Computing devices and server systems with processing cores having different instruction set architectures
US10713213B2 (en) * 2016-12-21 2020-07-14 Intel Corporation Systems and methods for multi-architecture computing
US11275709B2 (en) 2017-05-02 2022-03-15 Intel Corporation Systems and methods for multi-architecture computing
US10706193B1 (en) * 2018-12-04 2020-07-07 Xilinx, Inc. Computer processing during simulation of a circuit design
US11403100B2 (en) * 2020-08-31 2022-08-02 Microsoft Technology Licensing, Llc Dual architecture function pointers having consistent reference addresses
US11231918B1 (en) 2020-08-31 2022-01-25 Microsoft Technologly Licensing, LLC Native emulation compatible application binary interface for supporting emulation of foreign code
CN114461227B (zh) * 2022-04-13 2022-07-12 飞腾信息技术有限公司 运行软件的方法、装置以及机器可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050015781A1 (en) * 2003-07-15 2005-01-20 Alex Brown Method and apparatus for performing native binding
JP2007529063A (ja) * 2003-07-15 2007-10-18 トランジティブ リミテッド ネイティブ結合を行なうための方法および装置
US20080092151A1 (en) * 2006-10-02 2008-04-17 Transitive Limited Method and apparatus for handling dynamically linked function calls with respect to program code conversion
JP2009517752A (ja) * 2005-12-01 2009-04-30 エクセント テクノロジーズ, リミテッド コンピュータ装置上で実行するアプリケーションを動的に向上させるためのシステム、方法、およびコンピュータ製品
JP2010506252A (ja) * 2006-10-02 2010-02-25 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムコード変換に関して動的にリンクされた関数呼び出しを行うための方法及び装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3086623A (en) 1959-07-20 1963-04-23 David F Cole Pneumatic timer
US5774694A (en) * 1996-09-25 1998-06-30 Intel Corporation Method and apparatus for emulating status flag
US6086623A (en) * 1997-06-30 2000-07-11 Sun Microsystems, Inc. Method and implementation for intercepting and processing system calls in programmed digital computer to emulate retrograde operating system
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
KR100518584B1 (ko) * 2003-07-12 2005-10-04 삼성전자주식회사 공유 라이브러리 시스템 및 상기 시스템 구축 방법
US7634768B2 (en) * 2005-02-17 2009-12-15 Intel Corporation Methods and apparatus to support mixed-mode execution within a single instruction set architecture process of a virtual machine
US7415701B2 (en) * 2005-02-17 2008-08-19 Intel Corporation Methods and apparatus to support mixed-mode execution within a single instruction set architecture process of a virtual machine
GB2426840A (en) * 2005-06-04 2006-12-06 Transitive Ltd Method of executing program code where a portion of the target code calls a native code portion which then calls a second target code portion.
EP1889158B1 (en) * 2005-06-04 2015-04-22 International Business Machines Corporation Method and apparatus for combined execution of native code and target code during program code conversion
US7768518B2 (en) * 2006-09-27 2010-08-03 Intel Corporation Enabling multiple instruction stream/multiple data stream extensions on microprocessors
CN101295265A (zh) 2007-04-25 2008-10-29 国际商业机器公司 全系统isa仿真系统及其识别进程的方法
US8775153B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
JP5546023B2 (ja) 2011-06-16 2014-07-09 日本電信電話株式会社 光ファイバ無切断型光入出力装置及び光ファイバ無切断型光入出力方法
EP2802983B1 (en) * 2012-01-10 2016-12-14 Intel Corporation Isa bridging with callback
US10120663B2 (en) * 2014-03-28 2018-11-06 Intel Corporation Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050015781A1 (en) * 2003-07-15 2005-01-20 Alex Brown Method and apparatus for performing native binding
JP2007529063A (ja) * 2003-07-15 2007-10-18 トランジティブ リミテッド ネイティブ結合を行なうための方法および装置
JP2009517752A (ja) * 2005-12-01 2009-04-30 エクセント テクノロジーズ, リミテッド コンピュータ装置上で実行するアプリケーションを動的に向上させるためのシステム、方法、およびコンピュータ製品
US20080092151A1 (en) * 2006-10-02 2008-04-17 Transitive Limited Method and apparatus for handling dynamically linked function calls with respect to program code conversion
JP2010506252A (ja) * 2006-10-02 2010-02-25 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムコード変換に関して動的にリンクされた関数呼び出しを行うための方法及び装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112020007705T5 (de) 2020-12-24 2023-09-28 Mitsubishi Electric Corporation Datenverarbeitungseinrichtung, datenverarbeitungsverfahren und datenverarbeitungsprogramm
WO2024069678A1 (ja) * 2022-09-26 2024-04-04 日立Astemo株式会社 電子制御装置

Also Published As

Publication number Publication date
EP2828739A1 (en) 2015-01-28
KR20140127332A (ko) 2014-11-03
CN104246695A (zh) 2014-12-24
US20130338993A1 (en) 2013-12-19
WO2013139014A1 (en) 2013-09-26
US9851987B2 (en) 2017-12-26
AU2012373895B2 (en) 2016-01-21
JP5976917B2 (ja) 2016-08-24
US20180173545A1 (en) 2018-06-21
AU2012373895A1 (en) 2014-09-11
US10761867B2 (en) 2020-09-01
CN104246695B (zh) 2019-05-10
EP2828739A4 (en) 2015-12-09
KR101665219B1 (ko) 2016-10-11

Similar Documents

Publication Publication Date Title
JP5976917B2 (ja) ネスト構造化されたエミュレーションおよび動的リンキング環境
US9910721B2 (en) System and method for execution of application code compiled according to two instruction set architectures
US8768682B2 (en) ISA bridging including support for call to overidding virtual functions
US8307353B2 (en) Cross-domain inlining in a system virtual machine
CN111770113A (zh) 一种执行智能合约的方法、区块链节点和节点设备
CN111399990B (zh) 解释执行智能合约指令的方法及装置
EP2802983B1 (en) Isa bridging with callback
US20150379169A1 (en) Efficient emulation for pseudo-wrapped callback handling in binary translation software
JP5886450B2 (ja) ハイブリッドのエミュレーション及びカーネル関数処理のシステム及び方法
US20120331489A1 (en) Bypassing user mode redirection
Debab et al. Containers runtimes war: a comparative study
JP2007226784A (ja) インラインされたメソッドの呼出方法およびそれを用いたジャバ仮想マシン
KR101083271B1 (ko) 액티브엑스 컨트롤 변환 시스템 및 방법
Herdt et al. RVX-a tool for concolic testing of embedded binaries targeting RISC-V platforms
KR102263692B1 (ko) 이더리움 스마트계약 가상머신 바이트코드 보안성 향상 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140919

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160216

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160720

R150 Certificate of patent or registration of utility model

Ref document number: 5976917

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees