JP6122493B2 - Adaptively portable library - Google Patents
Adaptively portable library Download PDFInfo
- Publication number
- JP6122493B2 JP6122493B2 JP2015518415A JP2015518415A JP6122493B2 JP 6122493 B2 JP6122493 B2 JP 6122493B2 JP 2015518415 A JP2015518415 A JP 2015518415A JP 2015518415 A JP2015518415 A JP 2015518415A JP 6122493 B2 JP6122493 B2 JP 6122493B2
- Authority
- JP
- Japan
- Prior art keywords
- platform
- specific
- binary
- code
- executable file
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 claims description 28
- 238000000034 method Methods 0.000 claims description 24
- 108091029480 NONCODE Proteins 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 11
- 238000011161 development Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 239000000284 extract Substances 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/423—Preprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44536—Selecting among different versions
- G06F9/44542—Retargetable
- G06F9/44547—Fat binaries
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Description
[0001] コンピューターサイエンスにおいて用いられる「移植性」という用語は、同じソフトウェアを異なるコンピューティング環境で使用する能力を意味する。プラットフォーム特有でないコードを意味するために、「移植性のあるコード」という用語が用いられる場合がある。即ち、まさに同一のソフトウェアが、任意のプラットフォーム上で、又は少なくとも複数のプラットフォーム上で動作することが可能である。「移植性のあるコード」という用語は、ゼロからソフトウェアを書くよりもコスト的に効率良く、異なるプラットフォーム上で動作するように変更することが可能なコードを意味するのに用いられることもある。当該用語のこれらの異なった使用方法を区別するため、任意のプラットフォーム上で動作することが可能なプラットフォーム非依存型のコードを意味するのに「ユニバーサルに移植性のあるコード」という用語が用いられるだろう。「移植性のあるコード」という用語は、コスト的に効率良く、異なるプラットフォーム上で動作するように変更することが可能なコードを意味するのに用いられるだろう。 [0001] The term "portability" as used in computer science refers to the ability to use the same software in different computing environments. The term “portable code” may be used to mean code that is not platform specific. That is, exactly the same software can run on any platform, or at least on multiple platforms. The term “portable code” is sometimes used to mean code that is more cost effective than writing software from scratch and that can be modified to run on different platforms. To distinguish these different uses of the term, the term “universally portable code” is used to mean platform-independent code that can run on any platform. right. The term “portable code” will be used to mean code that is cost-effective and can be modified to run on different platforms.
[0002] 異なるプラットフォーム上で動作する異なるバージョンのコードを作成する1つの方法は、条件付きコンパイルによるものである。条件付きコンパイルは、コンパイラーが、コードを複数回コンパイルすることによって複数の異なるプラットフォームに関連した複数の異なる実行可能ファイルを生成することを可能にする。コンパイラーは、第1のプラットフォーム向けの実行可能ファイルを生成するためのパラメーター又はディレクティブの1つのセットによって動作し、第2のプラットフォーム向けの実行可能ファイルを生成するためのパラメーター又はディレクティブの別のセットによって動作し、以下同様である。 [0002] One way to create different versions of code that runs on different platforms is by conditional compilation. Conditional compilation allows the compiler to generate multiple different executables associated with different platforms by compiling the code multiple times. The compiler operates with one set of parameters or directives for generating an executable file for the first platform, and with another set of parameters or directives for generating an executable file for the second platform. Operate, and so on.
[0003] ソースコードのプラットフォーム非依存部分が、異なるプラットフォーム及び/又はソフトウェアのバージョンのために注釈を付された1又は複数の部分を含むように拡張されることが可能である。プラットフォーム非依存部分とプラットフォーム特有部分及び/又はバージョン特有部分との両方を含んだソースコードが、一度コンパイルされて、複数のデバイスのプラットフォーム及び/又は1又は複数のプラットフォームの複数のバージョンへ配布されそれらの上で動作することの可能な、単一実行可能ファイルを作成することが可能である。開発環境のプラットフォーム特有の属性は、コンパイラーがプラットフォーム特有の自動補完と型検査を提供することを可能にすることができる。プラットフォーム特有又はバージョン特有の実行可能ファイル(例えば、アセンブリ、バイナリ等)が、リソース(例えばデータ)としてユニバーサルに移植性のある(プラットフォーム非依存の)実行可能ファイルに埋め込まれることが可能である。プラットフォーム特有抽象化レイヤー及び/又はバージョン特有インターフェイスが作成されることもでき、リソース又はデータとしてユニバーサルに移植性のある実行可能ファイルに埋め込まれることができる。プラットフォーム特有抽象化レイヤーは、対応するプラットフォーム特有実行可能ファイルによる実行時に実装されることが可能である。実行可能ファイルが特定のデバイス上で実行される時にその実行可能ファイルが正しく実行するように、開発ツール、例えばIDE(統合開発環境)が実行可能ファイルを設定することが可能である。コンパイルされたコードがデバイス上で実行される時、プログラム実行マネージャー(例えばランタイム)が、その実行可能ファイルが動作しているデバイスに対応するプラットフォーム特有データを抽出し、抽出されたデータを実行可能ファイルに結合し、実行可能ファイルをロードして実行することが可能である。したがって、同一のバイナリが、そのバイナリが動作しているプラットフォームの能力に応じて異なる結果又は機能性を生じさせることが可能である。 [0003] The platform-independent portion of the source code can be extended to include one or more portions annotated for different platforms and / or software versions. Source code containing both platform-independent and platform-specific and / or version-specific parts is compiled once and distributed to multiple device platforms and / or multiple versions of one or more platforms It is possible to create a single executable file that can run on Platform-specific attributes of the development environment can allow the compiler to provide platform-specific auto-completion and type checking. Platform-specific or version-specific executable files (eg, assemblies, binaries, etc.) can be embedded as resources (eg, data) in a universally portable (platform-independent) executable file. Platform-specific abstraction layers and / or version-specific interfaces can also be created and embedded as resources or data in universally portable executable files. A platform-specific abstraction layer can be implemented at runtime with a corresponding platform-specific executable file. A development tool, such as an IDE (Integrated Development Environment), can set an executable file so that when the executable file is executed on a particular device, the executable file executes correctly. When compiled code is executed on a device, the program execution manager (eg, runtime) extracts platform-specific data corresponding to the device on which the executable is running, and the extracted data is executable. It is possible to load and execute an executable file. Thus, the same binary can produce different results or functionality depending on the capabilities of the platform on which the binary is running.
[0004] この概要は、詳細な説明において更に後述される概念からの選抜を簡略な形で導入するために提供される。この概要は、請求された主題の主要な特徴又は本質的な特徴を特定することを意図したものではなく、また、請求された主題の有効範囲を限定するのに用いられることを意図したものでもない。 [0004] This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the detailed description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Absent.
<概要>
[0006] 図1aは、当該技術分野において知られているユニバーサルに移植性のあるコードを生成するためのシステムを示す。従来、ターゲットデバイス上で動作するように、条件付きコンパイルのディレクティブを有したソースコード(例えばソースコード101)がコンパイルされる。例えば、ソースコードが、スマートフォンなどのターゲットデバイス上で動作するように一度目にコンパイラー102上でコンパイルされて、スマートフォン用バイナリ104aなどのスマートフォン用バイナリを生成する。異なるディレクティブを有したソースコードが、二度目にコンパイルされて、タブレット上で動作することが可能なバイナリ(例えばタブレット用バイナリ104b)を生成することができる。更に異なるディレクティブを有したソースコードが、再びコンパイルされて、ゲーム機上で動作することが可能なバイナリ(例えばゲーム機用バイナリ104c)、デスクトップ上で動作することが可能なバイナリ(例えばデスクトップ用バイナリ104d)、又は他のデバイス上で動作することが可能なバイナリ(例えばデバイスn用バイナリ104n)を生成することができる。こうして、移植性のあるコードが、複数回コンパイルされて、それぞれが特定のプラットフォーム上で動作するようにデザインされた複数のバイナリを生成する。
<Overview>
[0006] FIG. 1a illustrates a system for generating universally portable code known in the art. Conventionally, source code (for example, source code 101) having a conditional compilation directive is compiled so as to operate on a target device. For example, the source code is first compiled on the
[0007] このような設計の1つの帰結は、ソフトウェアがデバイスへの配置のためにパッケージ化される場合に、適切なバイナリがそのデバイスのために選択されなければならないということである。例えば、スマートフォンへはスマートフォン用バイナリ104aが配置される必要があり、するとスマートフォンのランタイム106aが、バイナリ104aを実行してある実行結果a 108aを生成するだろう。同様に、タブレットへはタブレット用バイナリ104bが配置される必要があり、するとタブレットのランタイム106bが、バイナリ104bを実行して、実行結果a 108aとは異なるある実行結果b 108bを生成するだろう。同様に、ゲーム機へはゲーム機用バイナリ104cが配置される必要があり、するとゲーム機のランタイム106cが、バイナリ104cを実行して、実行結果a 108aや実行結果b 108bとは異なるある実行結果c 108cを生成するだろう。デスクトップへはデスクトップ用バイナリ104dが配置される必要があり、するとデスクトップのランタイム106dが、バイナリ104dを実行して、他のデバイスの実行結果とは異なるある実行結果d 108dを生成するだろう。即ち、デバイス特有のバイナリ104nが、それに対応するデバイスへ配置される必要があり、するとそのデバイスのランタイム106nが、バイナリ104nを実行して特定の結果108nを生成するだろう。もしコードが再利用されるならば、コードは、デバイス特有部分を変更するように修正されなければならない。
[0007] One consequence of such a design is that when software is packaged for placement on a device, the appropriate binary must be selected for that device. For example, the smartphone binary 104a needs to be placed on the smartphone, and the
[0008] 図1bは、本明細書で説明される主題の態様による(リファレンスライブラリと呼ばれることもある)単一バイナリを生成するシステム109を示す。本明細書で説明される主題の態様によれば、ソースコード110などのソースコードが、変形コンパイラー112によって一度コンパイルされて、複数のターゲットプラットフォーム上で動作することが可能な単一バイナリ(例えばバイナリ115)を生成することができる。当該技術分野において知られているバイナリは、コード部分と、リソース又はデータを表す非コード部分とを含むことが可能である。バイナリ115は、バージョン非依存型コード及び/又はプラットフォーム非依存型コードを含んだバージョン非依存部分及び/又はプラットフォーム非依存部分114などの1又は複数の部分と、バージョン特有及び/又はプラットフォーム特有である1又は複数の部分(例えば、スマートフォン特有部分116a、タブレット特有部分116b、ゲーム機特有部分116c、デスクトップ特有部分116d、又は任意のデバイス特有部分n 116n)とを含むことが可能である。プラットフォーム特有部分は、リソース又はデータとしてラベル付けされることができる。単一バイナリ115は、複数の異なるプラットフォームへ配置されることが可能である。
[0008] FIG. 1b illustrates a
[0009] 実行時にバイナリ115は、限定ではないがランタイム(例えば、スマートフォン用ランタイム118a、タブレット用ランタイム118b、ゲーム機用ランタイム118c、デスクトップ用ランタイム118d、及び一般にデバイスn用ランタイム118n)などのプログラム実行マネージャーによって実行されることができる。ランタイムは、当該バイナリの適切な(適合した)バージョン特有部分及び/又はプラットフォーム特有部分を(例えばリソース又はデータとしてラベル付けされたバイナリの部分から)抽出し、抽出されたバイナリのバージョン特有部分及び/又はプラットフォーム特有部分を、当該バイナリのバージョン非依存部分及び/又はプラットフォーム非依存部分に結合することが可能である。即ち、例えば、スマートフォンのランタイム118aは、バイナリのスマートフォン特有部分116aをプラットフォーム非依存部分114に結合することが可能であり、それを実行してスマートフォンのために実行結果a 120aを生成することが可能である。同様に、タブレットのランタイム118bは、バイナリのタブレット特有部分116bをプラットフォーム非依存部分114に結合することが可能であり、それを実行してタブレットのために実行結果b 120bを生成することが可能である。ゲーム機のランタイム118cは、バイナリのゲーム機特有部分116cをプラットフォーム非依存部分114に結合することが可能であり、それを実行してゲーム機のために実行結果c 120cを生成することが可能である。デスクトップのランタイム118dは、バイナリのデスクトップ特有部分116dをプラットフォーム非依存部分114に結合することが可能であり、それを実行してデスクトップのために実行結果d 120dを生成することが可能である。同様に、特定のデバイスのランタイム118nは、バイナリのデバイス特有部分116nをプラットフォーム非依存部分114に結合することが可能であり、それを実行してデバイスのために実行結果n 120nを生成することが可能である。
[0009] At runtime, the
[0010] 同様に、バージョン特有及び/又はプラットフォーム特有なプラットフォーム抽象化レイヤー(図1bには不図示)が、バイナリのデータ部分から抽出されることができ、バージョン非依存部分及び/又はプラットフォーム非依存部分114に結合されることができる。本明細書で説明される主題のいくつかの態様によれば、単一バイナリ115は、コードの1又は複数のバージョン特有部分及び/又はプラットフォーム特有部分が再利用の標準ユニットとしてランタイムによって理解されるような方法で、生成される(例えば、バイナリはランタイムが認識するフォーマットで作成される)。
[0010] Similarly, a version-specific and / or platform-specific platform abstraction layer (not shown in FIG. 1b) can be extracted from the binary data portion, and version-independent and / or platform-independent Can be coupled to
<適応的に移植性を有したライブラリ>
[0011] 図1cは、本明細書で開示される主題の態様による移植性のある単一の実行可能ファイルを生成するシステム121のブロック図を示す。図1cはまた、本明細書で説明される主題の態様による当該移植性のある実行可能ファイルの実行も示す。システム121の全て又は一部分は、図3に関して後述されるコンピューターなどの1又は複数のコンピューター若しくはコンピューティングデバイス上に存在することができる。システム121又はその一部分は、スタンドアロンのシステムとして、又はプラグイン若しくはアドインとして提供されることができる。システム121は、全体として、又は部分的に、図4に関して説明されるソフトウェア開発コンピューターなどのソフトウェア開発コンピューター上で実行することができる。システム121の全て又は一部分の上で、開発ツールが動作することができる。例えば、システム121の全て又は一部分は、例えば図4に関してより完全に説明されるIDE125などの、統合開発環境(IDE)内で実行することができ、又はIDEの外で実行することが可能である。
<Adaptively portable library>
[0011] FIG. 1c shows a block diagram of a
[0012] システム121は、コンピューティングデバイス122などの1又は複数のコンピューティングデバイス又はコンピューターを含むことができる。コンピューティングデバイス122は、プロセッサー142等のような1又は複数のプロセッサー、メモリ144などのメモリ、及び、単一のユニバーサルに移植性のある実行可能ファイルを生成するモジュール123などの1又は複数のモジュールを含むことが可能である。モジュール123によって代表された1又は複数のモジュールは、コンパイルチェーン124の一部分を構成することが可能である。モジュール123は、コンパイラー、コンパイラーのプリプロセッサー、コンパイラーのポストプロセッサー、又はそれらの任意の組み合わせの一部分であってよい。モジュール123等のような1又は複数のモジュールは、メモリ144にロードされて、プロセッサー142等のような1又は複数のプロセッサーに、モジュール123に起因する動作を実施させることが可能である、ということが認識されるだろう。
[0012] The
[0013] システム121は、限定ではないがスマートフォン、タブレット、デスクトップコンピューター、ゲーム機、又は任意の種類のコンピューティングデバイスを含む、1又は複数の他のコンピューター又はコンピューティングデバイスを含むことができる。これらのコンピューティングデバイスのそれぞれは、1又は複数のプロセッサー(不図示)、メモリ(不図示)、及び当該技術分野においてよく知られている他のコンポーネントを含むことができる。
[0013] The
[0014] ソースコードファイル134などのソースコードファイルは、プラットフォーム非依存型コード130などのプラットフォーム非依存型コードの1又は複数の部分を含むことができる。ソースコードファイル134はまた、プラットフォーム特有コード132等のようなプラットフォーム特有コードの1又は複数の部分も含むことができる。プラットフォーム特有コードの1又は複数の部分は、デバイス1 135、デバイス2 137、…デバイスn 139等のようなデバイス上で動作するように特化したコードを含むことが可能である。デバイス1 135、デバイス2 137、…デバイスn 139などのデバイスは、スマートフォン、タブレット、ゲーム機、デスクトップコンピューター、ラップトップコンピューター、ノートブックコンピューター、又は、現在知られており若しくは将来生み出される任意の他のコンピューティングデバイスなどのデバイスを含むことが可能である。バージョン特有コード及び/又はプラットフォーム特有コードの1又は複数の部分は、特化した対象のデバイスのバージョン及び/又は種類を示す識別注釈を付されることが可能である。例えば、第1の注釈又は種類の注釈は、プログラムソースコードの注釈を付されたセクションが、スマートフォン又はスマートフォン用のあるバージョンのソフトウェアに特化していることを表すことができる。第2の注釈又は種類の注釈は、プログラムソースコードの注釈を付されたセクションが、タブレット又はタブレット用のあるバージョンのソフトウェア等に特化していることを表すことができる。使用されている特定の注釈は、バイナリを作成するのにどのコンパイラー又はどのバージョンのコンパイラーが用いられるかを制御することができる。
[0014] A source code file, such as source code file 134, may include one or more portions of platform-independent code, such as platform-independent code 130. Source code file 134 may also include one or more portions of platform-specific code, such as platform-
[0015] モジュール123は、ソースコードファイル134を受け取ることができ、コンパイルチェーン124の他のコンポーネントと協力して、プラットフォーム非依存型バイナリ126などのバージョン非依存型コード及び/又はプラットフォーム非依存型コードの1又は複数の部分と、例えばプラットフォーム特有バイナリ128等のようなバージョン特有コード及び/又はプラットフォーム特有コードの1又は複数の部分とを含む、単一バイナリ129を作成することが可能である。バージョン特有及び/又はプラットフォーム特有バイナリ128は、「ライトアップコード」を含むことが可能である。ライトアップコードは、あるプラットフォーム又はバージョンには存在するが別のプラットフォーム又はバージョンには存在しない1又は複数の機能を含むことができ、したがって、あるプラットフォーム又はバージョンのユーザーインターフェイスにおいて「ライトアップ」するが、別のプラットフォーム又はバージョンのユーザーインターフェイスにおいては「ライトアップ」しない。例えばプラットフォーム特有バイナリ128等のようなバージョン特有及び/又はプラットフォーム特有バイナリは、プラットフォーム非依存型バイナリ126に関連したデータなどのリソースとして指定されることが可能である。モジュール123等はまた、遭遇したそれぞれの種類のプラットフォーム特有コードの部分に対して、そのプラットフォームに関連したコードに基づいて抽象化レイヤー(例えばプラットフォーム特有インターフェイス)を生成することもできる。例えば、プラットフォーム特有バイナリ128などの第1のプラットフォーム特有バイナリが、抽象化レイヤー128aなどの第1のプラットフォーム特有抽象化レイヤーと関連付けられることができ、以下同様である。あるいはまた、標準的な条件付きコンパイル手法を用いてソースコードが複数回コンパイルされて、単一のマルチプラットフォームのバイナリを作成するようにポストコンパイル演算において結合されることの可能な、複数のプラットフォーム特有バイナリを生成することができる。
[0015] The module 123 can receive a source code file 134 and, in cooperation with other components of the
[0016] 同一のバイナリ、例えばバイナリ129が、複数の異なるプラットフォームへ配置されることが可能である。バイナリの配置先のデバイス上でソフトウェアが実行される時、当該デバイスのランタイム(例えば、ランタイム136、ランタイム138、又はランタイム140等)は、適切なプラットフォーム特有バイナリを使用し、それをプラットフォーム非依存型バイナリに結合して当該デバイス上で動作する実行可能ファイルを作成することが可能である。例えば、プラットフォーム非依存型バイナリ、バイナリAが、プラットフォーム特有バイナリ、バイナリBを使用すると想定されたい。実行時に、デバイスに適切なプラットフォーム特有バイナリBが、バイナリAと結合するためにランタイムによって選択されることができ、その結果得られる実行可能ファイルが、その後実行されることが可能である。異なるプラットフォームに加えて、異なるバージョンが同様に適応することができる、ということが認識されるだろう。結合時に選択されたプラットフォーム特有コードに基づいて、そのプラットフォームの適切なプラットフォーム抽象化レイヤーがランタイムによって実装されることが可能である。仮想マシン環境におけるマネージ言語(managed language)の文脈の中で説明されたが、本明細書に記載される概念はネイティブコード環境において適用されることが可能である、ということが認識されるだろう。ネイティブコード環境では、プラットフォーム非依存型コードは、作成するのがより難しい場合がある。
[0016] The same binary, eg, binary 129, can be deployed on multiple different platforms. When the software is executed on the device where the binary is located, the device's runtime (eg,
[0017] 図2は、複数の異なるプラットフォーム上で動作可能な単一バイナリを作成することができる方法200を示す。当該バイナリは、1又は複数の異なるプラットフォームへ配置されることが可能である。バイナリが実行される時、そのバイナリが配置されたデバイスのランタイムは、適切なプラットフォーム特有バイナリを決定して抽出し、それを結合してそのデバイス向けのプラットフォーム特有バイナリを生成することが可能である。したがって、同一のバイナリが、異なるデバイス上で動作した時に異なる結果を生じさせることが可能である。図2で説明される方法は、限定ではないが、図1b及び1cに関して説明されたようなシステムによって実施されることができる。方法200はあるシーケンスで実施される一連の処理を記載しているが、方法200は当該シーケンスの順序によっては限定されない、ということが理解されなければならない。例えば、いくつかの動作は、記載されたものとは異なる順序で行われてよい。加えて、ある動作が別の動作と同時に行われてよい。いくつかの実例では、全ての動作が実施されるのでなくてもよい。その上、異なるプラットフォームに関して説明されているが、以下に記載される処理は、異なるバージョンのソフトウェアの作成、生成、配置、及び実行に対しても同様に当てはまる、ということが認識されるだろう。
[0017] FIG. 2 illustrates a
[0018] 処理201において、プラットフォーム非依存型ソースコードが、IDEのソースコードエディター又は他のソフトウェアツールによって受け取られることが可能である。処理202において、注釈を付されたソースコードが受け取られることが可能である。プラットフォーム特有であるソースコードは、そのソースコードが意図された対象のプラットフォームを識別するために、注釈を付されることが可能である。処理204において、1又は複数のプラットフォーム非依存部分と1又は複数のプラットフォーム特有部分の両方を含むソースコードが、単一バイナリにコンパイルされることが可能である。処理206において、当該バイナリのプラットフォーム特有部分が、データ若しくは非コードのリソースとしてラベル付け又は指定されて、プラットフォーム非依存型バイナリに付加されることが可能である。処理208において、バイナリが1又は複数の異なるプラットフォームへ配置されることが可能である。処理210において、当該バイナリの配置先であるデバイスのうちの1つのランタイムが、そのバイナリを実行する要求を受け取ることが可能である。ランタイムは、プラットフォーム非依存型バイナリに結合すべき適切なプラットフォーム特有部分を決定し抽出することが可能である。処理212において、抽出されたプラットフォーム特有部分が、プラットフォーム非依存型バイナリに結合されることが可能である。処理214において、バイナリがロードされることが可能であり、216において、バイナリが実行されることが可能である。 [0018] In process 201, platform-independent source code may be received by an IDE source code editor or other software tool. In process 202, annotated source code can be received. Source code that is platform specific can be annotated to identify the platform for which the source code was intended. In process 204, source code that includes both one or more platform-independent portions and one or more platform-specific portions can be compiled into a single binary. In process 206, the platform-specific portion of the binary can be labeled or designated as a data or non-code resource and added to the platform-independent binary. In operation 208, the binaries can be deployed to one or more different platforms. In process 210, the runtime of one of the devices where the binary is located can receive a request to execute the binary. The runtime can determine and extract the appropriate platform-specific part to be combined into the platform independent binary. In process 212, the extracted platform specific portion can be combined into a platform independent binary. At operation 214, the binary can be loaded, and at 216, the binary can be executed.
<適切なコンピューティング環境の例>
[0019] 本明細書で開示される主題の様々な態様のための文脈を提供するために、図3及び以下の議論は、本明細書で開示される主題の様々な実施態様が実装されることができる適切なコンピューティング環境510の簡潔で概略的な説明を提供するよう意図されている。本明細書で開示される主題は、1又は複数のコンピューター若しくは他のコンピューティングデバイスによって実行されるプログラムモジュールなどのコンピューター実行可能命令の一般的な文脈で説明されているが、当業者は、本明細書で開示される主題の一部分が、他のプログラムモジュール及び/又はハードウェアとソフトウェアの組み合わせと協力して実装されることも可能である、ということを認識するだろう。一般的に、プログラムモジュールは、特定のタスクを実施し又は特定のデータ型を実現するルーチン、プログラム、オブジェクト、物理的人工物、データ構造等を含む。通常、プログラムモジュールの機能性は、様々な実施態様において望まれるとおりに結合され又は分散されることができる。コンピューティング環境510は、適切な動作環境の一例に過ぎず、本明細書で開示される主題の使用又は機能性の範囲を限定するよう意図されてはいない。
<Example of appropriate computing environment>
[0019] To provide context for various aspects of the subject matter disclosed herein, FIG. 3 and the following discussion are implemented with various embodiments of the subject matter disclosed herein. It is intended to provide a concise and general description of a
[0020] 図3を参照して、コンピューター512の形態のコンピューティングデバイスが説明される。コンピューター512は、少なくとも1つの処理装置514、システムメモリ516、及びシステムバス518を含むことができる。少なくとも1つの処理装置514は、限定ではないがシステムメモリ516などのメモリに格納されている命令を実行することが可能である。処理装置514は、様々な利用可能なプロセッサーのいずれであってもよい。例えば、処理装置514は、グラフィックス処理装置(GPU)であってよい。命令は、上で論じられた1又は複数のコンポーネント又はモジュールによって実行される機能性を実現するための命令、又は、上で説明された方法の1又は複数を実現するための命令であってよい。デュアルマイクロプロセッサーや他のマルチプロセッサーのアーキテクチャが、処理装置514として利用されることも可能である。コンピューター512は、ディスプレイ画面上にグラフィックスを描画することをサポートするシステムにおいて用いられることができる。別の例では、コンピューティングデバイスの少なくとも一部分が、グラフィックス処理装置を備えたシステムにおいて用いられることが可能である。システムメモリ516は、揮発性メモリ520と不揮発性メモリ522を含むことができる。不揮発性メモリ522は、読み取り専用メモリ(ROM)、プログラマブルROM(PROM)、電気的プログラム可能ROM(EPROM)、又はフラッシュメモリを含むことが可能である。揮発性メモリ520は、外部キャッシュメモリとして働くことができるランダムアクセスメモリ(RAM)を含んでよい。システムバス518は、システムメモリ516を含むシステムの物理的人工物を処理装置514に結合する。システムバス518は、メモリバス、メモリコントローラー、周辺機器バス、外部バス、又はローカルバスを含むいくつかの種類のうちのいずれであってもよく、また任意の様々な利用可能なバスアーキテクチャを用いることができる。コンピューター512は、システムバス518を経由して処理装置514によってアクセス可能なデータ記憶装置を含んでよい。データ記憶装置は、グラフィックスの描画のための実行可能命令、3Dモデル、素材、テクスチャ等を含むことができる。
With reference to FIG. 3, a computing device in the form of a computer 512 is described. Computer 512 can include at least one
[0021] コンピューター512は通常、揮発性及び不揮発性媒体、リムーバブル及び非リムーバブル媒体などの様々なコンピューター可読媒体を含む。コンピューター可読媒体は、コンピューター可読命令、データ構造、プログラムモジュール、若しくは他のデータなどの情報の記憶のための任意の方法又は技術で実現されることができる。コンピューター可読媒体は、(コンピューター記憶媒体とも称される)コンピューター可読記憶媒体と通信媒体とを含む。コンピューター記憶媒体は、限定ではないが、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、CDROM、デジタル多用途ディスク(DVD)又は他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶デバイスなどの、所望のデータを格納することが可能でありコンピューター512によってアクセスされることが可能な物理的な(有形の)媒体を含む。通信媒体は、限定ではないが、通信信号、変調搬送波、又は任意の他の一時的媒体などの、所望の情報を伝達するのに使用されることが可能でありコンピューター512によってアクセスされることが可能な一時的媒体を含む。 [0021] Computer 512 typically includes a variety of computer readable media, such as volatile and non-volatile media, removable and non-removable media. A computer readable medium may be implemented in any method or technique for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer-readable media includes computer-readable storage media (also referred to as computer storage media) and communication media. Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDROM, digital versatile disc (DVD) or other optical disc storage, magnetic cassette, magnetic tape, magnetic disc storage Or a physical (tangible) medium that can store desired data and that can be accessed by computer 512, such as other magnetic storage devices. The communication medium can be used to convey desired information and accessed by computer 512, such as, but not limited to, a communication signal, a modulated carrier wave, or any other temporary medium. Includes possible temporary media.
[0022] 図3は、ユーザーとコンピューターリソースとの間の仲介手段として働くことが可能なソフトウェアを説明するものであることが認識されるだろう。このソフトウェアは、ディスク記憶装置524に格納されることが可能でありコンピューター512のリソースを割り当てることが可能なオペレーティングシステム528を含むことができる。ディスク記憶装置524は、インターフェイス526などの非リムーバブルメモリインターフェイスを通じてシステムバス518に接続されたハードディスクドライブであってよい。システムアプリケーション530は、システムメモリ516又はディスク記憶装置524のいずれかに格納されたプログラムモジュール532とプログラムデータ534を通じて、オペレーティングシステム528によるリソースの管理を利用する。コンピューターは、様々なオペレーティングシステム又はオペレーティングシステムの組み合わせを用いて実装されることが可能である、ということが認識されるだろう。
[0022] It will be appreciated that FIG. 3 illustrates software that can act as an intermediary between a user and a computer resource. The software can include an
[0023] ユーザーは、入力デバイス536を通じてコンピューター512にコマンド又は情報を入力することが可能である。入力デバイス536は、マウス、トラックボール、スタイラス、タッチパッド、キーボード、マイク、音声認識及びジェスチャ認識システム等のようなポインティングデバイスを含むが、これに限定はされない。これらの及び他の入力デバイスは、インターフェイスポート538を介しシステムバス518を通じて処理装置514に接続する。インターフェイスポート538は、シリアルポート、パラレルポート、ユニバーサルシリアルバス(USB)等を表すことができる。出力デバイス540は、入力デバイスと同じ種類のポートを使用することができる。出力アダプター542は、モニター、スピーカー、及びプリンターのような特定のアダプターを必要とするいくつかの出力デバイス540が存在することを示すために提供されている。出力アダプター542は、限定ではないが、出力デバイス540とシステムバス518との間の接続を提供するビデオカード及びサウンドカードを含む。他のデバイス及び/又はシステム、又はリモートコンピューター544などのデバイスは、入力と出力の両方の能力を提供することができる。
[0023] A user may enter commands or information into the computer 512 through the
[0024] コンピューター512は、リモートコンピューター544などの1又は複数のリモートコンピューターへの論理的接続を用いて、ネットワーク環境で動作することが可能である。リモートコンピューター544は、パーソナルコンピューター、サーバー、ルーター、ネットワークPC、ピアデバイス、又は他の一般によくあるネットワークノードであってよく、図3にはメモリ記憶デバイス546のみが示されているが、典型的には、コンピューター512に関連して上述された要素の多く又は全てを含む。リモートコンピューター544は、通信接続550を介して論理的に接続されることが可能である。ネットワークインターフェイス548は、ローカルエリアネットワーク(LAN)及びワイドエリアネットワーク(WAN)などの通信ネットワークを包含するが、他のネットワークを含んでもよい。通信接続550は、ネットワークインターフェイス548をバス518に接続するために利用されるハードウェア/ソフトウェアを指す。通信接続550は、コンピューター512の内部にあっても外部にあってもよく、モデム(電話、ケーブル、DSL、及び無線)、ISDNアダプター、イーサネット(登録商標)カード等のような内部及び外部技術を含む。
[0024] Computer 512 may operate in a network environment using logical connections to one or more remote computers, such as
[0025] 示されたネットワーク接続は単なる例であり、コンピューター間に通信リンクを確立する他の手段が用いられてよい、ということが認識されるだろう。当業者は、コンピューター512又は他のクライアントデバイスがコンピューターネットワークの一部として配備されることが可能である、ということを認識することができる。これに関して、本明細書で開示される主題は、任意の数のメモリ又は記憶装置、並びに任意の数の記憶装置又はボリュームにわたって生じる任意の数のアプリケーション及びプロセスを有する、任意のコンピューターシステムに関連することができる。本明細書で開示される主題の態様は、リモート又はローカル記憶装置を有しネットワーク環境に配備されたサーバーコンピューターとクライアントコンピューターを備えた環境に適用されることができる。本明細書で開示される主題の態様はまた、プログラミング言語の機能性、解釈、及び実行能力を有するスタンドアロンのコンピューティングデバイスに適用されることもできる。 [0025] It will be appreciated that the network connections shown are only examples and other means of establishing a communications link between the computers may be used. One skilled in the art can appreciate that a computer 512 or other client device can be deployed as part of a computer network. In this regard, the subject matter disclosed herein relates to any computer system having any number of memories or storage devices and any number of applications and processes that occur across any number of storage devices or volumes. be able to. Aspects of the subject matter disclosed herein can be applied to an environment having server computers and client computers deployed in a network environment having remote or local storage. Aspects of the subject matter disclosed herein can also be applied to stand-alone computing devices that have programming language functionality, interpretation, and execution capabilities.
[0026] 図4は、統合開発環境(IDE)600及び共通言語ランタイム環境602を示す。IDE600は、ユーザー(例えば、開発者、プログラマー、デザイナー、コーディング者)がコンピューターシステムにおいてプログラム、プログラムのセット、ウェブサイト、ウェブアプリケーション、及びウェブサービスをデザインし、コーディングし、コンパイルし、テストし、実行し、編集し、デバッグし、又はビルドすることを可能にすることができる。ソフトウェアプログラムは、1又は複数のソースコード言語(例えば、Visual Basic、Visual J#、C++、C#、J#、Java Script(登録商標)、APL、COBOL、Pascal、Eiffel、Haskell、ML、Oberon、Perl、Python、Scheme、Smalltalk等)で作成されたソースコード(コンポーネント610)を含むことが可能である。IDE600は、ネイティブコードの開発環境を提供することができ、又は仮想マシン上で動作するマネージコードの開発環境を提供することができ、又はそれらの組み合わせを提供することができる。IDE600は、Microsoft .NET(商標)フレームワークを用いてマネージコードの開発環境を提供することができる。モデリングツール652及びモデルストア653を使用する言語特有ソースコンパイラー620を用いて、ソースコードコンポーネント610とネイティブコードコンポーネント611から中間言語コンポーネント650が作成されることができ、アプリケーションが実行される時に、中間言語コンパイラー660(例えば実行時(JIT)コンパイラー)を用いて、中間言語コンポーネント650からネイティブコードコンポーネント611(例えばマシン実行可能命令)が作成される。即ち、中間言語(IL)アプリケーションが実行される時に、中間言語アプリケーションは実行されながらそれが実行されているプラットフォーム用の適切な機械語にコンパイルされて、それにより、コードがいくつかのプラットフォームにわたって移植性のあるものとなる。代替的に、他の実施態様では、プログラムはそれの意図されたプラットフォームに適切なネイティブコードの機械語(不図示)にコンパイルされることができる。
FIG. 4 shows an integrated development environment (IDE) 600 and a common language runtime environment 602.
[0027] ユーザーは、IDE600のユーザーインターフェイス640とソースコードエディター651を介して、既知のソフトウェアプログラミング手法並びに特定のソース言語に関連した特有の論理的規則及び構文規則に従ってソースコードコンポーネントを作成及び/又は編集することが可能である。その後に、ソースコードコンポーネント610はソースコンパイラー620によってコンパイルされることが可能であり、それにより、アセンブリ630のようなプログラムの中間言語表現が作成されることができる。アセンブリ630は、中間言語コンポーネント650とメタデータ642を含むことができる。アプリケーションのデザインは、配備の前に検証されることが可能であってよい。
[0027] A user can create and / or create source code components via
[0028] 本明細書で説明される様々な手法は、ハードウェア若しくはソフトウェアに関連して、又は、適切である場合には両者の組み合わせに関連して実装されることができる。したがって、本明細書で説明される方法及び装置、又は、それらのある態様若しくはある一部分は、フロッピーディスク(登録商標)、CD−ROM、ハードドライブ、又は任意の他の機械可読記憶媒体などの有形媒体に具現化されたプログラムコード(即ち命令)の形態をとることができ、このプログラムコードがコンピューターなどの機械にロードされてそれによって実行される時、当該機械は、本明細書で開示される主題の態様を実行するための装置となる。本明細書で用いられる際、「機械可読記憶媒体」という用語は、どんな形態であれ伝搬信号を提供(即ち、格納及び/又は伝送)するあらゆるメカニズムを排除するように解されなければならない。プログラム可能なコンピューター上におけるプログラムコードの実行の場合、コンピューティングデバイスは、一般に、プロセッサー、(揮発性及び不揮発性のメモリ及び/又は記憶素子を含む)当該プロセッサーによって読み取り可能な記憶媒体、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスを含むだろう。ドメイン固有プログラミングモデル態様の作成及び/又は実装を例えばデータ処理API等を通じて利用することのできる1又は複数のプログラムは、コンピューターシステムとやり取りするための高水準の手続き的又はオブジェクト指向のプログラミング言語で実装されることができる。しかしながら、このプログラムは、もし望まれるならば、アセンブリ言語又は機械語で実装されることが可能である。いずれにせよ、その言語は、コンパイル言語又は解釈言語であってよく、またハードウェア実装と組み合わせられてよい。 [0028] The various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. Accordingly, the methods and apparatus described herein, or certain aspects or portions thereof, are tangible, such as a floppy disk, CD-ROM, hard drive, or any other machine-readable storage medium. It may take the form of program code (i.e., instructions) embodied in a medium, and when the program code is loaded onto and executed by a machine, such as a computer, the machine is disclosed herein. An apparatus for performing the subject aspects. As used herein, the term “machine-readable storage medium” should be understood to exclude any mechanism that provides (ie, stores and / or transmits) a propagated signal in any form. For execution of program code on a programmable computer, the computing device generally includes a processor, a storage medium readable by the processor (including volatile and non-volatile memory and / or storage elements), at least one It will include an input device and at least one output device. One or more programs that can utilize the creation and / or implementation of domain specific programming model aspects, for example through a data processing API, etc., are implemented in a high level procedural or object oriented programming language to interact with a computer system Can be done. However, this program can be implemented in assembly or machine language, if desired. In any case, the language can be a compiled or interpreted language and can be combined with a hardware implementation.
[0029] 構造的な特徴及び/又は方法論的行為に特有の言い回しで主題が説明されてきたが、添付された特許請求の範囲において定義される主題は必ずしも上述された特有の特徴又は行為に限定されるものではない、ということは理解されなければならない。それどころか、上述された当該特有の特徴及び行為は、特許請求の範囲を具体化する例示的な形として開示されているのである。 [0029] Although the subject matter has been described in language specific to structural features and / or methodological acts, the subject matter defined in the appended claims is not necessarily limited to the particular features or acts described above. It must be understood that it is not done. On the contrary, the specific features and acts described above are disclosed as example forms of implementing the claims.
Claims (10)
前記コンピューティングデバイスの前記少なくとも1つのプロセッサーに通信可能に結合されたメモリと、
前記メモリにロードされる少なくとも1つのモジュールであって、前記少なくとも1つのプロセッサーが、
ソースコードのプラットフォーム非依存部分を受け取り、
異なるプラットフォームに対する、前記ソースコードの複数のプラットフォーム特有部分を受け取り、
前記ソースコードのプラットフォーム非依存部分と前記ソースコードの複数のプラットフォーム特有部分を単一実行可能ファイルにコンパイルし、前記ソースコードの複数のプラットフォーム特有部分は、前記コンパイルによって前記単一実行可能ファイルの非コード部分の一部となり、
前記単一実行可能ファイルを複数の異なるプラットフォームへ配置する、
ようにさせる少なくとも1つのモジュールと、
を備えるシステム。 At least one processor of the computing device;
A memory communicatively coupled to the at least one processor of the computing device;
At least one module loaded into the memory, the at least one processor comprising:
Receive the platform independent part of the source code,
Receiving a plurality of platform specific parts of the source code for different platforms;
A plurality of platform-specific portions of the source code and platform-independent parts of the source code and compiled into a single executable file, a plurality of platform-specific portions of the source code, non of the single executable file by the compilation next part of the code portion,
Placing the single executable file on a plurality of different platforms;
At least one module to cause
A system comprising:
前記コンピューティングデバイスの前記プロセッサーのプラットフォームを決定するステップであって、前記プロセッサーの前記プラットフォームは、前記第1のプラットフォームを含む、ステップと、
前記単一実行可能ファイルの前記複数のプラットフォーム特有部分から前記第1のプラットフォーム向けの前記プラットフォーム特有部分を抽出するステップと、
前記第1のプラットフォーム向けの前記プラットフォーム特有部分をバイナリの前記プラットフォーム非依存部分に結合するステップと、
前記結合されたバイナリをロードするステップと、
を含む方法。 Receiving a single executable file including a platform independent portion and a plurality of platform specific portions by a processor of a computing device, the plurality of platform specific portions being a platform specific portion for a first platform; A platform-specific portion for a second platform, the plurality of platform-specific portions being part of a non-code portion of the single executable file;
Determining a platform of the processor of the computing device, the platform of the processor including the first platform;
Extracting the platform-specific portion for the first platform from the plurality of platform-specific portions of the single executable file;
Combining the platform specific portion for the first platform with the platform independent portion of a binary;
Loading the combined binary;
Including methods.
前記第1のプラットフォーム向けの前記プラットフォーム特有のプラットフォーム抽象化レイヤー部分をバイナリの前記プラットフォーム非依存部分に結合するステップと、
前記結合されたバイナリをロードするステップと、
を更に含む、請求項6に記載の方法。 Extracting the platform-specific platform abstraction layer for the first platform from the plurality of platform-specific platform abstraction layer portions of the single executable file;
Combining the platform specific platform abstraction layer portion for the first platform with the platform independent portion of a binary;
Loading the combined binary;
The method of claim 6, further comprising:
前記少なくとも1つのプロセッサーは、
コンピューティングデバイスのプロセッサーによって、コード部分と非コード部分を含む単一実行可能ファイルを受け取り、前記単一実行可能ファイルは、前記コード部分にプラットフォーム非依存部分と、前記非コード部分に複数のプラットフォーム特有部分とを含み、前記複数のプラットフォーム特有部分は、第1のプラットフォーム向けのプラットフォーム特有部分と第2のプラットフォーム向けのプラットフォーム特有部分とを含み、
前記コンピューティングデバイスのプラットフォームを決定し、前記コンピューティングデバイスの前記プラットフォームは、前記第1のプラットフォームを含み、
前記単一実行可能ファイルの前記複数のプラットフォーム特有部分から前記第1のプラットフォーム向けの前記プラットフォーム特有部分を抽出し、
前記第1のプラットフォーム向けの前記プラットフォーム特有部分をバイナリの前記プラットフォーム非依存部分に結合し、
前記結合されたバイナリをロードする、
ように構成される、デバイス。 A device comprising at least one processor and memory,
The at least one processor is
A processor of the computing device receives a single executable file that includes a code portion and a non-code portion, the single executable file being platform-independent in the code portion and a plurality of platforms specific in the non-code portion. And the plurality of platform-specific portions includes a platform-specific portion for the first platform and a platform-specific portion for the second platform;
Determining a platform of the computing device, the platform of the computing device comprising the first platform;
Extracting the platform-specific portion for the first platform from the plurality of platform-specific portions of the single executable file;
Combining the platform specific portion for the first platform with the platform independent portion of a binary;
Load the combined binary,
Configured as a device.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/525,356 US10402208B2 (en) | 2012-06-18 | 2012-06-18 | Adaptive portable libraries |
US13/525,356 | 2012-06-18 | ||
PCT/US2013/042791 WO2013191852A1 (en) | 2012-06-18 | 2013-05-28 | Adaptive portable libraries |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2015524126A JP2015524126A (en) | 2015-08-20 |
JP2015524126A5 JP2015524126A5 (en) | 2016-06-30 |
JP6122493B2 true JP6122493B2 (en) | 2017-04-26 |
Family
ID=48916167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015518415A Active JP6122493B2 (en) | 2012-06-18 | 2013-05-28 | Adaptively portable library |
Country Status (6)
Country | Link |
---|---|
US (1) | US10402208B2 (en) |
EP (1) | EP2862066A1 (en) |
JP (1) | JP6122493B2 (en) |
KR (1) | KR102059705B1 (en) |
CN (1) | CN104412229B (en) |
WO (1) | WO2013191852A1 (en) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9032379B2 (en) * | 2013-06-21 | 2015-05-12 | Oracle International Corporation | Platform specific optimizations in static compilers |
US9223550B1 (en) * | 2013-10-17 | 2015-12-29 | Google Inc. | Portable handling of primitives for concurrent execution |
US9389890B2 (en) * | 2014-03-27 | 2016-07-12 | Microsoft Technology Licensing, Llc | Hierarchical directives-based management of runtime behaviors |
US9292270B2 (en) | 2014-03-27 | 2016-03-22 | Microsoft Technology Licensing, Llc | Supporting dynamic behavior in statically compiled programs |
US20160077831A1 (en) * | 2014-09-11 | 2016-03-17 | Microsoft Corporation | Accurate and performant code design using memoization |
US9977673B1 (en) * | 2014-11-13 | 2018-05-22 | Marvell International Ltd. | Systems and methods for providing a platform-specific porting layer for multi-level software stacks |
US9690552B2 (en) * | 2014-12-27 | 2017-06-27 | Intel Corporation | Technologies for low-level composable high performance computing libraries |
CN104503819A (en) * | 2015-01-05 | 2015-04-08 | 中国科学院计算技术研究所 | Assembler for different operating systems (OSes) and assembly transplantation method |
US9529630B1 (en) | 2015-01-21 | 2016-12-27 | Pivotal Software, Inc. | Cloud computing platform architecture |
US10007500B1 (en) * | 2015-01-21 | 2018-06-26 | Pivotal Software, Inc. | Cloud computing platform architecture |
US10140104B2 (en) * | 2015-04-14 | 2018-11-27 | Micron Technology, Inc. | Target architecture determination |
CN104978224B (en) * | 2015-07-06 | 2018-11-20 | 张兆琦 | A kind of application management method towards more hardware platforms |
US10120661B2 (en) * | 2015-07-16 | 2018-11-06 | Sugarcrm Inc. | Multi-flavored software execution from a singular code base |
US9876852B2 (en) | 2015-07-23 | 2018-01-23 | Microsoft Technology Licensing, Llc | Coordinating actions across platforms |
US10180825B2 (en) * | 2015-09-30 | 2019-01-15 | Apple Inc. | System and method for using ubershader variants without preprocessing macros |
US11640284B2 (en) * | 2015-11-30 | 2023-05-02 | Oracle International Corporation | Multi-platform compiling |
JP6129376B1 (en) * | 2016-03-28 | 2017-05-17 | 株式会社ラック | program |
US10740093B2 (en) | 2016-09-01 | 2020-08-11 | Dropbox, Inc. | Advanced packaging techniques for improving work flows |
US10289394B2 (en) * | 2016-10-11 | 2019-05-14 | Oracle International Corporation | Selective generation of multiple versions of machine code for source code functions for execution on different processor versions and/or architectures |
CN106445564B (en) * | 2016-12-23 | 2019-08-20 | 携程旅游网络技术(上海)有限公司 | There is the mixing quoting method and system of different programming language projects for same platform |
CN108614705B (en) * | 2017-02-07 | 2022-06-03 | 腾讯科技(深圳)有限公司 | Data compiling processing method and terminal |
CN109213670A (en) * | 2017-06-30 | 2019-01-15 | 中兴通讯股份有限公司 | Realize method and device, the storage medium of whitepack OTN hardware device |
US10579347B2 (en) | 2017-11-03 | 2020-03-03 | International Business Machines Corporation | Self re-encoding interpreted application |
CN108509200A (en) * | 2018-03-13 | 2018-09-07 | 中国银行股份有限公司 | It is a kind of to establish associated method and device between software source code and actuating code |
US10983803B2 (en) * | 2018-06-03 | 2021-04-20 | Apple Inc. | Annotating dynamic libraries for multi-OS applications |
US10705511B2 (en) * | 2018-07-11 | 2020-07-07 | Siemens Aktiengesellschaft | Abstraction layers for automation applications |
JP7001012B2 (en) | 2018-07-30 | 2022-01-19 | オムロン株式会社 | Support equipment and support programs |
CN110806891B (en) * | 2019-09-27 | 2023-09-19 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | Method and device for generating software version of embedded device |
CN111552480B (en) * | 2020-05-07 | 2021-06-25 | 深圳百斯特控制技术有限公司 | Cross-platform compiling method, device, equipment and readable storage medium |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860006A (en) | 1995-09-15 | 1999-01-12 | Apple Computer, Inc. | Processor independent network operating system loadable modules |
JPH09190355A (en) | 1996-01-10 | 1997-07-22 | Toshiba Corp | Program conversion method |
JP2000347875A (en) | 1999-04-23 | 2000-12-15 | Sun Microsyst Inc | File transplanting technique |
FR2801118B1 (en) | 1999-11-17 | 2001-12-21 | Bull Cp8 | METHOD FOR LOADING APPLICATIONS IN A MULTI-APPLICATION ON-BOARD SYSTEM, CORRESPONDING ON-BOARD SYSTEM, AND METHOD FOR EXECUTING AN APPLICATION OF THE ON-BOARD SYSTEM |
AR033549A1 (en) * | 2000-08-07 | 2003-12-26 | Diebold Inc | AUTOMATIC MACHINE FOR BANK OPERATIONS, METHODS TO OPERATE IT AND LEGIBLE ENVIRONMENT BY COMPUTER |
US7346849B1 (en) * | 2001-04-03 | 2008-03-18 | Cypress Semiconductor Corp. | Executable code derived from user-selectable links embedded within the comments portion of a program |
US7210132B2 (en) | 2002-05-30 | 2007-04-24 | Microsoft Corporation | Interoperability of objects between various platforms |
US7546607B2 (en) | 2002-11-19 | 2009-06-09 | Microsoft Corporation | Native code exposing virtual machine managed object |
US7725884B2 (en) * | 2003-02-28 | 2010-05-25 | Microsoft Corporation | System and method for compiling markup files |
US7275241B2 (en) | 2003-11-21 | 2007-09-25 | International Business Machines Corporation | Dynamic instrumentation for a mixed mode virtual machine |
US20060080680A1 (en) | 2004-10-12 | 2006-04-13 | Majid Anwar | Platform independent dynamic linking |
US7945902B1 (en) | 2005-07-13 | 2011-05-17 | Oracle America, Inc. | Detection of non-standard application programming interface usage via analysis of executable code |
US20070169010A1 (en) * | 2005-10-31 | 2007-07-19 | Dhi Technologies, Inc. | Multiplatform programming environment |
US9553947B2 (en) * | 2007-07-18 | 2017-01-24 | Google Inc. | Embedded video playlists |
US8266582B2 (en) * | 2008-03-31 | 2012-09-11 | Oracle America, Inc. | Method for creating unified binary files |
US8141056B2 (en) | 2008-04-03 | 2012-03-20 | International Business Machines Corporation | Just-in-time dynamic instrumentation |
US9009662B2 (en) * | 2008-12-18 | 2015-04-14 | Adobe Systems Incorporated | Platform sensitive application characteristics |
US8843920B2 (en) * | 2009-09-15 | 2014-09-23 | Advanced Micro Devices, Inc. | Systems and methods for deferring software implementation decisions until load time |
JP5628408B2 (en) * | 2010-03-24 | 2014-11-19 | トムソン ライセンシングThomson Licensing | Method and apparatus for monitoring network service quality |
US8645934B2 (en) | 2010-05-06 | 2014-02-04 | International Business Machines Corporation | Simultaneous compiler binary optimizations |
US8572591B2 (en) | 2010-06-15 | 2013-10-29 | Microsoft Corporation | Dynamic adaptive programming |
-
2012
- 2012-06-18 US US13/525,356 patent/US10402208B2/en active Active
-
2013
- 2013-05-28 EP EP13745208.2A patent/EP2862066A1/en not_active Ceased
- 2013-05-28 JP JP2015518415A patent/JP6122493B2/en active Active
- 2013-05-28 CN CN201380032264.9A patent/CN104412229B/en active Active
- 2013-05-28 KR KR1020147035504A patent/KR102059705B1/en active IP Right Grant
- 2013-05-28 WO PCT/US2013/042791 patent/WO2013191852A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20130339928A1 (en) | 2013-12-19 |
WO2013191852A1 (en) | 2013-12-27 |
KR20150024842A (en) | 2015-03-09 |
CN104412229A (en) | 2015-03-11 |
EP2862066A1 (en) | 2015-04-22 |
CN104412229B (en) | 2018-09-18 |
US10402208B2 (en) | 2019-09-03 |
JP2015524126A (en) | 2015-08-20 |
KR102059705B1 (en) | 2019-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6122493B2 (en) | Adaptively portable library | |
US8726255B2 (en) | Recompiling with generic to specific replacement | |
US8707263B2 (en) | Using a DSL for calling APIS to test software | |
JP6294886B2 (en) | Generate native code from intermediate language code for applications | |
US9430200B1 (en) | Cross-library framework architecture feature sets | |
US8239823B2 (en) | Generating libraries for reflection without project compilation | |
US8407667B2 (en) | Inferring missing type information for reflection | |
US8302073B2 (en) | Moving and copying dependencies along with source code | |
US10540262B2 (en) | Using edit and continue to dynamically set and unset optimizations in source code while debugging | |
US9645912B2 (en) | In-place function modification | |
CN106325970A (en) | Compiling method and compiling system | |
US10120655B2 (en) | Seamless high performance interoperability between different type graphs that share a garbage collector | |
KR20130101037A (en) | Compile-time bounds checking for user-defined types | |
KR20170057264A (en) | Code development tool with multi-context intelligent assistance | |
CN101030241A (en) | Method and system based on Keil C51 software protecting development | |
WO2016094258A1 (en) | Inter-procedural type propagation for devirtualization | |
US9141356B2 (en) | Process for generating dynamic type | |
CN111771186A (en) | Compiler-generated asynchronous enumerable objects | |
US20170083298A1 (en) | Resilient format for distribution of ahead-of-time compiled code components | |
US9672020B2 (en) | Selectively loading precompiled header(s) and/or portion(s) thereof | |
US9098317B2 (en) | Optional retargeting of library references | |
US9612808B1 (en) | Memory use for string object creation | |
Liang et al. | An OpenMP programming environment on mobile devices | |
WO2022127263A1 (en) | Code processing method and related device | |
Maas et al. | A JVM for the Barrelfish Operating System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160511 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160511 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20160906 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161205 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170201 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170214 |
|
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: 20170302 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170331 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6122493 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |