(57)【特許請求の範囲】
【請求項１】
ターゲット命令セットアーキテクチャをサポートするターゲットコンピュータプロセッサを備えたターゲット装置に、前記ターゲット装置上に実行されるアプリケーションによってコールされる前記ターゲット装置のライブラリのライブラリサービスを実行し、前記アプリケーションのコールバックファンクションをコールバックするため、命令セットアーキテクチャブリッジングレイヤを前記ターゲット装置に提供させるプログラムであって、
前記ライブラリサービスは前記ターゲット命令セットアーキテクチャについて実現され、前記アプリケーションはソースコンピュータプロセッサのソース命令セットアーキテクチャについて少なくとも部分的に実現され、
前記ソース及びターゲットコンピュータプロセッサのソース及びターゲット命令セットアーキテクチャは、異なるコンピュータプロセッサファミリの異なるコンピュータプロセッサ命令セットアーキテクチャであり、
前記命令セットアーキテクチャブリッジングレイヤは、前記ソース及びターゲット命令セットアーキテクチャにわたって、前記アプリケーションが前記ライブラリサービスを可能にし、前記ライブラリサービスが前記コールバックファンクションをコールバックすることを可能にするためそれぞれと連携するライブラリエミュレータとソース命令セットアーキテクチャエミュレータとを有し、
前記ソース命令セットアーキテクチャエミュレータは前記ソース命令セットアーキテクチャの実行コンテクストを維持し、前記ライブラリエミュレータはライブラリ実行コンテクストを維持し、
前記ライブラリエミュレータは更に、前記ライブラリサービスに対応するラッパファンクションにコールをリダイレクトする前記ライブラリサービスに対応するゲートを有し、前記ライブラリサービスに対応するラッパファンクションは、前記コールを処理し、前記ライブラリ実行コンテクストにおいて前記コールを設定するプログラム。
【請求項２】
前記ゲートは第１のゲートであり、
前記ライブラリエミュレータは更に、前記ソース命令セットアーキテクチャエミュレータにコールバックをリダイレクトする前記コールバックファンクションに対応する第２のゲートを有する、請求項１記載のプログラム。
【請求項３】
前記ラッパファンクションは第１のラッパファンクションであり、
前記ライブラリエミュレータは更に、前記コールバックを処理し、前記ソース命令セットアーキテクチャの実行コンテクストにおいて前記コールバックを設定し、前記コールバックファンクションに対応する前記ライブラリエミュレータのゲートに前記コールバックをリダイレクトする前記コールバックファンクションに対応する第２のラッパファンクションを有する、請求項１記載のプログラム。
【請求項４】
前記命令セットアーキテクチャブリッジングレイヤは更に、ローダを有し、
前記ローダは、前記アプリケーションをロードし、前記ライブラリエミュレータが前記コールを可能にするのに介入することを可能にする方法で前記ライブラリサービスを参照するシンボル名を修正する、請求項１記載のプログラム。
【請求項５】
前記ローダは更に、前記ソース命令セットアーキテクチャエミュレータが前記コールバックを可能にするのに介入することを可能にする方法で前記アプリケーションのコールバックファンクションを参照するシンボル名を修正する、請求項４記載のプログラム。
【請求項６】
コールバックによってソースコンピュータプロセッサのソース命令セットアーキテクチャをターゲットコンピュータプロセッサのターゲット命令セットアーキテクチャにブリッジする方法であって、
前記ソース及びターゲットコンピュータプロセッサのソース及びターゲット命令セットアーキテクチャは、異なるコンピュータプロセッサファミリの異なるコンピュータプロセッサ命令セットアーキテクチャであり、
当該方法は、
計算装置の命令セットアーキテクチャブリッジングレイヤのソース命令セットアーキテクチャエミュレータが、ソース命令セットアーキテクチャ実行コンテクストを維持するステップであって、前記計算装置は前記ターゲット命令セットアーキテクチャにより実現されるライブラリサービスを有し、前記計算装置は前記ターゲットコンピュータプロセッサを有する、維持するステップと、
前記計算装置の命令セットアーキテクチャブリッジングレイヤのライブラリエミュレータが、ライブラリ実行コンテクストを維持し、前記ライブラリサービスをコールするため、前記計算装置上で実行され、前記ソース命令セットアーキテクチャにより少なくとも部分的に実現されるアプリケーションと、前記ソース及びターゲット命令セットアーキテクチャにわたって、前記アプリケーションのコールバックファンクションをコールバックするために前記ライブラリサービスとを実行するように前記ソース命令セットアーキテクチャエミュレータと前記ライブラリエミュレータとの間で連携するステップであって、前記連携は、前記ライブラリサービスに対応するライブラリエミュレータのゲートが前記ライブラリサービスに対応するラッパファンクションに前記コールをリダイレクトすることを含む、維持するステップと、
前記ライブラリサービスに対応するラッパファンクションが、前記コールを処理し、前記ライブラリ実行コンテクストにおいて前記コールを設定するため処理するステップと、
を有する方法。
【請求項７】
前記ラッパファンクションは第１のラッパファンクションであり、
当該方法は更に、前記コールバックファンクションに対応するライブラリエミュレータの第２のラッパファンクションに前記コールバックをリダイレクトし、前記コールバックを処理し、前記ソース命令セットアーキテクチャの実行コンテクストにおいて前記コールバックを設定するステップを有する、請求項６記載の方法。
【請求項８】
前記ゲートは第１のゲートであり、
当該方法は更に、前記コールバックファンクションに対応するライブラリエミュレータの第２のラッパファンクションに前記コールバックをリダイレクトし、前記コールバックを処理し、前記ソース命令セットアーキテクチャの実行コンテクストにおいて前記コールバックを設定するステップを有する、請求項６記載の方法。
【請求項９】
前記ソース命令セットアーキテクチャエミュレータと前記ライブラリエミュレータとに関連するローダが、前記ライブラリエミュレータが前記コールを可能にするのに介入することを可能にする方法で前記ライブラリサービスを参照するシンボル名を修正することを含む、前記アプリケーションをロードするステップを更に有する、請求項６記載の方法。
【請求項１０】
前記ローダが、前記ソース命令セットアーキテクチャエミュレータが前記コールバックを可能にするのに介入することを可能にする方法で前記アプリケーションのコールバックファンクションを参照するシンボル名を修正するステップを更に有する、請求項９記載の方法。
【請求項１１】
ソースコンピュータプロセッサのソース命令セットアーキテクチャにより少なくとも部分的に実現されるアプリケーションを実行する装置であって、
ターゲット命令セットアーキテクチャを有するターゲットコンピュータプロセッサとメモリ構成であって、前記ソース及びターゲットコンピュータプロセッサのソース及びターゲット命令セットアーキテクチャは、異なるコンピュータプロセッサファミリの異なるコンピュータプロセッサ命令セットアーキテクチャである、ターゲットコンピュータプロセッサとメモリ構成と、
ソース命令セットアーキテクチャエミュレータとライブラリエミュレータとを有する命令セットアーキテクチャブリッジングレイヤであって、前記ソース及びターゲット命令セットアーキテクチャにわたって、前記ソース命令セットアーキテクチャにより少なくとも部分的に実現されるアプリケーションが前記ターゲット命令セットアーキテクチャにより実現される前記装置のライブラリサービスをコールすることを可能にし、前記ライブラリサービスが前記装置のコールバックファンクションをコールバックすることを可能にするよう連携するため、前記ターゲットコンピュータプロセッサ及びメモリによって実行される命令セットアーキテクチャブリッジングレイヤと、
を有し、
前記ソース命令セットアーキテクチャエミュレータは前記ソース命令セットアーキテクチャの実行コンテクストを維持し、前記ライブラリエミュレータはライブラリ実行コンテクストを維持し、
前記ライブラリエミュレータは更に、前記ライブラリサービスに対応するラッパファンクションに前記コールをリダイレクトする前記ライブラリサービスに対応するゲートを有し、
前記ライブラリエミュレータは更に、前記ライブラリサービスに対応するラッパファンクションを有し、前記ラッパファンクションは、前記コールを処理し、前記ライブラリ実行コンテクストにおいて前記コールを設定する装置。
【請求項１２】
前記ゲートは第１のゲートであり、
前記ライブラリエミュレータは更に、前記ソース命令セットアーキテクチャエミュレータに前記コールバックをリダイレクトする前記コールバックファンクションに対応する第２のゲートを有する、請求項１１記載の装置。
【請求項１３】
前記ラッパファンクションは第１のラッパファンクションであり、
前記ライブラリエミュレータは更に、前記コールバックを処理し、前記ソース命令セットアーキテクチャの実行コンテクストにおいて前記コールバックを設定し、前記コールバックファンクションに対応する前記ライブラリエミュレータのゲートに前記コールバックをリダイレクトする前記コールバックファンクションに対応する第２のラッパファンクションを有する、請求項１１記載の装置。
【請求項１４】
前記命令セットアーキテクチャブリッジングレイヤは更に、ローダを有し、
前記ローダは、前記アプリケーションをロードし、前記ライブラリエミュレータが前記コールを可能にするのに介入することを可能にする方法で前記ライブラリサービスを参照するシンボル名を修正する、請求項１１記載の装置。
【請求項１５】
前記ローダは更に、前記ソース命令セットアーキテクチャエミュレータが前記コールバックを可能にするのに介入することを可能にする方法で前記アプリケーションのコールバックファンクションを参照するシンボル名を修正する、請求項１４記載の装置。
【請求項１６】
前記ライブラリサービスを有するオペレーティングシステムを更に有する、請求項１１記載の装置。
【請求項１７】
命令セットアーキテクチャから独立したアプリケーション実行環境を更に有し、
前記アプリケーションは更に、前記命令セットアーキテクチャから独立したアプリケーション実行環境の少なくとも１つの他のサービスを利用する、請求項１１記載の装置。
【請求項１８】
請求項１乃至５何れか一項記載のプログラムを記憶するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ここに与えられる背景の説明は、開示のコンテクストを全体的に提示するためのものである。特段の断りがない場合、このセクションにおいて説明される題材は、本出願の請求項に対する従来技術でなく、本セクションに含めることによって従来技術として自認されない。
【０００２】
計算装置は、それの命令セットアーキテクチャ（ＩＳＡ）により特徴付けされる。典型的には、計算装置は、オペレーティングシステム（ＯＳ）サービスを含み、ＯＳサービスは、アプリケーションの開発者が計算装置上で実行されるアプリケーションを開発することを容易にするため、計算装置のＩＳＡのために開発されたランタイムライブラリサービス（ＬＩＢ）を含む。例えば、各種スマートフォンは、ＡＲＭプロセッサとそれのＩＳＡを利用することによって特徴付けされる。これらのスマートフォンは、各スマートフォンについて開発された各種アプリケーションのサポートにおいてｉＯＳやＡｎｄｒｏｉｄなどのＯＳを含む。ある計算装置は、Ｊａｖａ（登録商標）やＡｎｄｒｏｉｄ  Ａｐｐｌｉｃａｔｉｏｎ  ＦｒａｍｅｗｏｒｋなどのＩＳＡから独立した実行環境を提供する。しかしながら、多数のアプリケーションが、ＩＳＡに依存したランタイムライブラリのサービスを呼び出すＩＳＡ依存部分を含む。さらに、これらのＩＳＡ依存部分は、しばしばＩＳＡに依存したランタイムライブラリからのコールバックを求めるコールバックファンクションを含み、このようなコールバックは、ランタイムまでしばしば検出されず、バイナリ変換などの従来のアプローチをニーズに対処するのに不適切なものにする。
【図面の簡単な説明】
【０００３】
本発明の実施例は、限定することなく、同様の参照が同様の要素を示す添付図面に示される実施例により説明される。
【図１】図１は、コールバックによるＩＳＡブリッジングが搭載された一例となる計算装置を示す。
【図２】図２は、図１のＩＳＡブリッジングレイヤをさらに詳細に示す。
【図３】図３は、ソースＩＳＡのアプリケーションとターゲットＩＳＡのライブラリサービスとの間でコール及びコールバックをブリッジングする方法を示す。
【図４】図４は、ソースＩＳＡのアプリケーションとターゲットＩＳＡのライブラリサービスとの間でコール及びコールバックをブリッジングする方法を示す。
【図５】図５は、本開示の実施例により全てが構成される図３及び４の方法の全ての又は選択された側面を実施するよう構成される命令を有する一例となる非一時的なコンピュータ可読記憶媒体を示す。
【発明を実施するための形態】
【０００４】
コールバックによるＩＳＡブリッジングに関連する方法、装置及び記憶媒体が開示される。各種実施例では、少なくとも１つのコンピュータ可読記憶媒体は、命令の実行に応答して、アプリケーションのコールバックファンクションをコールバックするためのライブラリサービスを実現するため、ターゲットＩＳＡを備えたターゲット装置がターゲット装置に対するＩＳＡブリッジングレイヤを提供することを可能にするよう構成される命令を有する。ライブラリサービスは、ターゲットＩＳＡについて実現され、アプリケーションは、ターゲットＩＳＡと異なるソースＩＳＡについて少なくとも部分的に実現されてもよい。ＩＳＡブリッジングレイヤは、アプリケーションがライブラリサービスをコールし、ライブラリサービスが２つの命令セットアーキテクチャ間でコールバックファンクションをコールバックすることを可能にするよう連携するよう構成されるソースＩＳＡエミュレータとライブラリエミュレータとを有してもよい。
【０００５】
例示的な実施例の各種態様が、他の当業者に当業者が自分の作業の本質を伝えるため一般に利用される用語を用いて説明される。しかしながら、他の実施例は説明された態様の一部のみにより実施されてもよいことが当業者に明らかであろう。説明のため、例示的な実施例の完全な理解を提供するため、具体的な数字、題材及びコンフィギュレーションが提供される。しかしながら、他の実施例はこれら具体的な詳細になしに実施可能であることが、当業者に明らかであろう。他の例では、周知の特徴は、例示的な実施例を不明瞭にしないように省略又は簡単化される。
【０００６】
各種処理が、例示的な実施例を理解するのに最も役立つ方法により複数の別々の処理として説明される。しかしながら、説明の順序は、これらの処理が必ずしも順序に依存することを意味するように解釈されるべきでない。特に、これらの処理は、提示の順序で実行される必要はない。さらに、別々の処理としての処理の説明は、当該処理が独立の及び／又は別々のエンティティにより実行される必要があることを要求するものとして解釈されるべきでない。別々のモジュールとしてのエンティティ及び／又はモジュールの説明は、これらのモジュールが別々のものであり、及び／又は別々の処理を実行することを要求するものとして解釈されるべきでない。各種実施例では、図示及び／又は説明された処理、エンティティ、データ及び／又はモジュールは、マージ、さらなるサブパーツに分割及び／又は省略されてもよい。
【０００７】
“一実施例では”又は“実施例では”というフレーズは、繰り返し利用される。これらのフレーズは、一般に同一の実施例を参照するものでないが、参照してもよい。特段の断りがない場合、“有する”及び“含む”という用語は同義的である。フレーズ“Ａ／Ｂ”は、“Ａ又はＢ”を意味する。フレーズ“Ａ及び／又はＢ”は、“（Ａ），（Ｂ）又は（Ａ及びＢ）”を意味する。“Ａ、Ｂ及びＣの少なくとも１つ”というフレーズは、“（Ａ），（Ｂ），（Ｃ），（Ａ及びＢ），（Ａ及びＣ），（Ｂ及びＣ）又は（Ａ，Ｂ及びＣ）”を意味する。
【０００８】
図１は、本開示の各種実施例によるコールバックによるＩＳＡブリッジングを搭載した一例となる計算装置を示す。図示されるように、例示的な実施例について、計算装置１０２は、図示されるように互いに接続される、オペレーティングシステム（ＯＳ）１２２、ＩＳＡブリッジングレイヤ１２３及びそこで実行されるアプリケーション１２０、グラフィック処理ユニット（ＧＰＩ）１０６、ディスプレイユニット１０８及びネットワーキングインタフェース１１０を有するよう構成されるプロセッサメモリ構成１０４を有する。ＯＳ１２２は、サービス１２４のライブラリを含む。さらに、計算装置１０２はまた、アプリケーション１２０とＯＳ１２２との間の任意的なミドルウェア１２１を有してもよい。以下でより詳細に説明されるように、ＩＳＡブリッジングレイヤ１２３は、アプリケーション１２０が全体的に又は部分的に（例えば、ＩＳＡに独立したミドルウェア１２１がまた利用されるときなど）ソースＩＳＡにおいて実現されることを可能にするための各種ランタイム機能及びサービス（限定することなく、ダイナミックバインディングなどを含む）を備えるよう構成され、ＯＳ１２２（ライブラリサービス１２４を含む）は、ソースＩＳＡと異なるターゲットＩＳＡにおいて実現されてもよい。さらに、アプリケーション１２０は、ライブラリサービス１２４の各種サービスが各種状態の下でアプリケーション１２０の各種コールバックファンクション１２５をコールバックすることを要求するライブラリファンクション１２５をコールバックすることを要求するライブラリサービス１２４の利用特性を含むアプリケーション（特に、ソースＩＳＡを用いて実現される部分）であってもよい。ＩＳＡブリッジングレイヤ１２３はまた、プロセスバーチャルマシーン（ＰＶＭ）と呼ばれてもよい。
【０００９】
計算装置１０２は、サーバ、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、ゲームコンソール、インターネット機器又は同様の他の計算装置であってもよい。計算装置１０２の具体例は、限定することなく、カリフォルニア州のＰａｌｏ  ＡｌｔｏのＨｅｗｌｅｔｔ  Ｐａｃｋａｒｄから入手可能なサーバ、テキサス州のＡｕｓｔｉｎのＤｅｌｌ  Ｃｏｍｐｕｔｅｒから入手可能なデスクトップ又はラップトップコンピュータ、カリフォルニア州のＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ  Ｃｏｍｐｕｔｅｒから入手可能なスマートフォン及び計算タブレット、日本の東京の任天堂から入手可能なゲームコンソールなどを含むものであってもよい。
【００１０】
プロセッサメモリ構成１０４は、限定することなく、各種実行速度及び電力消費のシングル又はマルチコアプロセッサ、及びＤＲＡＭ、ＦＬＡＳＨなどの各種タイプの１以上のレベルのキャッシュを備えた各種アーキテクチャのメモリと備えた構成を含む広範なプロセッサメモリ構成を表すことが意図される。各種実施例では、ＧＰＵ１０６は、ＯＳ１２２に対してビデオ復号化及び／又はグラフィック処理ファンクションを提供するよう構成され、ディスプレイユニット１０８は、ＨＤビデオなどのマルチメディアコンテンツが再生されるのを可能にするよう構成される。同様に、ＧＰＵ１０６及びディスプレイユニット１０８は、当該技術において知られる広範なグラフィックプロセッサ及びディスプレイ要素を表すことが意図される。同様に、ネットワーク１３４は、当該技術において知られる広範なネットワークを表すことが意図される。ネットワーク１３４の具体例は、有線又は無線、ローカル又はワイドエリア、プライベート又はインターネットを含むパブリックネットワークを含むものであってもよい。
【００１１】
ＯＳ１２２（ライブラリサービス１２４を含む）は、ライブラリサービス１２４の呼び出しを規定するアプリケーションプログラミングインタフェース（ＡＰＩ）の除き、当該技術において知られる広範なオペレーティングシステム要素を表すことが意図される。ＯＳ１２２は、メモリリソースを管理し、タスクの実行をスケジューリングするよう構成されるカーネル、各種デバイスリソースを管理するよう構成されるデバイスドライバなどの従来のコンポーネントを含むものであってもよい。実施例では、ＯＳ１２２は、ＡｎｄｒｏｉｄアプリケーションフレームワークのサポートにおけるＡｎｄｒｏｉｄのバーチャルマシーンなど、ミドルウェア１２１（利用される場合）のサポートにおけるバーチャルマシーンを含むものであってもよい。実施例について、アプリケーション１２０のコールバックファンクション１２５の呼び出しを実行するため、ライブラリサービス１２４の呼び出しを規定することに加えて、ライブラリサービス１２４のＡＰＩはまた、アプリケーション１２０のコールバックファンクション１２５の対応するスタブ及びシグネチャを有してもよい。ＯＳ１２２の具体例は、限定することなく、ワシントン州のＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＷｉｎｄｏｗｓ（登録商標）オペレーティングシステム、ノースカロライナ州のＲａｌｅｉｇｈのＲｅｄ  Ｈａｔ（登録商標）などから入手可能なＬｉｎｕｘ（登録商標）、Ｏｐｅｎ  Ｈａｎｄｓｅｔ  Ａｌｌｉａｎｃｅにより開発されたＡｎｄｒｏｉｄＴＭ、又はカリフォルニア州のＣｕｐｅｒｔｉｎｏのＡｐｐｌｅ（登録商標）  Ｃｏｍｐｕｔｅｒから入手可能なｉＯＳを含むものであってもよい。
【００１２】
同様に、ミドルウェア１２１は、限定することなく、ＩＳＡから独立したミドルウェアを含む当該技術において知られる広範なミドルウェア要素を表すことが意図される。ミドルウェア１２１の具体例は、限定することなく、Ａｎｄｒｏｉｄアプリケーションフレームワーク、Ｊａｖａ（登録商標）又は他のアプリケーションフレームワーク又はＩＳＡから独立した実行環境を含むものであってもよい。
【００１３】
同様に、アプリケーション１２０（コールバックファンクション１２５を含む）は、当該技術において知られる広範なアプリケーションを表すことが意図される。アプリケーション１２０の具体例は、限定することなく、カレンダ、ワードプロセッシング、スプレッドシート、Ｔｗｉｔｔｅｒ、Ｆａｃｅｂｏｏｋなどのパーソナルアシスタント、プロダクティビティ又はソーシャルネットワーキングアプリケーション、又はブラウザなどの汎用アプリケーションエージェントを含むものであってもよい。ブラウザの具体例は、限定することなく、ワシントン州のＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎから入手可能なＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ又はカリフォルニア州のＭｏｕｎｔａｉｎ  ＶｉｅｗのＭｏｚｉｌｌａから入手可能なＦｉｒｅｆｏｘを含むものであってもよい。
【００１４】
図２を参照して、本開示の各種実施例による一例となるＩＳＡブリッジングレイヤ１２３が示される。図示されるように、実施例について、ＩＳＡブリッジングレイヤ１２３は、限定することなく、ダイナミックバインディングサービスを含む各種ランタイム機能及びサービスを提供するよう構成されるＩＳＡブリッジングローダ２０２、ソースＩＳＡエミュレータ２０４及びターゲットＩＳＡライブラリエミュレータ２０６（以降、単にＬＩＢエミュレータ）を有してもよい。ソースＩＳＡエミュレータ２０４は、ソースＩＳＡコンテクスト２１２及びバイナリ変換エンジン２１５を有する。ソースＩＳＡエミュレータ２０４は、ソースＩＳＡコンテクスト２１２において、限定することなく、現在の実行命令ポインタ（ＩＰ）などを含むソースＩＳＡアーキテクチャの実行コンテクストを維持する。バイナリ変換エンジン２１５は、ソースＩＳＡ命令をターゲットＩＳＡ命令に変換するよう構成される。ＬＩＢエミュレータ２０６は、ターゲットＩＳＡライブラリ（ＬＩＢ）コンテクスト２２２、ゲート２２４及びラッパファンクション２２６を有する。ＬＩＢエミュレータ２０６は、ターゲットＩＳＡライブラリ（ＬＩＢ）コンテクスト２２２において、ターゲットＩＳＡライブラリの実行コンテクストを維持する。各種実施例では、ソース及びターゲットＩＳＡアーキテクチャにおいてアプリケーション１２０によるライブラリサービス１２４の呼び出しを実行するよう構成される、ライブラリサービス１２４毎のゲート２２４及びラッパファンクション２２６の対応するペアがあってもよい。同様に、ターゲット及びソースＩＳＡアーキテクチャにおいてライブラリサービス１２４によるコールバックファンクション１２５のコールバックを実現するよう構成される、コールバックファンクション１２５毎のゲート２２４及びラッパファンクション２２６の対応するペアがあってもよい。
【００１５】
ＩＳＡブリッジングローダ２０２は、アプリケーション１２０をロードするよう構成される。アプリケーション１２０をロードする際、ＩＳＡブリッジングローダ２０２は、コール元のライブラリサービスに関するアプリケーション１２０の何れか未定なシンボリックネームをライブラリサービス１２４の適切なサービスに決定するよう構成される。実施例では、ＩＳＡブリッジングローダ２０２は、コール元のライブラリサービスに関連するアプリケーション１２０の未定なシンボリックネームをライブラリサービス１２４の対応するゲート２２４のアドレスに決定するよう構成されてもよい。さらに、ＩＳＡブリッジングローダ２０２は、コールバックファンクション１２５のシンボリックネーム又はリファレンスを内部ネームに変更し、シンボリックネーム又はリファレンスを対応するラッパファンクション２２６に対するコールバックファンクション１２５に関連付けるよう構成されてもよい。
【００１６】
ＩＳＡブリッジングローダ２０２は、複数の既知の方法の何れかによってＯＳ１２２（又は使用される場合、ミドルウェア１２１）のローダからのロード処理の制御を取得する。このような既知の方法の具体例は、ＯＳ１２２又はミドルウェア１２１によりサポートされるとき、バイナリフォーマットベースの制御移転又はロード／プレロード変数の利用を含む。他の実施例では、ＯＳ１２２（又は使用される場合、ミドルウェア１２１）のローダが、代わりにＩＳＡブリッジングローダ２０２への制御の移転を実行するよう変更されてもよい。
【００１７】
上述されるように、ソースＩＳＡエミュレータ２０４は、ソースＩＳＡ実行コンテクスト２１２を維持するよう構成される。ソースＩＳＡエミュレータ２０４は、アプリケーション１２０の実行中にソースＩＳＡ  ＩＰ（命令ポインタ）をトラッキングするよう構成されてもよい。アプリケーション１２０がライブラリサービス１２４を呼び出すことを試みるとき、ソースＩＳＡ実行をモニタリングするソースＩＳＡエミュレータ２０４が代わりに、ＬＩＢエミュレータ２０６への実行制御の呼び出し及び移転してもよい。各種実施例では、ソースＩＳＡエミュレータ２０４は、ライブラリサービス１２４の対応するゲート２２４に対して実行制御を呼び出し及び移転してもよい。
【００１８】
ＬＩＢエミュレータ２０６は、同様にターゲットＩＳＡライブラリ（ＬＩＢ）実行コンテクスト２２２を維持するよう構成されてもよい。
【００１９】
ライブラリサービス１２４に対応するゲート２２４は、ライブラリサービス１２４に対するコールを対応するラッパファンクション２２６にそれぞれリダイレクトし、当該コールを処理及び設定するよう構成されてもよい。一方、コールバックファンクション１２５に対応するゲート２２４は、対応するラッパファンクション２２６からソースＩＳＡエミュレータ２０４へのコールバックの実行制御をそれぞれ移転するよう構成されてもよい。各種実施例では、各ゲート２２４は、対応するラッパファンクション２２６又はソースＩＳＡエミュレータ２０４へのリダイレクトを実行するよう構成される命令を有してもよい。各種実施例では、各ゲート２２４の命令は、実行制御リダイレクションを実現するため、バイナリ変換エンジン２１５と連携するよう構成されるソースＩＳＡ命令であってもよい。各種実施例では、各ゲート２２４は更に、対応するラッパファンクション２２６を特定するインジケータを有してもよい。
【００２０】
各種実施例では、対応するライブラリサービス１２４に対するコールを処理及び設定するため、ライブラリサービス１２４に対応する各ラッパファンクション２２６は、ソースＩＳＡコンテクスト２１２からコールの関連するパラメータ値を抽出し、当該コールをソースＩＳＡアプリケーションバイナリインタフェース（ＡＢＩ）フォーマットからターゲットＩＳＡ  ＡＢＩフォーマットに変換し、変換されたコールをパラメータ値と共にＬＩＢコンテクスト２２２に保存するよう構成されてもよい。
【００２１】
コールバックファンクション１２５に対するコールバックに対して、実行制御は、コールバックファンクション１２５の対応するラッパファンクション２２６に移転されてもよい。各種実施例では、アプリケーション１２０のコールバックファンクション１２５に対するコールバックを処理及び設定のため、コールバックファンクション１２５に対応する各ラッパファンクション２２６は、当該コールバックをターゲットＩＳＡ  ＡＢＩフォーマットからソースＩＳＡ  ＡＢＩフォーマットに変換し、コールバックの関連するパラメータ値をアタッチし、変換されたコールバックをパラメータ値と共にソースＩＳＡコンテクスト２１２に保存するよう構成されてもよい。
【００２２】
コールバックファンクション１２５に対応するゲート２２４は、ターゲットＩＳＡのソースＩＳＡフォーマットにおいて提示されるコールバックファンクションをエミュレートするため、コールバックファンクション１２５に対応するラッパファンクション２２６により準備されるソースＩＳＡコンテクストによってソースＩＳＡエミュレータ２０４を呼び出すよう構成されてもよい。
【００２３】
図３〜４を参照して、本開示の各種実施例によるコールバックによる一例となるＩＳＡブリッジング方法が示される。図示されるように、方法３００は、コールを（ソースＩＳＡの）アプリケーション１２０から（ターゲットＩＳＡの）ライブラリサービス１２４にブリッジングするためのパート３００ａと、コールを（ターゲットＩＳＡの）ライブラリサービス１２４から（ソースＩＳＡの）アプリケーション１２０のコールバックファンクションにブリッジングするためのパート３００ｂとの２つのパートを含むものであってもよい。
【００２４】
パート３００ａは、ブロック３０２から開始される。ブロック３０２において、ＩＳＡブリッジングローダ２０２はアプリケーション１２０をロードする。アプリケーション１２０をロードする際、上述されるように、ＩＳＡブリッジングローダ２０２は、ライブラリサービス１２４に対してアプリケーション１２０のシンボリックネーム又はリファレンスを決定し、コールバックファンクション１２５のシンボリックネーム又はリファレンスを修正してもよい。ブロック３０２から、パート３００ａは、ブロック３０４に移行する。ブロック３０４において、実行中に、アプリケーション１２０はライブラリサービス１２４の１つを呼び出してもよい。各種実施例では、アプリケーション１２０は、コールされたライブラリサービス１２４によるそれのコールバックファンクション１２５の１つに対するコールバックを要求してもよい。実施例では、アプリケーション１２０は、コールされたライブラリサービス１２４に対するコールの一部として、コールバックされるべきコールバックファンクション１２５に対するポインタを有してもよい。コールバックファンクション１２５に対するポインタをわたす代わりに、ライブラリサービス１２４のラッパファンクション２２６は、コールバックファンクション１２５の対応するラッパファンクション２２６をわたしてもよい。
【００２５】
ブロック３０４から、パーツ３００ａはブロック３０６に移行する。ブロック３０６において、ソースＩＳＡエミュレータ２０４は、例えば、ソースＩＳＡ  ＩＰをモニタリングし、ＩＰがターゲットライブラリのアドレス範囲内のアドレスを参照していると判断することによってコールを検出すると、当該コールをリダイレクトし、ＬＩＢエミュレータ２０６のライブラリサービス１２４の対応するゲート２２４に対して実行制御を移転する。ブロック３０６から、パーツ３００ａはブロック３０８に移行する。ブロック３０８において、ゲート２２４は更に、当該コールをリダイレクトし、コールされたライブラリサービス１２４の対応するラッパファンクション２２６に対して実行制御を移転してもよい。ブロック３０８から、パーツ３００ａはブロック３１０に移行する。ブロック３１０において、上述されるように、コールされたライブラリサービス１２４のラッパファンクション２２６は当該コールを処理し、コールされたライブラリサービス１２４による実行のため、ＬＩＢコンテクスト２２２にコールを設定する。ブロック３１０から、パート３００ａはブロック３１２に移行する。ブロック３１２において、コールされたライブラリサービス１２４のゲート２２４は、ＬＩＢコンテクスト２２２から当該コールのリターン値を収集し、ソースＩＳＡコンテクスト２１２を更新し、ライブラリサービスのコールのリターン値をアプリケーション１２５に返すため、ソースＩＳＡエミュレータ２０２に対する実行制御を移転する。
【００２６】
図４を参照して、パーツ３００ｂはブロック４０４において開始される。ブロック４０４において、コールされたライブラリサービス１２４の実行中又は終了すると、ライブラリサービス１２４は、アプリケーション１２０によりわたされたコールバックポインタをコールするなどによって、アプリケーション１２０のコールバックファンクション１２５をコールバックする。ブロック４０４から、パート３００ｂは、コールバックポインタがコールバックファンクション１２５に対応するラッパファンクション２２６であるとき、ブロック４０６に移行する。ブロック４０６において、実行制御は、修正されたリファレンスに従って、コールバックファンクション１２５の対応するラッパファンクション２２６に移転されてもよい。ブロック４０６から、パート３００ｂはブロック４０８に移行する。ブロック４０８において、ラッパファンクション２２６は、コールバックを処理し、上述されるように、アプリケーション１２０のコールバックファンクション１２５による実行のため、ソースＩＳＡコンテクスト２１２にコールバックを設定し、その後、コールバックファンクション１２５の対応するゲート２２４に対して実行制御を移転する。ブロック４０８から、パート３００ｂはブロック４１０に移行する。ブロック４１０において、コールバックファンクション１２５に対応するゲート２２４は、コールバックをリダイレクトし、ラッパファンクション２２６による準備されるソースＩＳＡコンテクストによってＩＳＡエミュレータに対して実行制御を移転する。
【００２７】
さらに、ブロック４１２において、ソースＩＳＡ  ＩＰをモニタリングし、当該ＩＰがコールバックファンクション１２５に対応するゲート２２４のアドレス範囲内のアドレスを参照していると判断するなどによってコールを検出すると、ソースＩＳＡエミュレータ２０４は、エミュレーションを継続するため、ソースＩＳＡ  ＩＰをコールバックファンクションにリダイレクトする。ブロック４１２から、パート３００ｂはブロック４１４に移行する。ブロック４１４において、コールバックファンクション１２５のゲート２２４は、ソースＩＳＡコンテクスト２１２からコールバックのリターン値を収集し、ＬＩＢコンテクスト２２２を更新し、ライブラリサービス１２４にコールバックファンクション１２５のリターン値を返すため、ＬＩＢエミュレータ２０４に対して実行制御を移転する。
【００２８】
図５は、本開示の各種実施例による図３及び４の方法の全て又は選択された態様を実施するよう構成される命令を有する一例となる非一時的なコンピュータ可読記憶媒体を示す。図示されるように、非一時的なコンピュータ可読記憶媒体５０２は、複数のプログラミング命令５０４を有する。プログラミング命令５０４は、計算装置１０２などの計算装置が、プログラミング命令の実行に応答して、図３及び４を参照して上述された方法３００のＩＳＡブリッジング処理の全て又は選択された態様を実行することを可能にするよう構成される。他の実施例では、プログラミング命令５０４は、複数の非一時的なコンピュータ可読記憶媒体５０２に配置されてもよい。
【００２９】
図１を再び参照して、一実施例について、プロセッサメモリ構成１０４のプロセッサの少なくとも１つは、図３及び４の方法３００の処理（又はそれの一部）を実行するよう構成されるＩＳＡブリッジングレイヤ１２３の計算ロジック（又はそれの一部）と共にパッケージングされてもよい。一実施例について、プロセッサメモリ構成１０４のプロセッサの少なくとも１つは、システム・イン・パッケージ（ＳｉＰ）を構成するため、図３及び４の方法３００の処理（又はそれの一部）を実行するよう構成されるＩＳＡブリッジングレイヤ１２３の計算ロジック（又はそれの一部）と一緒にパッケージングされてもよい。一実施例について、プロセッサメモリ構成１０４のプロセッサの少なくとも１つは、図３及び４の方法３００の処理（又はそれの一部）を実行するよう構成されるＩＳＡブリッジングレイヤ１２３の計算ロジック（又はそれの一部）と同一ダイ上で統合されてもよい。一実施例について、プロセッサメモリ構成１０４のプロセッサの少なくとも１つは、システム・オン・チップ（ＳｏＣ）を構成するため、図３及び４の方法の処理（又はそれの一部）を実行するよう構成されるＩＳＡブリッジングレイヤ１２３の計算ロジック（又はそれの一部）と同一ダイ上に統合されてもよい。少なくとも１つの実施例について、ＳｏＣは、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、計算タブレット、インターネット機器、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、ポータブルゲーム再生装置、サーバ又は他の計算装置において利用されてもよい。
【００３０】
図１を更に参照して、理解の簡単化のため、本開示は１つのソースＩＳＡを１つのターゲットＩＳＡにブリッジングする１つのＩＳＡブリッジングレイヤ１２３により説明された。しかしながら、本開示はこれに限定されるものでない。実施例では、複数の異なるＩＳＡブリッジングレイヤ１２３が、複数の異なるソースＩＳＡをターゲットＩＳＡにブリッジングするため設けられてもよい。これらの実施例のいくつかについて、要求されたブリッジングを検出するためディスパッチャが更に設けられてもよく、要求されたＩＳＡブリッジングを提供するため、適切なＩＳＡブリッジングレイヤ１２３をインスタンス化する。
【００３１】
さらに、各種実施例では、本開示は、必要とされるブリッジング量を低減するため、（ソースＩＳＡにおける）アプリケーション１２０の部分について（ターゲットＩＳＡにおいて）代替されるバイナリにより実現されてもよい。他の実施例では、ラッパファンクションの一部などのブリッジングに用いられるリソースの一部は、ＩＳＡブリッジングレイヤ１２３にアクセス可能なリモートサーバに配置されてもよい。
【００３２】
さらに、理解の簡単化のため、ＩＳＡブリッジングレイヤ１２３は、異なるソースＩＳＡとターゲットＩＳＡとをブリッジングするよう構成されるものとして説明された。しかしながら、本開示はこれに限定されるものでない。各種アプリケーションについて、ＩＳＡブリッジングレイヤ１２３は、同一のソースＩＳＡとターゲットＩＳＡとをブリッジングするのに利用されてもよい。このようなアプリケーションでは、バイナリ変換エンジン２１５などの説明された要素の１以上が必要とされない可能性がある。このようなアプリケーションの具体例は、計算装置１０２に対するエンハンスされた動作セキュリティを提供するものであってもよい。他のアプリケーションは、同様に当該ブリッジングから利用してもよい。
【００３３】
従って、特定の実施例がここに図示及び説明されたが、図示及び説明された特定の実施例について広範な他の及び／又は等価な実現形態が置換されてもよいことが、当業者により理解されるであろう。
【００３４】
従って、本開示は、あるＩＳＡサポートアプリケーションコールされたバイナリサービスからコールバックを時々要求する利用特性を有する他のＩＳＡのために開発されたＩＳＡサポートアプリケーションを備えた計算装置の技術的問題に対する解決手段であってもよいことが理解されるであろう。本開示の効果は、限定することなく、計算装置のＩＳＡにおいてアプリケーションをフルに変換又は再実現するための必要性を回避することを含むものであってもよい。
【００３５】
本開示は、計算装置に対してエンハンスされたセキュリティを提供する技術的問題に対する解決手段であってもよいことが理解されるであろう。本開示の効果は、限定することなく、提供されるアイソレーションのロウバスト性を含むものであってもよい。
【図１】
0006352486.tif 000002
【図２】
0006352486.tif 000003
【図３】
0006352486.tif 000004
【図４】
0006352486.tif 000005
【図５】
0006352486.tif 000006