JP5976930B2 - バーチャルファンクションを無効にするコールのためのサポートを含むisaブリッジング - Google Patents

バーチャルファンクションを無効にするコールのためのサポートを含むisaブリッジング Download PDF

Info

Publication number
JP5976930B2
JP5976930B2 JP2015520791A JP2015520791A JP5976930B2 JP 5976930 B2 JP5976930 B2 JP 5976930B2 JP 2015520791 A JP2015520791 A JP 2015520791A JP 2015520791 A JP2015520791 A JP 2015520791A JP 5976930 B2 JP5976930 B2 JP 5976930B2
Authority
JP
Japan
Prior art keywords
instruction set
set architecture
library
virtual function
implementation
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
JP2015520791A
Other languages
English (en)
Other versions
JP2015525922A (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 JP2015525922A publication Critical patent/JP2015525922A/ja
Application granted granted Critical
Publication of JP5976930B2 publication Critical patent/JP5976930B2/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
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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

Description

本出願は、“ISA Bridging with Callback”というタイトルにより2012年1月10日に出願された特許協力条約出願PCT/CN2012/070163に技術的に関連する。
ここに提供される背景は、本開示のコンテクストを全体的に提供するためのものである。特段の断りがない場合、本セクションに説明される題材は本出願の請求項に対する従来技術でなく、本セクションに含めることによって従来技術であることを自認するものでない。
計算装置は、それの命令セットアーキテクチャ(Instruction Set Architecture:ISA)によって特徴付け可能である。典型的には、計算装置はオペレーティングシステム(OS)サービスを含み、OSサービスはアプリケーション開発者が計算装置上で実行されるアプリケーションを開発することを容易にするため、計算装置のISAに対して開発されたランタイムライブラリサービス(LIB)を含むものであってもよい。例えば、各種スマートフォンは、ARMプロセッサとそれのISAとを利用することによって特徴付けされてもよい。これらのスマートフォンは、各スマートフォンについて開発された各種アプリケーションのサポートにおけるiOSやAndroidなどのOSを含むかもしれない。ある計算装置は、Java(登録商標)又はAndroidアプリケーションフレームワークなどのISAから独立した実行環境を提供する。しかしながら、多数のアプリケーションは、ISAに依存したランタイムライブラリのサービスを呼び出すISAに依存した部分を含む。さらに、これらのISAに依存した部分は、ISAに依存したランタイムライブラリからのコールバックを求めるコールバックファンクションをしばしば含み、このようなコールバックはしばしばランタイムまで発見されず、バイナリ変換などの従来のアプローチをニーズに対処するのに不適切なものにする。さらに、これらのISAに依存した部分はまた、バーチャルファンクションがコールされるときに適切にコールされる必要があるISAに依存したランタイムライブラリの継承可能なバーチャルファンクションの実装を無効にすることを含むかもしれない。バイナリ変換などの従来のアプローチは、同様にニーズに対処するのに不適切である。
本発明の実施例は、限定することなく、同様の参照が同様の要素を示し、全てが本開示の実施例による構成される添付図面に示される一例となる実施例により説明される。
図1は、コールバック及びバーチャルファンクションサポートとのISAブリッジングが搭載される一例となる計算装置を示す。 図2は、図1のISAブリッジングレイヤを更に詳細に示す。 図3は、ソースISAのアプリケーションとターゲットISAのライブラリサービスとの間のコール及びコールバックをブリッジングするための方法を示す。 図4は、ソースISAのアプリケーションとターゲットISAのライブラリサービスとの間のコール及びコールバックをブリッジングするための方法を示す。 図5は、図3及び4の方法の全ての又は選択された態様を実践するのに構成される命令を有する一例となる非一時的なコンピュータ可読記憶媒体を示す。
コールバック及びバーチャルファンクションサポートとのISAブリッジングに関連する方法、装置及び記憶媒体が開示される。各種実施例では、少なくとも1つのコンピュータ可読記憶媒体は、命令の実行に応答して、ターゲットISAを有するターゲット装置が、アプリケーションの提供中にターゲット装置のライブラリのライブラリサービスがライブラリのバーチャルファンクションをコールすることを容易にするためのISAブリッジングレイヤをターゲット装置に提供することを可能にするよう構成される命令を含むものであってもよい。ライブラリサービスはターゲットISAのために実現されてもよく、アプリケーションはターゲットISAと異なってよいソースISAのために少なくとも部分的に実現されてもよく、バーチャルファンクションの無効化実装を備えるクラスを含む。ISAブリッジングレイヤは、実行のためアプリケーションをロードし、当該ロード処理の一部としてバーチャルファンクションを検出し、コールに応答して、バーチャルファンクションの無効化実装にソース及びターゲットISAを介し移転される実行制御を遊行するようにアプリケーションのバーチャルファンクションテーブルを修正するよう構成されるローダを含むものであってもよい。実施例において、ISAブリッジングレイヤは更に、ライブラリサービスをコールするためのアプリケーションとコールバックファンクションをコールバックするためのライブラリサービスと共に、コールに応答してISA間の実行制御移転を有効にするよう連係するよう構成されるソースISAエミュレータとライブラリエミュレータとを含むものであってもよい。
例示的な実施例の各種態様は、他の当業者に自らの研究の本質を伝えるために当業者により通常用いられる用語を用いて説明される。しかしながら、他の実施例が説明される特徴の一部のみにより実現されてもよいことは当業者に明らかであろう。説明のため、具体的な数字、物質及び構成が例示的な実施例の完全な理解を提供するため与えられる。しかしながら、他の実施例は具体的な詳細なしに実現されてもよいことが当業者に明らかであろう。他の例では、周知の特徴は例示的な実施例を不明瞭にしないように省略又は簡単化される。
各種処理は、例示的な実施例を理解するのに最も役立つ方法により複数の個別の処理として説明されるが、説明の順序はこれらの処理が順序に依存する必要があることを意味するものとして解釈されるべきでない。特に、これらの処理は提示される順序により実行される必要はない。さらに、別々の処理としての各処理の説明は、当該処理が独立して及び/又は別々のエンティティとして実行される必要があることを求めるものとして解釈されるべきでない。別々のモジュールとしてのエンティティ及び/又はモジュールの説明もまた、当該モジュールが別々であり、及び/又は別々の処理を実行することを求めるものとして解釈されるべきでない。各種実施例では、図示及び/又は説明された処理、エンティティ、データ及び/又はモジュールは、マージ、更なるサブパーツへの分割及び/又は省略されてもよい。
“一実施例では”又は“実施例では”というフレーズが繰り返し利用される。当該フレーズは、一般に同一の実施例を参照しないが、そうであってもよい。“有する”及び“含む”という用語は、コンテクストがそうでないことを示さない場合、同義的である。“A/B”というフレーズは“A又はB”を意味する。“A及び/又はB”というフレーズは、“(A)、(B)又は(A及びB)”を意味する。“A、B及びCの少なくとも1つ”というフレーズは、“(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)又は(A、B及びC)”を意味する。
図1は、本開示の各種実施例によるコールバック及びバーチャルファンクションサポートとのISAブリッジングが搭載された一例となる計算装置を示す。図示されるように、図示された実施例について、計算装置102は、図示されるように互いに接続され、オペレーティングシステム(OS)122、ISAブリッジングレイヤ123及びアプリケーション120を実行するよう構成されるプロセッサメモリ構成104、グラフィクス処理ユニット(GPU)106、ディスプレイユニット108及びネットワーキングインタフェース110を有してもよい。OS122はサービスのライブラリ124を有してもよい。さらに、計算装置102はまた、アプリケーション120とOS122との間の任意的なミドルウェア121を有してもよい。以下においてより詳細に説明されるように、ISAブリッジングレイヤ123は、OS122(ライブラリサービス124を含む)がソースISAと異なるターゲットISAにおいて実現される間、(例えば、ISAから独立したミドルウェア121がまた利用されるときなど)アプリケーション120がソースISAにおいて全体的に又は部分的に実現されることを可能にするための各種アプリケーションロード及びランタイム機能又はサービス(限定することなく、ダイナミックバインディングなどを含む)により構成されてもよい。さらに、アプリケーション120は、各種条件下においてアプリケーション120の各種コールバックファンクション125をコールバックすることを各種ライブラリサービス124に要求するライブラリサービス124の利用特性を含むアプリケーション(特に、ソースISAを用いて実現される部分)であってもよい。
実施例では、アプリケーション120はオブジェクト指向であってもよいし、又はクラス126を含むものであってもよい。これらの実施例について、アプリケーション120は、ターゲットISAライブラリサービス124から継承したバーチャルファンクション127の1以上の無効化実装を有するオブジェクト/クラス126を含むものであってもよい。さらに、アプリケーション120は、ターゲットISAライブラリサービス124から継承したバーチャルファンクション127のこれらの無効化実装(以降、単に無効化実装127)を格納するための1以上のバーチャルファンクションテーブル129を含むものであってもよい。1以上のバーチャルファンクションテーブル129は更に、無効化実装127を記述する関連するメタデータを含むものであってもよい。実施例では、アプリケーション120は更に、コンパイル時には未決定な部分のランタイム決定を容易にするシンボル名及び他の情報を含むリロケーションテーブル131を含むものであってもよい。
実施例では、ISAブリッジングレイヤ123は、各種ライブラリサービス124がバーチャルファンクションをコールするとき、これらの無効化実装127に異なるISAを介し適切に移転されるべき実行制御のためのサポートを含むものであってもよい。ISAブリッジングレイヤ123の各種実施例が更に後述される。ISAブリッジングレイヤ123はまた、プロセスバーチャルマシーン(PVM)として参照されてもよい。
計算装置102は、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、PDA(Personal Digital Assistant)、ゲームコンソール、インターネット機器又は同様の他の計算装置であってもよい。計算装置102の具体例は、限定することなく、カリフォルニア州Palo AltoのHewlett Packardから利用可能なサーバ、テキサス州AustinのDell Computerから利用可能なデスクトップ若しくはラップトップコンピュータ、カリフォルニア州CupertinoのApple Computerから利用可能なスマートフォン及び計算タブレット、日本の東京の任天堂から利用可能なゲームコンソールなどを含むものであってもよい。
プロセッサメモリ構成104は、限定することなく、各種実行速度及び電力消費のシングル若しくはマルチコアプロセッサと、1以上のレベルのキャッシュ及びダイナミックランダムアクセス、FLASHなどの各種タイプの各種アーキテクチャのメモリとを含む広範なプロセッサメモリ構成を表すことが意図される。各種実施例では、GPU106は、OS122にビデオ復号化及び/又はグラフィック処理ファンクションを提供するよう構成され、ディスプレイユニット108は、HDビデオなどのマルチメディアコンテンツが再生されることを可能にするよう構成されてもよい。同様に、GPU106及びディスプレイユニット108は、当該分野において知られる広範なグラフィックプロセッサ及びディスプレイエレメントを表すことが意図される。同様に、ネットワーク134は、当該分野において知られる広範なネットワークを表すことが意図される。ネットワーク134の具体例は、有線若しくは無線、ローカル若しくはワイドエリア、プライベート若しくはインターネットを含むパブリックネットワークを含むものであってもよい。
OS122(ライブラリサービス124を含む)は、ライブラリサービス124の起動を定義するアプリケーションプログラミングインタフェース(API)を除き、当該技術において知られる広範なオペレーティングシステムエレメントを表すことが意図される。OS122は、メモリリソースを管理し、タスク実行をスケジューリングするよう構成されるカーネル、各種デバイスリソースを管理するよう構成されるデバイスドライバなどの従来のコンポーネントを含むものであってもよい。実施例では、OS122は、AndroidアプリケーションフレームワークのサポートにおけるAndroidのバーチャルマシーンなど、(利用される場合)ミドルウェア121のサポートにおけるバーチャルマシーンを有してもよい。実施例について、アプリケーション120のコールバックファンクション125の起動を容易にするためライブラリサービス124の起動を定義することに加えて、ライブラリサービス124のAPIはまた、アプリケーション120のコールバックファンクション125の対応するスタブ及びシグネチャを有してもよい。OS122の具体例は、限定することなく、ワシントン州RedmondのMicrosoft Corporationから利用可能なWindows(登録商標)オペレーティングシステム、ノースカロライナ州RaleighのRed Hat(登録商標)などから利用可能なLinux(登録商標)、Open Handset Allianceにより開発されたAndroidTM、又はカリフォルニア州CupertinoのApple(登録商標) Computerから利用可能なiOSを含むものであってもよい。
同様に、ミドルウェア121は、限定することなく、ISAから独立したミドルウェアを含む当該分野において知られる広範なミドルウェアエレメントを表すことが意図される。ミドルウェア121の具体例は、限定することなく、Androidアプリケーションフレームワーク、Java(登録商標)、他のアプリケーションフレームワーク又はISAから独立した実行環境を含むものであってもよい。
同様に、アプリケーション120(コールバックファンクション125、無効化実装127などを含む)は、当該分野において知られる広範なアプリケーションを表すことが意図される。アプリケーション120の具体例は、限定することなく、カレンダ、ワープロ、スプレッドシート、Twitter、Facebookなどのパーソナルアシスタント、プロダクティビティ若しくはソーシャルネットワーキングアプリケーション、又はブラウザなどの汎用的なアプリケーションエージェントを含むものであってもよい。ブラウザの具体例は、限定することなく、ワシントン州RedmondのMicrosoft Corporationから利用可能なインターネットエクスプローラ、又はカリフォルニア州Mountain ViewのMozillaから利用可能なFirefoxを含むものであってもよい。
図2を参照して、本開示の各種実施例による一例となるISAブリッジングレイヤ123が示される。図示されるように、実施例について、ISAブリッジングレイヤ123は、限定することなく、ダイナミックバインディングサービスを含む各種ランタイム機能及びサービスを提供するよう構成されるISAブリッジングローダ202、ソースISAエミュレータ204及びターゲットISAライブラリエミュレータ206(以降、単にLIBエミュレータ)を含むものであってもよい。ソースISAエミュレータ204は、ソースISAコンテクスト212及びバイナリ変換エンジン215を含むものであってもよい。ソースISAエミュレータ204は、限定することなく、現在の実行命令ポインタ(IP)などを含むソースISAアーキテクチャの実行コンテクストをソースISAコンテクスト212において維持してもよい。バイナリ変換エンジン215は、ソースISA命令をターゲットISA命令に変換するよう構成されてもよい。LIBエミュレータ206は、ターゲットISAライブラリ(LIB)コンテクスト222、ゲート224及びラッパファンクション226を含むものであってもよい。LIBエミュレータ206は、ターゲットISAライブラリの実行コンテクストをターゲットISAライブラリ(LIB)コンテクスト222において維持してもよい。各種実施例では、ソース及びターゲットISAアーキテクチャにおいてアプリケーション120によるライブラリサービス124のコール処理を容易にするよう構成されるライブラリサービス124毎のラッパファンクション226及びゲート224の1つの対応するペアがあってもよい。同様に、ターゲット及びソースISAアーキテクチャにおけるライブラリサービス124によるコールバックファンクション125のコールバックと、バーチャルファンクションがコールされるとき、ターゲット及びソースISAアーキテクチャにおける無効化実装127への実行制御の移転とを容易にするよう構成されるコールバックファンクション125毎及び無効化実装127毎のゲート224及びラッパファンクション226の1つの対応するペアがあってもよい。
ISAブリッジングローダ202は、アプリケーション120をロードするよう構成されてもよい。アプリケーション120をロードする際、ISAブリッジングローダ202は、ライブラリサービスのコールに関連するアプリケーション120の何れか未決定のシンボル名をライブラリサービス124の適切なものに決定するよう構成されてもよい。実施例では、ISAブリッジングローダ202は、ライブラリサービスのコールに関連するアプリケーション120の何れか未決定のシンボル名をライブラリサービス124の対応するゲート224のアドレスに決定するよう構成されてもよい。さらに、ISAブリッジングローダ202は、コールバックファンクション125に対するシンボル名又はリファレンスを内部的な名前に変更し、コールバックファンクション125に対するシンボル名又はリファレンスを対応するラッパファンクション226に関連付けるよう構成されてもよい。
さらに、ISAブリッジングローダ202は更に、実行のためアプリケーション120をロードする際に各種無効化実装127を決定するよう構成される擬似リンカファンクションを有してもよい。実施例では、ISAブリッジングローダ202は、ロード処理の一部として、リロケーションテーブル131の情報を利用して無効化実装127を特定してもよい。実施例では、ISAブリッジングローダ202は更に、適切である場合、ライブラリサービス124がバーチャルファンクションをコールするとき、バーチャルファンクションテーブル129を変更し、バーチャルファンクションテーブル129のエントリを対応するラッパファンクションにより置換することによって、実行制御が無効化実装127にISAを介し移転することを可能にするよう構成されてもよい。実施例では、ラッパファンクションは無効化実装127へのポインタを含んでもよい。
ISAブリッジングローダ202は、複数の既知の方法の何れか1つによりOS122(又は利用される場合、ミドルウェア121)のローダからのロード処理の制御を取得してもよい。このような既知の方法の具体例は、OS122又はミドルウェア121によりサポートされるとき、バイナリフォーマットベースの制御移転又はロード/プリロード変数の利用を含むものであってもよい。他の実施例では、OS122(又は利用される場合、ミドルウェア121)のローダは、ISAブリッジングローダ202への制御の移転を容易にするよう修正されてもよい。
上述されたように、ソースISAエミュレータ204は、ソースISA実行コンテクスト212を維持するよう構成されてもよい。ソースISAエミュレータ204は、アプリケーション120の実行中にソースISA IP(命令ポインタ)をトラッキングするよう構成されてもよい。アプリケーション120がライブラリサービス124を呼び出すことを試みるとき、ソースISAの実行をモニタリングするソースISAエミュレータ204は、LIBエミュレータ206への実行制御の呼び出し及び移転を行ってもよい。各種実施例では、ソースISAエミュレータ204は、ライブラリサービス124の対応するゲート224への実行制御の呼び出し及び移転を行ってもよい。
LIBエミュレータ206はまた、ターゲットISAライブラリ(LIB)実行コンテクスト222を維持するよう構成されてもよい。
ライブラリサービス124に対応するゲート224はそれぞれ、コールを処理及び設定するため、ライブラリサービス124に対するコールを対応するラッパファンクション226にリダイレクトするよう構成されてもよい。一方、コールバックファンクション125又は無効化実装127に対応するゲート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又はオーバライド実装127の対応するラッパファンクション226に移転されてもよい。各種実施例では、コールバックファンクション125に対するコールバック又はアプリケーション120のオーバライド実装127への実行制御の移転を処理及び設定するため、コールバックファンクション125又はオーバライド実装127に対応する各ラッパファンクション226は、オーバライドされるバーチャルファンクションに対するコールバック又はコールをターゲットISA ABIフォーマットからソースISA ABIフォーマットに変換し、コールバック又はコールの関連するパラメータ値をオーバライドされたバーチャルファンクションに付属し、オーバライドされるバーチャルファンクションに対する変換されたコールバック又はコールをパラメータ値と共にソースISAコンテクスト212に保存するよう構成されてもよい。
コールバックファンクション125又は無効化実装127に対応するゲート224は、ターゲットISA上のソースISAフォーマットに提供されるコールバックファンクション125又は無効化実装127をエミュレートするため、コールバックファンクション125又は無効化実装127に対応するラッパファンクション226により準備されるソースISAコンテクストによりソースISAエミュレータ204を呼び出すよう構成されてもよい。
図3〜4を参照して、本開示の各種実施例によるコールバック及びバーチャルファンクションサポートによる一例となるISAブリッジング方法が示される。図示されるように、方法300は、コールを(ソースISAの)アプリケーション120から(ターゲットISAの)ライブラリサービス124にブリッジするためのパート300aと、(ターゲットISAの)ライブラリサービス124から(ソースISAの)アプリケーション120のコールバックファンクションにコールバック又は無効化実装127への実行制御の適切な移転をブリッジするためのパート300bとの2つのパートを含むものであってもよい。
パート300aは、ブロック302から開始される。ブロック302において、ISAブリッジングローダ202はアプリケーション120をロードする。アプリケーション120をロードする際、ISAブリッジングローダ202は、ライブラリサービス124に対するアプリケーション120のシンボル名又はリファレンスを決定し、コールバックファンクション125のシンボル名又はリファレンスを修正してもよい。さらに、ISAブリッジングローダ202は、リロケーションテーブル131を用いて無効化実装127を検出/特定し、上述されるように、バーチャルファンクションテーブル129を修正してもよい。当該処理は、図6において更に詳細に示される。
図6を参照して、図示されるように、処理600はブロック602から開始される。ブロック602において、ローダ202は、リロケーションテーブル131の現在のエントリを抽出する。ブロック602から、処理600はブロック604に移行する。ブロック604において、ローダ202は、抽出されたエントリのフィックスアップアドレスがバーチャルファンクションテーブル129に属するか判断する。当該判定の結果が肯定的である場合、処理600はブロック606に移行する。ブロック606において、ローダ202は更に、フィックスアップアドレスがバーチャルファンクションに関連するか判断する。当該判定の結果が肯定的である場合、処理600はブロック608に移行する。ブロック608において、ローダ202は更に、バーチャルファンクションが無効化されたか判断する。当該判定の結果が再び肯定的である場合、処理600はブロック610に移行する。ブロック608において、ローダ202は、バーチャルファンクションテーブル129のエントリを無効化実装127へのポインタを含む対応するラッパファンクションにより置換する。
ブロック604、606又は608の判定の結果が否定的である場合、処理600はブロック612に移行する。ブロック612において、ローダ202は、リロケーションテーブル131の他のエントリが利用可能であるか判断してもよい。当該判定の結果が肯定的である場合、処理600はブロック614に移行する。ブロック614において、ローダ202は、リロケーションテーブル131の次のエントリに移動する。ブロック614から、処理600はブロック602に移行し、上述した処理が繰り返される。
ブロック612における判定の結果が否定的である場合、処理600は終了する。
図3を参照して、ブロック302から、パート300aはブロック304に移行する。ブロック304において、実行中に、アプリケーション120はライブラリサービス124の1つをコールする。各種実施例では、アプリケーション120は、コールされたライブラリサービス124によるコールバックファンクション125の1つに対するコールバックを要求してもよい。実施例では、アプリケーション120は、コールされたライブラリサービス124に対するコールの一部として、コールバックされるべきコールバックファンクション125へのポインタを含むものであってもよい。コールバックファンクション125にポインタをわたす代わりに、ライブラリサービス124のラッパファンクション226は、コールバックファンクション125の対応するラッパファンクション226をわたしてもよい。
一部のコールについて、上述されたように修正された無効化実装127及びバーチャルファンクションテーブル129を有するオブジェクト/クラスが、ライブラリサービス124を有するライブラリにわたされてもよい。
ブロック304から、パート300aはブロック306に移行する。ブロック306において、ソースISAエミュレータ204は、ソースISA IPをモニタリングし、当該IPがターゲットライブラリのアドレス範囲内のアドレスを参照していることを判断することなどを介したコールの検出によって、当該コールをリダイレクトし、LIBエミュレータ206のライブラリサービス124の対応するゲート224に実行制御を移転してもよい。ブロック306から、パート300aはブロック308に移行する。ブロック308において、ゲート224は更に、コールをリダイレクトし、コールされたライブラリサービス124の対応するラッパファンクション226に実行制御を移転する。ブロック308から、パート300aはブロック310に移行する。ブロック310において、コールされたライブラリサービス124のラッパファンクション226はコールを処理し、上述されたように、コールされたライブラリサービス124による実行のためLIBコンテクスト222にコールを設定する。ブロック310から、パート300aはブロック312に移行する。ブロック312において、コールされたライブラリサービス124のゲート224は、LIBコンテクスト222からコールのリターン値を収集し、ソースISAコンテクスト212を更新し、アプリケーション125に対するライブラリサービスのコールのリターン値を返すため、ソースISAエミュレータ202に実行制御を移転する。
図4を参照して、パート300bがブロック404から開始される。ブロック404において、コールされたライブラリサービス124の実行中又は終了時、ライブラリサービス124は、例えば、アプリケーション120によりわたされたコールバックポインタをコールするなどによって、アプリケーション120のコールバックファンクション125をコールバックするか、又はアプリケーション120の実現により無効化されたライブラリのバーチャルファンクションをコールする。ブロック404から、パート300bは、コールバック/コールポインタがコールバックファンクション125又は無効化実装127に対応するラッパファンクション226であるとき、ブロック406に移行する。ブロック406において、実行制御は、変更されたリファレンスに従ってコールバックファンクション125又は無効化実装127の対応するラッパファンクション226に移転される。ブロック406から、パート300bはブロック408に移行する。ブロック408において、ラッパファンクション226は、上述されたように、コールバック/コールを処理し、アプリケーション120のコールバックファンクション125又は無効化実装127による実行のため、ソースISAコンテクスト212にコールバック/コールを設定し、その後、コールバックファンクション125又は無効化実装127の対応するゲート224に実行制御を移転する。ブロック408から、パート300bはブロック410に移行する。ブロック410において、コールバックファンクション125又は無効化実装127に対応するゲート224は、コールバック/コールをリダイレクトし、ラッパファンクション226により準備されたソースISAコンテクストによりISAエミュレータに実行制御を移転する。
さらに、ブロック412において、ソースISA IPをモニタリングし、当該IPがコールバックファンクション125又は無効化実装127に対応するゲートのアドレス範囲内のアドレスを参照していると判断するなどによりコールを検出すると、ソースISAエミュレータ204は、エミュレーションを継続するため、ソースISA IPをコールバックファンクション125又は無効化実装127にリダイレクトする。ブロック412から、パート300bはブロック414に移行する。ブロック414において、コールバックファンクション125又は無効化実装127のゲート224は、ソースISAコンテクスト212からコールバック又はコールのリターン値を収集し、LIBコンテクスト222を更新し、ライブラリサービス124にコールバックファンクション125又は無効化実装127のリターン値を返すため、LIBエミュレータ206に実行制御を移転する。
図5は、本開示の各種実施例による図3及び4の方法の全ての又は選択された特徴を実践するよう構成される命令を有する一例となる非一時的なコンピュータ可読記憶媒体を示す。図示されるように、非一時的なコンピュータ可読記憶媒体503は複数のプログラミング命令504を有してもよい。プログラミング命令504は、プログラミング命令の実行に応答して、計算装置102などの計算装置が、図3及び4を参照して上述されたように、方法300のISAブリッジング処理の全ての又は選択された特徴を実行することを可能にするよう構成されてもよい。他の実施例では、プログラミング命令504は、複数の非一時的なコンピュータ可読記憶媒体502に配置されてもよい。
図1を再び参照して、一実施例について、プロセッサメモリ構成104の少なくとも1つのプロセッサは、図3及び4の方法300の処理(又はその一部)を実践するよう構成されるISAブリッジングレイヤ123の計算ロジック(又はその一部)と共にパッケージ化されてもよい。一実施例について、プロセッサメモリ構成104の少なくとも1つのプロセッサは、SiP(System in Package)を形成するため、図3及び4の方法300の処理(又はその一部)を実践するよう構成されるISAブリッジングレイヤ123の計算ロジック(又はその一部)と一緒にパッケージ化されてもよい。一実施例について、プロセッサメモリ構成104の少なくとも1つのプロセッサは、図3及び4の方法300の処理(又はその一部)を実践するよう構成されるISAブリッジングレイヤ123の計算ロジック(又はその一部)と共に同一のダイ上に統合されてもよい。一実施例について、プロセッサメモリ構成104の少なくとも1つのプロセッサは、SoC(System on Chip)を形成するため、図3及び4の方法300の処理(又はその一部)を実践するよう構成されるISAブリッジングレイヤ123の計算ロジック(又はその一部)と共に同一のダイ上に統合されてもよい。少なくとも1つの実施例について、SoCは、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、計算タブレット、インターネット機器、PDA(Personal Digital Assistant)、ポータブルゲーム再生装置、サーバ又は他の計算装置において利用されてもよい。
図1を更に参照して、理解を容易にするため、本開示は1つのソースISAを1つのターゲットISAにブリッジする1つのISAブリッジングレイヤ123により説明された。しかしながら、本開示はこれに限定されるものでない。実施例では、複数の異なるISAブリッジングレイヤ123が、複数の異なるソースISAをターゲットISAにブリッジするため備えられてもよい。これらの実施例のいくつかでは、ディスパッチャが更に、要求されるブリッジングを検出するため備えられてもよく、要求されるISAブリッジングを提供するため、適切なISAブリッジングレイヤ123をインスタンス化する。
さらに、各種実施例では、本開示は、必要とされるブリッジング量を低下させるため、(ソースISAにおける)アプリケーション120の一部について(ターゲットISAにおける)置換されたバイナリにより実践されてもよい。他の実施例では、ラッパファンクションの一部などのブリッジングに利用されるリソースの一部は、ISAブリッジングレイヤ123にアクセス可能なリモートサーバに配置されてもよい。
さらに、理解を容易にするため、ISAブリッジングレイヤ123は、異なるソースISAとターゲットISAとをブリッジするよう構成されるものとして説明された。しかしながら、本開示はこれに限定されるものでない。各種アプリケーションについて、ISAブリッジングレイヤ123は、同一のソースISAとターゲットISAとをブリッジするのに利用されてもよいことが想定される。このようなアプリケーションでは、バイナリ変換エンジン215などの説明された要素の1以上は必要でなくてもよい。このようなアプリケーションの一例は、計算装置102にエンハンスされた動作セキュリティを提供するためのものであってもよい。他のアプリケーションがまた、このようなブリッジングを利用してもよい。
従って、特定の実施例がここで図示及び説明されたが、他の及び/又は等価な広範な実現形態が図示及び説明される特定の実施例のために置換されてもよいことが当業者に理解されるであろう。
従って、本開示は他のISAのために開発されたアプリケーションをサポートする1つのISAによって計算装置の技術的問題に対する解法であってもよいことが理解されるであろう。ここで、アプリケーションは、ときにはコールされたライブラリサービスからのコールバック又はアプリケーションによる無効化実装によるライブラリのバーチャルファンクションに対するコールを要求する利用特性を有する。本開示の効果は、限定することなく、計算装置のISAにおいてアプリケーションを完全に変換又は再実現する必要を回避することを含むものであってもよい。
本開示は計算装置にエンハンスされたセキュリティを提供する技術的問題に対する解法であることが理解されるであろう。本開示の効果は、限定することなく、提供される隔離のロウバスト性を含むものであってもよい。
特に、開示されたものは、限定することなく、命令の実行に応答して、ターゲット命令セットアーキテクチャを備えたターゲット装置が、ターゲット装置上で実行されるアプリケーションの提供中、ターゲット装置のライブラリのライブラリサービスがライブラリのバーチャルファンクションをコールすることを実行するための命令セットアーキテクチャブリッジングレイヤをターゲット装置に提供することを可能にするよう構成される命令を有する少なくとも1つのコンピュータ可読記憶媒体を含む。ライブラリサービスは、ターゲット命令セットアーキテクチャのために実現され、アプリケーションは、少なくとも部分的にソース命令セットアーキテクチャのために実現されてもよく、バーチャルファンクションの無効化実装を備えたクラスを含む。さらに、命令セットアーキテクチャブリッジングレイヤは、実行のためアプリケーションをロードし、アプリケーションのロードの一部として、バーチャルファンクションの無効化実装を検出し、コールに応答して、実行制御がソース及びターゲット命令セットアーキテクチャを介しバーチャルファンクションの無効化実装に移転されることを可能にするようにクラスのバーチャルファンクションテーブルを変更するよう構成されるローダを有してもよい。
実施例では、ローダは、バーチャルファンクションの無効化実装を検出するため、アプリケーションのリロケーションテーブルをトラバースするよう構成されてもよい。実施例では、ローダは、バーチャルファンクションの無効化実装を、バーチャルファンクションの無効化実装へのポインタを含むバーチャルファンクションの無効化実装の対応するラッパファンクションにより置換するようバーチャルファンクションテーブルを変更するよう構成されてもよい。
実施例では、命令セットアーキテクチャブリッジングレイヤは更に、ソース及びターゲット命令セットアーキテクチャを介したライブラリへのクラスの移転の実行を含む、ソース及びターゲット命令セットアーキテクチャを介したバーチャルファンクションの無効化実装への実行制御の移転を実行するため連係するよう構成されるライブラリエミュレータとソース命令セットエミュレータとを含むものであってもよい。
実施例では、ソース命令セットエミュレータは、ソース命令セットアーキテクチャの実行コンテクストを維持するよう構成され、ライブラリエミュレータは、ライブラリ実行コンテクストを維持するよう構成される。ライブラリエミュレータは更に、コールを処理し、ソース命令セットアーキテクチャの実行コンテクストにコールを設定し、コールを対応するゲートにリダイレクトするため、コールをバーチャルファンクションの無効化実装の対応するラッパファンクションにリダイレクトするよう構成されてもよい。さらに、ライブラリエミュレータは更に、コールをソースISA命令エミュレータにリダイレクトするよう構成される対応するゲートを有してもよい。ソースISA命令エミュレータは更に、コールをバーチャルファンクションの無効化実装にリダイレクトするよう構成されてもよい。ソース命令セットアーキテクチャとターゲット命令セットアーキテクチャとは、同一の命令セットアーキテクチャであってもよい。
さらに、バーチャルファンクションサポートによってソース命令セットアーキテクチャをターゲット命令セットアーキテクチャにブリッジする方法が開示された。本方法は、計算装置により実行される命令セットアーキテクチャブリッジングレイヤのローダが、実行のためアプリケーションをロードするステップを有し、アプリケーションは、計算装置のライブラリのバーチャルファンクションの無効化実装を有するクラスを少なくとも含むソース命令セットアーキテクチャのために少なくとも部分的に実現され、計算装置は、ターゲット命令セットアーキテクチャを実現する。さらに、本方法は、ローダが、ロードの一部として、バーチャルファンクションの無効化実装を検出するステップと、ローダが、クラスを変更後にバーチャルファンクションをコールしたライブラリにわたすと、バーチャルファンクションをコールしたライブラリのライブラリサービスに応答して、実行制御がソース及びターゲット命令セットアーキテクチャを介しバーチャルファンクションの無効化実装に移転することを可能にするようクラスのバーチャルファンクションテーブルを変更するステップとを有してもよい。
実施例では、検出するステップは、ローダがバーチャルファンクションの無効化実装を検出するため、アプリケーションのリロケーションテーブルをトラバースすることを含むものであってもよい。変更するステップは、バーチャルファンクションの無効化実装をバーチャルファンクションの無効化実装へのポインタを含む対応するラッパファンクションにより置換するようにバーチャルファンクションテーブルを変更することを含むものであってもよい。
実施例では、本方法は更に、命令セットアーキテクチャブリッジングレイヤのソース命令セットアーキテクチャエミュレータが、ソースISAアーキテクチャ実行コンテクストを維持するステップと、命令セットアーキテクチャブリッジングレイヤのライブラリエミュレータが、ライブラリ実行コンテクストを維持するステップと、クラスをライブラリにわたすと、ライブラリのライブラリサービスによるバーチャルファンクションのコールに応答して、ソース及びターゲット命令セットアーキテクチャを介しバーチャルファンクションの無効化実装への実行制御の移転を実行するように命令セットアーキテクチャエミュレータとライブラリエミュレータとの間で連係するステップとを有してもよい。
実施例では、本方法は更に、ライブラリエミュレータが、コールを処理し、コールをソース命令セットアーキテクチャの実行コンテクストに設定するため、バーチャルファンクションの無効化実装に対応するライブラリエミュレータのラッパファンクションにコールをリダイレクトするステップ、バーチャルファンクションの無効化実装のラッパファンクションに対応するライブラリエミュレータのゲートが、コールをソースISA命令エミュレータにリダイレクトするステップ、及び/又はソースISA命令エミュレータが、バーチャルファンクションの無効化実装にコールをリダイレクトするステップを有してもよい。
さらに、ソース命令セットアーキテクチャにおいて少なくとも部分的に実現されるアプリケーションを実行する装置が開示された。本装置は、ターゲット命令セットアーキテクチャを有するプロセッサメモリ構成と、実行のためアプリケーションをロードするよう構成されるローダを有する命令セットアーキテクチャブリッジングレイヤとを有してもよく、アプリケーションは、ソース命令セットアーキテクチャのために少なくとも部分的に実現され、ターゲット命令セットアーキテクチャのために実現されるライブラリのバーチャルファンクションの無効化実装を有するクラスを有する。ローダは、アプリケーションをロードする一部として、バーチャルファンクションの無効化実装を検出し、クラスをライブラリにわたした後にライブラリのライブラリサービスによるバーチャルファンクションのコールに応答して、実行制御がソース及びターゲット命令セットアーキテクチャを介しバーチャルファンクションの無効化実装に移転されることを可能にするようクラスのバーチャルファンクションテーブルを変更するよう構成されてもよい。
実施例では、ローダは、バーチャルファンクションの無効化実装を検出するため、アプリケーションのリロケーションテーブルをトラバースするよう構成されてもよい。ローダは、バーチャルファンクションの無効化実装を、バーチャルファンクションの無効化実装へのポインタを含む対応するラッパファンクションにより置換するようにバーチャルファンクションテーブルを変更するよう構成されてもよい。命令セットアーキテクチャブリッジングレイヤは更に、クラスをライブラリにわたした後にライブラリサービスによるバーチャルファンクションのコールに応答して、ソース及びターゲット命令セットアーキテクチャを介したバーチャルファンクションの無効化実装への実行制御の移転を実行するため連係するようプロセッサメモリ構成により実行されるよう構成される命令ソースアーキテクチャエミュレータとライブラリエミュレータとを有してもよい。
実施例では、ソース命令セットエミュレータは、ソース命令セットアーキテクチャの実行コンテクストを維持するよう構成され、ライブラリエミュレータは、ライブラリ実行コンテクストを維持するよう構成される。ライブラリエミュレータは更に、コールを処理し、コールをソース命令セットアーキテクチャの実行コンテクストに設定し、コールを対応するゲートにリダイレクトするよう構成されるバーチャルファンクションの無効化実装に対応するラッパファンクションを含むものであってもよい。ライブラリエミュレータは更に、コールをソースISA命令エミュレータにリダイレクトするよう構成される対応するゲートを有してもよい。ISA命令エミュレータは更に、バーチャルファンクションの無効化実装にコールをリダイレクトするよう構成されてもよい。
実施例では、本装置は、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、PDA、ゲームコンソール又はインターネット機器の選ばれた1つであってもよい。プロセッサは、マルチコアプロセッサであってもよい。本装置は、サービスのライブラリを有するオペレーティングシステムを更に有してもよい。本装置は、命令セットアーキテクチャから独立したアプリケーション実行環境を更に有し、アプリケーションは更に記命令セットアーキテクチャから独立したアプリケーション実行環境の少なくとも1つの他のサービスを利用する。

Claims (31)

  1. ーゲット命令セットアーキテクチャを備えたターゲット装置、前記ターゲット装置上で実行されるアプリケーションの提供中、前記ターゲット装置のライブラリのライブラリサービスが前記ライブラリのバーチャルファンクションをコールすることを実行するための命令セットアーキテクチャブリッジングレイヤを前記ターゲット装置に提供させるための命令であって、
    前記ライブラリサービスは、前記ターゲット命令セットアーキテクチャのために実現され、前記アプリケーションは、少なくとも部分的にソース命令セットアーキテクチャのために実現され、前記バーチャルファンクションをオーバライドした実装を備えたクラスを含み、
    前記命令セットアーキテクチャブリッジングレイヤは、実行のため前記アプリケーションをロードし、前記アプリケーションのロードの一部として、前記バーチャルファンクションをオーバライドした実装を検出し、前記コールに応答して、実行制御が前記ソース及びターゲット命令セットアーキテクチャを介し前記バーチャルファンクションをオーバライドした実装に移転されることを可能にするように前記クラスのバーチャルファンクションテーブルを変更するよう構成されるローダを有する命令
  2. 前記ローダは、前記バーチャルファンクションをオーバライドした実装を検出するため、前記アプリケーションのリロケーションテーブルをトラバースするよう構成される、請求項1記載の命令
  3. 前記ローダは、前記バーチャルファンクションをオーバライドした実装を、前記バーチャルファンクションをオーバライドした実装へのポインタを含む前記バーチャルファンクションをオーバライドした実装の対応するラッパファンクションにより置換するよう前記バーチャルファンクションテーブルを変更するよう構成される、請求項1記載の命令
  4. 前記命令セットアーキテクチャブリッジングレイヤは更に、前記ソース及びターゲット命令セットアーキテクチャを介した前記ライブラリへの前記クラスの移転の実行を含む、前記ソース及びターゲット命令セットアーキテクチャを介した前記バーチャルファンクションの無効化実装への実行制御の移転を実行するため連係するよう構成されるライブラリエミュレータとソース命令セットアーキテクチャエミュレータとを含む、請求項3記載の命令
  5. 前記ソース命令セットアーキテクチャエミュレータは、前記ソース命令セットアーキテクチャの実行コンテクストを維持するよう構成され、
    前記ライブラリエミュレータは、ライブラリ実行コンテクストを維持するよう構成される、請求項4記載の命令
  6. 前記ライブラリエミュレータは更に、前記コールを処理し、前記ソース命令セットアーキテクチャの実行コンテクストに前記コールを設定し、前記コールを対応するゲートにリダイレクトするため、前記コールを前記バーチャルファンクションをオーバライドした実装の対応するラッパファンクションにリダイレクトするよう構成される、請求項5記載の命令
  7. 前記ライブラリエミュレータは更に、前記コールを前記ソース命令セットアーキテクチャエミュレータにリダイレクトするよう構成される対応するゲートを有する、請求項6記載の命令
  8. 前記ソース命令セットアーキテクチャエミュレータは更に、前記コールを前記バーチャルファンクションをオーバライドした実装にリダイレクトするよう構成される、請求項7記載の命令
  9. 前記ソース命令セットアーキテクチャと前記ターゲット命令セットアーキテクチャとは、同一の命令セットアーキテクチャである、請求項1乃至8何れか一項記載の命令
  10. バーチャルファンクションサポートによってソース命令セットアーキテクチャをターゲット命令セットアーキテクチャにブリッジする方法であって、
    計算装置により実行される命令セットアーキテクチャブリッジングレイヤのローダが、実行のためアプリケーションをロードするステップであって、前記アプリケーションは、前記計算装置のライブラリのバーチャルファンクションをオーバライドした実装を有するクラスを少なくとも含むソース命令セットアーキテクチャのために少なくとも部分的に実現され、前記計算装置は、前記ターゲット命令セットアーキテクチャを実現する、ロードするステップと、
    前記ローダが、前記ロードの一部として、前記バーチャルファンクションをオーバライドした実装を検出するステップと、
    前記ローダが、前記クラスを変更後に前記バーチャルファンクションをコールしたライブラリにわたすと、前記バーチャルファンクションをコールしたライブラリのライブラリサービスに応答して、実行制御が前記ソース及びターゲット命令セットアーキテクチャを介し前記バーチャルファンクションをオーバライドした実装に移転することを可能にするよう前記クラスのバーチャルファンクションテーブルを変更するステップと、
    を有する方法。
  11. 前記検出するステップは、前記ローダが前記バーチャルファンクションをオーバライドした実装を検出するため、前記アプリケーションのリロケーションテーブルをトラバースすることを含む、請求項10記載の方法。
  12. 前記変更するステップは、前記バーチャルファンクションをオーバライドした実装を前記バーチャルファンクションをオーバライドした実装へのポインタを含む対応するラッパファンクションにより置換するように前記バーチャルファンクションテーブルを変更することを含む、請求項10記載の方法。
  13. 前記命令セットアーキテクチャブリッジングレイヤのソース命令セットアーキテクチャエミュレータが、ソース命令セットアーキテクチャ実行コンテクストを維持するステップと、
    前記命令セットアーキテクチャブリッジングレイヤのライブラリエミュレータが、ライブラリ実行コンテクストを維持するステップと、
    前記クラスを前記ライブラリにわたすと、前記ライブラリのライブラリサービスによる前記バーチャルファンクションのコールに応答して、前記ソース及びターゲット命令セットアーキテクチャを介し前記バーチャルファンクションをオーバライドした実装への実行制御の移転を実行するように前記ソース命令セットアーキテクチャエミュレータと前記ライブラリエミュレータとの間で連係するステップと、
    を更に有する、請求項12記載の方法。
  14. 前記ライブラリエミュレータが、前記コールを処理し、前記コールを前記ソース命令セットアーキテクチャの実行コンテクストに設定するため、前記バーチャルファンクションをオーバライドした実装に対応する前記ライブラリエミュレータのラッパファンクションに前記コールをリダイレクトするステップを更に有する、請求項13記載の方法。
  15. 前記バーチャルファンクションをオーバライドした実装のラッパファンクションに対応する前記ライブラリエミュレータのゲートが、前記コールを前記ソース命令セットアーキテクチャエミュレータにリダイレクトするステップを更に有する、請求項14記載の方法。
  16. 前記ソース命令セットアーキテクチャエミュレータが、前記バーチャルファンクションをオーバライドした実装に前記コールをリダイレクトするステップを更に有する、請求項15記載の方法。
  17. 前記ソース命令セットアーキテクチャと前記ターゲット命令セットアーキテクチャとは、同一の命令セットアーキテクチャである、請求項10乃至16何れか一項記載の方法。
  18. ソース命令セットアーキテクチャにおいて少なくとも部分的に実現されるアプリケーションを実行する装置であって、
    ターゲット命令セットアーキテクチャを有するプロセッサメモリ構成と、
    実行のためアプリケーションをロードするよう構成されるローダを有する命令セットアーキテクチャブリッジングレイヤであって、前記アプリケーションは、ソース命令セットアーキテクチャのために少なくとも部分的に実現され、前記ターゲット命令セットアーキテクチャのために実現されるライブラリのバーチャルファンクションをオーバライドした実装を有するクラスを有し、前記ローダは、前記アプリケーションをロードする一部として、前記バーチャルファンクションをオーバライドした実装を検出し、前記クラスを前記ライブラリにわたした後に前記ライブラリのライブラリサービスによる前記バーチャルファンクションのコールに応答して、実行制御が前記ソース及びターゲット命令セットアーキテクチャを介し前記バーチャルファンクションをオーバライドした実装に移転されることを可能にするよう前記クラスのバーチャルファンクションテーブルを変更するよう構成される、命令セットアーキテクチャブリッジングレイヤと、
    を有する装置。
  19. 前記ローダは、前記バーチャルファンクションをオーバライドした実装を検出するため、前記アプリケーションのリロケーションテーブルをトラバースするよう構成される、請求項18記載の装置。
  20. 前記ローダは、前記バーチャルファンクションをオーバライドした実装を、前記バーチャルファンクションをオーバライドした実装へのポインタを含む対応するラッパファンクションにより置換するように前記バーチャルファンクションテーブルを変更するよう構成される、請求項18記載の装置。
  21. 前記命令セットアーキテクチャブリッジングレイヤは更に、前記クラスを前記ライブラリにわたした後に前記ライブラリサービスによる前記バーチャルファンクションのコールに応答して、前記ソース及びターゲット命令セットアーキテクチャを介した前記バーチャルファンクションをオーバライドした実装への実行制御の移転を実行するため連係するよう前記プロセッサメモリ構成により実行されるよう構成されるソース命令セットアーキテクチャエミュレータとライブラリエミュレータとを有する、請求項20記載の装置。
  22. 前記ソース命令セットアーキテクチャエミュレータは、前記ソース命令セットアーキテクチャの実行コンテクストを維持するよう構成され、
    前記ライブラリエミュレータは、ライブラリ実行コンテクストを維持するよう構成される、請求項21記載の装置。
  23. 前記ライブラリエミュレータは更に、前記コールを処理し、前記コールを前記ソース命令セットアーキテクチャの実行コンテクストに設定し、前記コールを対応するゲートにリダイレクトするよう構成される前記バーチャルファンクションをオーバライドした実装に対応するラッパファンクションを含む、請求項22記載の装置。
  24. 前記ライブラリエミュレータは更に、前記コールを前記ソース命令セットアーキテクチャエミュレータにリダイレクトするよう構成される対応するゲートを有する、請求項23記載の装置。
  25. 前記ソース命令セットアーキテクチャエミュレータは更に、前記バーチャルファンクションをオーバライドした実装に前記コールをリダイレクトするよう構成される、請求項24記載の装置。
  26. 前記ソース命令セットアーキテクチャと前記ターゲット命令セットアーキテクチャとは、同一の命令セットアーキテクチャである、請求項18乃至25何れか一項記載の装置。
  27. 当該装置は、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、PDA、ゲームコンソール又はインターネット機器の選ばれた1つである、請求項26記載の装置。
  28. 前記プロセッサは、マルチコアプロセッサである、請求項26記載の装置。
  29. 前記サービスのライブラリを有するオペレーティングシステムを更に有する、請求項26記載の装置。
  30. 命令セットアーキテクチャから独立したアプリケーション実行環境を更に有し、
    前記アプリケーションは更に、前記命令セットアーキテクチャから独立したアプリケーション実行環境の少なくとも1つの他のサービスを利用する、請求項26記載の装置。
  31. 請求項1乃至9何れか一項記載の命令を記憶するためのコンピュータ可読記憶媒体。
JP2015520791A 2012-08-08 2012-08-08 バーチャルファンクションを無効にするコールのためのサポートを含むisaブリッジング Expired - Fee Related JP5976930B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/079798 WO2014022980A1 (en) 2012-08-08 2012-08-08 Isa bridging including support for call to overidding virtual functions

Publications (2)

Publication Number Publication Date
JP2015525922A JP2015525922A (ja) 2015-09-07
JP5976930B2 true JP5976930B2 (ja) 2016-08-24

Family

ID=49696204

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015520791A Expired - Fee Related JP5976930B2 (ja) 2012-08-08 2012-08-08 バーチャルファンクションを無効にするコールのためのサポートを含むisaブリッジング

Country Status (6)

Country Link
US (1) US8768682B2 (ja)
EP (1) EP2883133A4 (ja)
JP (1) JP5976930B2 (ja)
KR (1) KR101394780B1 (ja)
CN (1) CN103443763B (ja)
WO (1) WO2014022980A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262156B2 (en) * 2014-02-12 2016-02-16 International Business Machines Corporation Methods for transparent management of context and state in an asynchronous callback flow
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
US20150379169A1 (en) * 2014-06-27 2015-12-31 Yong Wu Efficient emulation for pseudo-wrapped callback handling in binary translation software
US9792098B2 (en) 2015-03-25 2017-10-17 International Business Machines Corporation Unaligned instruction relocation
US10452409B2 (en) * 2015-10-23 2019-10-22 Oracle International Corporation Universal adapter for native calling
CN106844181B (zh) * 2017-02-07 2021-02-23 网易(杭州)网络有限公司 用于记录用户行为的方法、系统及移动终端
US10536474B2 (en) * 2017-09-07 2020-01-14 Cmd Watch Security Inc. Command interception
CN108628689B (zh) * 2018-04-28 2021-09-07 武汉斗鱼网络科技有限公司 一种对话框数据传输方法、装置、计算机及存储介质
CN110457151B (zh) * 2019-07-10 2022-01-28 五八有限公司 热修复方法、装置及可读存储介质
CN113076151B (zh) * 2021-04-21 2023-10-10 光禹莱特数字科技(上海)有限公司 应用程序交互方法、装置、计算机设备及存储介质

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59501684A (ja) * 1982-10-22 1984-10-04 インタ−ナシヨナル・ビジネス・マシ−ンズ・コ−ポレ−シヨン 目的命令ストリ−ムへ殆んど実時間で插入するためのソ−スおよび目的命令ストリ−ムの外部における加速式命令写像
US5297284A (en) * 1991-04-09 1994-03-22 Microsoft Corporation Method and system for implementing virtual functions and virtual base classes and setting a this pointer for an object-oriented programming language
US5805885A (en) * 1992-12-24 1998-09-08 Microsoft Corporation Method and system for aggregating objects
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US6535903B2 (en) * 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
CA2171898C (en) * 1996-03-15 2000-02-01 Brian Ward Thomson Linker optimization for compiled object oriented programs
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US7941647B2 (en) * 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6549959B1 (en) * 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
US6675377B1 (en) * 1999-09-13 2004-01-06 Matsushita Electric Industrial Co., Ltd. Program conversion apparatus
US6986128B2 (en) * 2000-01-07 2006-01-10 Sony Computer Entertainment Inc. Multiple stage program recompiler and method
US6907519B2 (en) * 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US7103878B2 (en) * 2001-12-13 2006-09-05 Hewlett-Packard Development Company, L.P. Method and system to instrument virtual function calls
GB0215033D0 (en) 2002-06-28 2002-08-07 Critical Blue Ltd Instruction set translation method
US7603662B2 (en) * 2002-10-09 2009-10-13 Microsoft Corporation System and method for sensing types of local variables
US7353501B2 (en) * 2002-11-18 2008-04-01 Microsoft Corporation Generic wrapper scheme
US20040117532A1 (en) * 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
US20050015754A1 (en) * 2003-06-18 2005-01-20 Virtutech Ab Method and system for multimode simulator generation from an instruction set architecture specification
GB0316531D0 (en) * 2003-07-15 2003-08-20 Transitive Ltd Method and apparatus for performing native binding
JP2005141380A (ja) * 2003-11-05 2005-06-02 Matsushita Electric Ind Co Ltd テンプレートコンパイル方法
JP2006146613A (ja) * 2004-11-19 2006-06-08 Matsushita Electric Ind Co Ltd プログラム変換方法
JP4768984B2 (ja) * 2004-12-06 2011-09-07 パナソニック株式会社 コンパイル方法、コンパイルプログラムおよびコンパイル装置
CN100573443C (zh) * 2004-12-30 2009-12-23 英特尔公司 从混合源指令集架构到单一目标指令集架构的二进制代码转换中的多格式指令的格式选择
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
US20070006178A1 (en) * 2005-05-12 2007-01-04 Microsoft Corporation Function-level just-in-time translation engine with multiple pass optimization
US7293170B2 (en) * 2005-06-06 2007-11-06 Tranxition Corporation Changing the personality of a device by intercepting requests for personality information
US8082430B2 (en) * 2005-08-09 2011-12-20 Intel Corporation Representing a plurality of instructions with a fewer number of micro-operations
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
US8099724B2 (en) * 2006-02-28 2012-01-17 Oracle America, Inc. Fast patch-based method calls
US8352925B2 (en) * 2007-01-16 2013-01-08 Oracle America, Inc. Mechanism for enabling a set of code intended for a first platform to be executed on a second platform
US8321849B2 (en) * 2007-01-26 2012-11-27 Nvidia Corporation Virtual architecture and instruction set for parallel thread computing
US7992130B2 (en) * 2007-05-07 2011-08-02 Microsoft Corporation Class-based object-oriented features in class-less script language
US7941641B1 (en) * 2007-10-01 2011-05-10 Yong-Kyu Jung Retargetable instruction decoder for a computer processor
US8156479B2 (en) 2007-12-07 2012-04-10 International Business Machines Corporation System and method of monitoring dynamic scopes in synchronous and asynchronous calls
US8146106B2 (en) * 2007-12-31 2012-03-27 Intel Corporation On-demand emulation via user-level exception handling
US8099541B2 (en) * 2008-01-22 2012-01-17 Globalfoundries Inc. Minivisor entry point in virtual machine monitor address space
US9152442B2 (en) * 2008-08-29 2015-10-06 Red Hat, Inc. Callbacks in virtual machines
US8266604B2 (en) * 2009-01-26 2012-09-11 Microsoft Corporation Transactional memory compatibility management
US8255674B2 (en) * 2009-01-28 2012-08-28 International Business Machines Corporation Implied storage operation decode using redundant target address detection
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
US9038018B2 (en) * 2010-10-08 2015-05-19 Microsoft Technology Licensing, Llc Integrating software components
US20120151184A1 (en) * 2010-12-10 2012-06-14 Daniel Shawcross Wilkerson Hard object: constraining control flow and providing lightweight kernel crossings
US9934166B2 (en) * 2010-12-10 2018-04-03 Daniel Shawcross Wilkerson Hard object: constraining control flow and providing lightweight kernel crossings
US8683478B2 (en) * 2010-12-21 2014-03-25 International Business Machines Corporation Best fit mapping of self-virtualizing input/output device virtual functions for mobile logical partitions
EP2482184A1 (en) * 2011-02-01 2012-08-01 Irdeto B.V. Adaptive obfuscated virtual machine
US20120254593A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for jumps using a mask register
US8799693B2 (en) * 2011-09-20 2014-08-05 Qualcomm Incorporated Dynamic power optimization for computing devices
US9063760B2 (en) * 2011-10-13 2015-06-23 International Business Machines Corporation Employing native routines instead of emulated routines in an application being emulated
JP5953867B2 (ja) * 2012-03-26 2016-07-20 富士ゼロックス株式会社 プログラム、及びプログラム保護装置

Also Published As

Publication number Publication date
US20140046649A1 (en) 2014-02-13
EP2883133A1 (en) 2015-06-17
WO2014022980A1 (en) 2014-02-13
CN103443763A (zh) 2013-12-11
US8768682B2 (en) 2014-07-01
CN103443763B (zh) 2016-10-05
EP2883133A4 (en) 2016-03-23
KR101394780B1 (ko) 2014-05-15
JP2015525922A (ja) 2015-09-07
KR20140031831A (ko) 2014-03-13

Similar Documents

Publication Publication Date Title
JP5976930B2 (ja) バーチャルファンクションを無効にするコールのためのサポートを含むisaブリッジング
US10761867B2 (en) Nested emulation and dynamic linking environment
KR101691063B1 (ko) 콜백을 이용하는 isa 브리징
CN107077337B (zh) 用于执行根据两个指令集架构编译的应用编码的系统和方法
US10437591B2 (en) Executing an operating system on processors having different instruction set architectures
US8327354B1 (en) Virtualization with binary translation
US11301562B2 (en) Function execution based on data locality and securing integration flows
US8392916B2 (en) Multiple layers of virtualization in a computing system
US20220405385A1 (en) Secure container construction device and method executable by android application, and computer-readable recording medium on which program thereof is recorded
US20140222410A1 (en) Hybrid emulation and kernel function processing systems and methods
TW201407377A (zh) 用於提供存取虛擬命名空間中資源的虛擬整合呼叫
CN111078412B (zh) 一种通过api截获对gpu进行资源管理的方法
US9229757B2 (en) Optimizing a file system interface in a virtualized computing environment
JP6352486B2 (ja) コールバックによるisaブリッジング

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160502

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

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees