JPH1115673A - 異なるランタイム環境において実行するための実行可能プログラムにおけるコードシーケンスを機能的に類似したコードシーケンスと条件付きで置き換えるローダ - Google Patents
異なるランタイム環境において実行するための実行可能プログラムにおけるコードシーケンスを機能的に類似したコードシーケンスと条件付きで置き換えるローダInfo
- Publication number
- JPH1115673A JPH1115673A JP10161973A JP16197398A JPH1115673A JP H1115673 A JPH1115673 A JP H1115673A JP 10161973 A JP10161973 A JP 10161973A JP 16197398 A JP16197398 A JP 16197398A JP H1115673 A JPH1115673 A JP H1115673A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- version
- program
- loader
- computer
- 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.)
- Abandoned
Links
Classifications
-
- 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/47—Retargetable compilers
-
- 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)
- Devices For Executing Special Programs (AREA)
Abstract
る方法を提供することである。 【解決手段】コンパイラ−ローダシステムは、命令セッ
トアーキテクチャの異なるバージョンに応じたターゲッ
トコンピュータに異なるロード実行可能なイメージを形
成することができる。この異なるイメージは、二次記憶
装置における単一実行可能プログラムから形成される。
コンパイラは、ターゲットコンピュータの両方のバージ
ョンで実行可能なルーチンおよび(i)ルーチンが呼び
出されるプログラム位置のアドレス、(ii)ルーチンと
同じ機能をすぐれた性能でもって実行するターゲットコ
ンピュータの1つのバージョンのみで実行可能な命令、
および(iii)どのバージョンのターゲットマシンがそ
の命令を実行しうるかを指示する値を有するアーキテク
チャエントリを含む実行可能なプログラムを発生する。
ローダは、ターゲットマシンが命令を実行しうるかを決
定し、もし、そうである場合には、アーキテクチャエン
トリにおけるアドレスに現れるサブルーチンコールを、
アーキテクチャエントリに現れる命令で置き換える。
Description
ピュータおよびコンピュータアーキテクチャの分野に関
する。特に、本発明は、異なる命令セットまたは他のア
ーキテクチャ特徴を有するコンピュータのためのコンピ
ュータ特定プログラムコードを発生するコンパイラ、ロ
ーダおよび類似のコンピュータプログラムに関するもの
である。
発されてくるにつれて、新しい命令および他の特徴がそ
れらに加えられてくる。より新しいコンピュータおよび
それらに書き込まれたソフトウエア(プログラム)は、
それらのより新しい命令および特徴を使用することがで
き、同じアーキテクチャのより古いコンピュータでは得
られなかったような効果を達成することができる。した
がって、より新しいプログラムまたはプログラムのより
新しいバージョンは、新しい命令を使用することが望ま
しい。しかしながら、一般的には、より新しいプログラ
ムは、より新しいコンピュータにて実行できるだけでな
く、より古いコンピュータでも実行できるものであるの
が望ましい。すなわち、より新しいプログラムは、遡及
的に、すなわち、後ろへ遡って両立性のあるものである
のが望ましい。ソフトウエアの売主は、種々なバージョ
ンのハードウエアを有する顧客へプログラムを売るが、
各プログラムの1つのバージョンだけサポートすればよ
い。顧客は、プログラムの1つのバージョンを買い、自
分のハードウエアのバージョンがどれであるかに関係な
しに、自分のハードウエアにそのプログラムを適用す
る。また、いわゆる、異種の環境、すなわち、プログラ
ムを実行する能力を必要としているより古いコンピュー
タとより新しいコンピュータとからなるコンピュータク
ラスタまたはコレクションにおいてそのプログラムを使
用したい顧客は、そのプログラムの1つのバージョンの
みをインストールし維持するだけでよい。したがって、
コンピュータ設計者が一般的に目指すところは、コンピ
ュータシステムの性能を改善し、同時に、新しいまたは
更新されたプログラムが広く使用しうるものであるよう
に遡及的な両立性を与えるような新しい命令の使用を促
進させることである。
としては、トラップ・アンド・エミュレートと称される
ものがあった。このスキームにおいては、実行可能なプ
ログラムが、1つまたはそれ以上の新しい命令を使用し
てコンパイルされ、この実行可能なプログラムが実行さ
れるべきコンピュータにおいて使用するための更新され
たオペレーティングシステムソフトウエアモジュールが
設けられる。より古いコンピュータが新しい命令を実行
しようとする時、不当命令トラップが中央プロセッサの
設計によって発生する。トラップハンドラーと称される
トラップベクトルが、その更新されたオペレーティング
システムモジュールへ指示する。このトラップハンドラ
ーは、その不当命令を検査し、それがより新しいコンピ
ュータにて正しく実行できるより新しい命令であるのか
を決定する。それから、そのトラップハンドラーは、ソ
フトウエアにてその新しい命令をエミュレートするルー
チンをランチする。このエミュレーションルーチンが完
了するとき、プログラムコントロールは、その実行可能
プログラムの、その新しい命令に続く命令のところに復
帰される。
アンド・エミュレート技法は、種々な欠点を有してお
り、そのために、あまり魅力的なものではない。その1
つの欠点は、新しい命令がそのアーキテクチャに加えら
れ、実行可能なプログラムにおいて使用されるときには
いつでも、オペレーティングシステムを更新する必要が
あるということである。さらに別の大きな欠点は、性能
である。トラップを行なうために100の単位のプロセ
ッサクロックサイクルに対する大きなペナルティがあ
る。実際に、より古いコンピュータの性能は、より新し
い命令を欠いている元のコンピュータの性能より悪くな
るのが一般的である。したがって、トラップ・アンド・
エミュレート技法は、遡及的、すなわち、後ろへ遡って
両立性を与えつつ、より古いコンピュータについても高
い性能を維持するという要望に十分に応えるものではな
い。
遡及的な両立性を維持し且つより古いバージョンのコン
ピュータの性能に与える影響を最少としつつ、より新し
いバージョンのコンピュータによって新しい命令を使用
できるようにするスキームが従来から要望されている。
本発明の目的は、このようなスキームを提供することで
ある。
範囲の請求項1に限定したような、コンピュータにおい
てコール命令を置き換える方法にある。本発明の好まし
い実施例によるローダプログラムは、ターゲットコンピ
ュータが該ターゲットコンピュータへロードされるべき
実行可能なプログラムに現れる命令を実行することがで
きるかを判断し、もし、実行することができるならば、
(1)前記実行可能なプログラムにおけるアーキテクチ
ャセクションから、前記命令によって置き換えられうる
前記実行可能なプログラムにおけるコール命令の位置を
指定するアドレスを検索し、(2)前記アーキテクチャ
セクションから前記命令を検索し、(3)前記実行可能
なプログラムの他のものの実行のフローに干渉を与えな
いような仕方で前記コール命令を前記検索された命令と
置き換えるという各段階を行なう。このローダによって
形成される実行可能なイメージは、そのイメージが形成
されるべきコンピュータがその新しい命令を実行できる
ときにのみ、その新しい命令を含むので効果的である。
この結果、必要に応じて遡及的な両立性を与えつつ、新
しい命令を使用するという目的の達成が助長されること
になる。
明の実施例について本発明を説明する。
ており、この実施例によれば、コンピュータプログラム
が用意され、実行のためにターゲットコンピュータへロ
ードされる。高レベル言語にて書かれたソース言語プロ
グラム10は、ソースプログラム10の自然言語状コン
ストラクトを、デジタル呼によってより容易に理解され
る命令およびデータの如きオブジェクトコードコンスト
ラクトへと変換するコンパイラ12によってオペレート
される。コンパイラ12によって形成されるオブジェク
トコードコンストラクトのコレクションは、実行可能な
プログラム14と称される。この実行可能なプログラム
は、通常、後で実行するために、磁気ディスク上のファ
イルの如き持久性記憶装置におけるイメージとして保存
される。例えば、この実行可能なプログラム14は、ネ
ットワークサーバに存在し、また、ネットワークサーバ
を介してアクセスされうる。
トコル14は、2つの異なるコンピュータのどちらかで
実行されるものとされているが、それが実際にどちらの
コンピュータであるかは、コンパイル時では未知であ
る。ここでの説明では、これらコンピュータは、バージ
ョン1およびバージョン2と称する。実行可能なプログ
ラム14が実行されるべきとき、ローダ16は、その実
行可能なプログラム14を処理して、そのローダがオペ
レートするターゲットコンピュータにおけるロードされ
る実行可能なイメージを形成する。もし、ターゲットコ
ンピュータがバージョン1のコンピュータであるなら
ば、ローダ16は、バージョン1のコンピュータのメモ
リ20−1にバージョン1ロード実行可能イメージ18
−1を形成する。もし、ターゲットコンピュータがバー
ジョン2のコンピュータであるならば、ローダ16は、
バージョン2のコンピュータのメモリ20−2にバージ
ョン2ロード実行可能イメージ18−2を形成する。ロ
ーディングが完了した後、プログラムコントロールは、
通常の仕方でロードされた実行可能なイメージ18−1
または18−2へ転送され、その実行を開始する。
例示するために、バージョン1およびバージョン2のコ
ンピュータの特定の例を使用する。これらの例は、デジ
タルイクイップメントコーポレーションによって製造販
売されているAlphTM(アルファ)ファミリーのコンピュ
ータである。このファミリーの古いコンピュータおよび
新しいコンピュータは、特定の型のデータを処理するた
めにそれらが使用する命令のうちのあるいくつかの命令
に関して区別しうるものである。ある特定のケースは、
バイト(8ビット)データタイプの処理である。アルフ
ァアーキテクチャは、フラット64ビット仮想メモリア
ドレッシングを指定しており、したがって、アルファイ
ンプリメンテーションにおけるメモリワードの固有幅
は、64ビットである。このような理由を一つの理由と
して、アルファアーキテクチャの初期のバージョン(以
下、バージョン1と称する)の設計においては、レジス
タとメモリの間でデータを移動させるための命令(ロー
ドおよびストア命令)は、ロングワード(32ビット)
データタイプのための命令も存在するのであるが、主と
してカッドワード(64ビット)データタイプを取り扱
うのに限定されている。16ビットデータタイプと称さ
れるワード並びにバイト(8ビット)データタイプを取
り扱うために、バージョン1のアルファアーキテクチャ
は、いくつかの64ビット汎用レジスタのうちの1つ内
でバイトをマニュピレートするための命令を与える。
に、バージョン1のアルファコンピュータは、ある命令
のセットを実行する。これらは、バイトを含むカッドワ
ードをレジスタへもたらすためのカッドロード命令、レ
ジスタの所望の位置にバイトを挿入したりレジスタの所
望の位置からバイトを抽出したりする命令、およびデー
タ(新しいバイトを含む)をメモリへと戻すためのカッ
ドワードストア命令を含む。
ン(以下、バージョン2と称する)においては、バイト
およびワードロードおよびストアを直接に行なう命令が
存在する。これらの命令を使用すると、バイトおよびワ
ード変数を有するプログラムを簡単化でき、また、ある
場合には、それらプログラムの性能を増すことができ
る。
ョン1のアーキテクチャのスーパーセットと称されるも
のであり、すなわち、このバージョン2のアーキテクチ
ャは、新しい命令に加えて、バージョン1の命令のすべ
てを含む。したがって、バイトストアオペレーション
は、バージョン1のアルファコンピュータについて前述
したのと同じようにして、バージョン2のアルファコン
ピュータにて行われうる。そして、実際に、バージョン
1のコンピュータに対して書かれコンパイルされたプロ
グラムは、バージョン2のコンピュータにて変更されな
いままで実行されうる。しかしながら、バージョン2の
アルファコンピュータにて実行されるプログラムは、前
述したより古い方法に代えて、新しいバイトおよびワー
ド命令を使用するのが好ましい。
うな目的を達成するために協動する。1つの重要なエレ
メントは、実行可能なプログラム14を発生するコンパ
イラ12である。このコンパイラ12の機能について、
以下に、主として、それが発生する実行可能なプログラ
ム14の構造に関して説明する。コンパイラ12を実施
するための適当な手段については、ここでの説明から当
業者には明らかであろう。
挙げられたソースプログラム10から発生される実行可
能なプログラム14の構造を示す簡単なプログラム例の
リストである。この付録Aのリストに現れているエレメ
ントについて、以下に、ある程度詳細に説明する。
へ単純にコピーするs1と称するサブルーチンを含む。
これらの変数aおよびbは、バイトとして宣言される。
aおよびbは、バイトタイプの変数であるのでサブルー
チンs1において現れる割当てa=bは、バージョン1
のアルファコンピュータと、バージョン2のアルファコ
ンピュータとでは、異なった仕方で実施されるのが好ま
しい。何故ならば、前述したように、バージョン1のコ
ンピュータには、バイトロードおよびストア命令がない
からである。
能なプログラム14が異なるアルファ実施に対してこの
要件を取り扱うためにどのように構成されるかを示して
いる。相対プログラム位置0000で始まるプログラム
の主要部分は、バイトbを含むカッドワードを汎用レジ
スタt0へもたらすためロードカッドワード命令(1d
g u)を実行し、それから、そのバイトをt0内の最
下位位置に置くためにエクストラクトバイト命令(ex
tb1)を実行する。この点で、この割当て機能を完了
するために、このようにしてt0に置かれたバイトbを
メモリのバイトaのアドレスに記憶する必要がある。必
要とされるストアバイト機能をなすために、サブルーチ
ン(bsr)へのブランチが、stb routine
とラベルされたルーチンに対して実行される。このルー
チンは、後述するようなストアバイトオペレーションを
行なう。このサブルーチンstb routineが完
了するとき、バイト割当てa=bが完了され、それか
ら、リターン命令(ret)が、サブルーチンs1から
の復帰を実施する。
トaを含むカッドワードをレジスタt11へもたらすロ
ードカッドワード命令で始まる。それから、このルーチ
ンstb routineは、さもなければ零のフィー
ルドを含むアドレスa0、t12の下位ビットによって
示されるレジスタt12の位置にバイトb(t0から)
を入れるインサートバイト命令(insb1)を実行す
る。マスク命令(mskb1)は、バイトaを形成する
レジスタt11のビットをクリアし、したがって、t1
1は、aが配置されていたカッドワードを、aがそうで
あった相続く零のホールを有した状態で保持する。それ
から、論理和命令(bis)がバイトbをそのホールへ
挿入し、したがって、t11は、元々ロードされた同じ
カッドワードを、aの代わりにbが置かれた状態で保持
する。最後に、このカッドワードは、ストアカッドワー
ド(stq)命令を使用してメモリへ書き戻される。こ
の正味の効果は、勿論、メモリにおける単一バイトaが
バイトbによって置き換えられたことである。
実行のフローは、s1サブルーチンにおける位置000
0からbsrを通して0008まで行き、それから、s
tb routineの位置0010から位置0024ま
で行き、最後に、s1の位置000Cへ戻る。このシー
ケンスは、バージョン1のアルファコンピュータまたは
バージョン2のアルファコンピュータに関して実行しう
るようにして、バイトロード/ストアペアを実行する。
これは、実行可能なプログラム14の変更なしで実行さ
れるデホールトコードシーケンスである。
チャセクションと称されるセクションを示している。こ
れは、ローダが異なるロードされた実行可能なイメージ
18−1および18−2を形成することができるように
する情報を含む実行可能なプログラム14の別のセクシ
ョンである。このリストには、3つの重要なアイテム、
すなわち、バージョン指示値(0002)、アドレス
(0008)および命令(stb t0,(a0))が
ある。これらの3つのアイテムは、そこに現れているア
ドレス0008によって、位置0008でのbsr命令
に関連付けられるアーキテクチャエントリを形成する。
一般的に、ソースプログラム12によって必要とされる
各割当てオペレーションに対して1つのアーキテクチャ
エントリがある。この例は、1つの割当てしか有してい
ないので、アーキテクチャセクションには、1つのアー
キテクチャエントリしか示されていない。このアーキテ
クチャエントリにおけるバージョン指示値は、実行を行
なうターゲットコンピュータがそのアーキテクチャエン
トリに現れる命令を実行することができるかを、ローダ
が判断できるようにする。アドレスは、ローダが、st
b routineに対するコーリングポイントを識別
できるようにする。そして、その命令は、ローダによっ
て容易に識別され検索されうるように、そのアーキテク
チャエントリに置かれる。
ン2のアルファコンピュータにて実行されるべきときに
は、付録Aに示した実行可能なプログラム14を変更す
る。詳細には、ローダは、位置0008に現れているb
sr命令を、アーキテクチャエントリに現れるstb命
令で置き換える。その結果変更されたプログラムは、ソ
ースプログラムによって必要とされる同じ割当てオペレ
ーションを実行するが、実行のためのフローは異なる。
変更されたプログラムは、単に、位置000Cに復帰す
るまで直線的に実行し、サブルーチンstb rout
ineを呼び出すことはない。
ラムの実行のフローに影響を与えないような仕方で行わ
れねばならない。アルファアーキテクチャにおいて、す
べての命令は、同じサイズであり、32ビットである。
したがって、1つの命令は、命令ストリームにギャップ
を生じたり、命令ストリームのギャップを埋めたりせず
に、別の命令と置き換えられうる。他のアーキテクチャ
または置換スキームにおいては、デホールトシーケンス
を発生するとき、その後の置換を考慮する必要がある。
例えば、置換命令がデホールト命令より大きい場合に
は、デホールト命令に隣接した命令ストリームにおいて
ノーオペレーション(NOP)コマンドを発生する必要
がある。このような技法は、当業分野においてはよく知
られている。
るようなプログラム例は、バージョン1のアルファコン
ピュータに関して変更を要せずに実行しうるということ
である。したがって、このプログラムは、アーキテクチ
ャ情報およびstb命令におけるパッチングの可能性を
念頭においていないローダプログラムによってでも、メ
モリへロードされうる。これは、コードシーケンスのこ
のような配列によって達成される遡及的両立性をさらに
示すものである。
ションについて、本実施例について以下説明する。ロー
ディングプロセス中、ローダ16は、実行可能なプログ
ラム14のアーキテクチャセクションにアクセスする。
そして、ローダは、そこに見出したバージョン指示値
を、ターゲットコンピュータのバージョンを特定するタ
ーゲットコンピュータ環境における情報と比較する。ア
ルファアーキテクチャにおいては、この情報は、アマス
ク(アーキテクチャマスク)命令を介して手に入る。も
し、ターゲットコンピュータのバージョンがアーキテク
チャセクションの値によって特定されるものと一致しな
い場合には、ターゲットコンピュータは、そのアーキテ
クチャセクションに記憶された命令を実行することがで
きない。この場合において、ローダは、付録Aに示され
た実行可能なコードを、実行可能なプログラム14から
変更されていないメモリ20−1へと単にコピーするこ
とによって、バージョン1ロード実行可能イメージ18
−1を形成する。しかしながら、もし、ターゲットコン
ピュータのバージョンがそのアーキテクチャセクション
における値によって特定されるものと一致する場合に
は、ターゲットコンピュータは、そのアーキテクチャセ
クションに記憶された命令を実行することができる。こ
の場合において、ローダ16は、バージョンロード実行
可能イメージ18−2を形成する。ローダは、そのアー
キテクチャセクションに記憶されたアドレスおよび命令
を得る。それから、実行可能なプログラム14をメモリ
20−2へコピーしている間、または、コピーの後、ロ
ーダは、その特定されたアドレスに現れる命令を、その
アーキテクチャセクションから得られる命令で置き換え
る。
してきたのであるが、本発明の範囲内に入る他の多くの
可能な実施例がある。本発明は、命令セットアーキテク
チャを改訂することにより発生する問題を処理するのに
特に有用である。しかしながら、本発明は、より一般的
には、実行可能なプログラムが実行されうるような異な
るランタイム環境のセットにおいて効果的な結果をもた
らすのに適用されうる。このようなランタイム環境の例
としては、異なるオペレーティングシステム、通常のオ
ペレーティングモード対デバッグ、異なる浮動小数点演
算スキームまたは所望の精度がある。例示した実施例で
は、実行可能なプログラムは、2つのランタイム環境の
うちのどちらか一方にて実行され、2つの代替コードシ
ーケンスが発生される。本発明の原理は、2つ、3つ、
またはそれ以上の代替コードシーケンスが含まれるよう
な3つまたはそれ以上の異なるランタイム環境での実行
を行えるように拡張されうる。
実行可能なイメージ14を効果的に処理するのに外部ロ
ーダに頼っているが、別の実施例では、ランタイムでそ
の変更を実施する実行可能なプログラムにコードをそれ
自身で発生することができる。さらに別の実施例では、
発生されたルーチン(stb routineの如き)
は、ストアバイト機能が必要とされるような多重位置か
ら呼び出されうる。このようなスキームでは、stb命
令によって使用されるパラメータに特定のプリアレンジ
制約を課す必要がある。このような技法は、当業分野に
おいては知られており、これらを使用することにより、
発生される実行可能なプログラムのスペース効率をより
大きくすることができる。最後に、別の実施例では、デ
ホールトシーケンスが遡及的な両立性のあるルーチンで
なく、新しい命令であることの方が重要であることもあ
る。本特許請求の範囲は、これらのすべておよびその他
の実施例を包含しようとしているものである。
ングおよびローディングを示すブロック図である。
ペレーションを示すフローチャートを示す図である。
Claims (1)
- 【請求項1】 コンピュータにおいてコール命令を置き
換える方法において、 ターゲットコンピュータへロードされるべき実行可能な
プログラムに現れる命令を該ターゲットコンピュータが
実行しうるかをチェックし決定し、 もし、前記ターゲットコンピュータが前記命令を実行で
きる場合には、前記実行可能なプログラムにおけるアー
キテクチャセクションから、前記命令によって置き換え
られうる前記実行可能なプログラムにおけるコール命令
の位置を特定するアドレスを検索し、前記アーキテクチ
ャセクションから前記命令を検索し、前記実行可能なプ
ログラムの他のものの実行のフローに影響を与えないよ
うにして、前記コール命令を前記検索された命令と置き
換え、 もし、前記ターゲットコンピュータが前記命令を実行で
きない場合には、前記コール命令を置き換えないように
する、ことを特徴とする方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/873,146 US6115550A (en) | 1997-06-11 | 1997-06-11 | Loader conditionally replacing a code sequence with a functionally-alike code sequence in an executable program intended for execution in different run-time environments |
US08/873146 | 1997-06-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1115673A true JPH1115673A (ja) | 1999-01-22 |
Family
ID=25361062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10161973A Abandoned JPH1115673A (ja) | 1997-06-11 | 1998-06-10 | 異なるランタイム環境において実行するための実行可能プログラムにおけるコードシーケンスを機能的に類似したコードシーケンスと条件付きで置き換えるローダ |
Country Status (3)
Country | Link |
---|---|
US (1) | US6115550A (ja) |
EP (1) | EP0884678A2 (ja) |
JP (1) | JPH1115673A (ja) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6343308B1 (en) * | 1997-08-14 | 2002-01-29 | International Business Machines Corporation | Systems, methods and computer programs for mixing different versions of Java classes |
US6298481B1 (en) * | 1998-10-30 | 2001-10-02 | Segasoft, Inc. | System for modifying the functionality of compiled computer code at run-time |
US6634022B1 (en) * | 1999-10-28 | 2003-10-14 | Koninklijke Philips Electronics N.V. | Method for platform specific efficiency enhancement of java programs and software product therefor |
US6704926B1 (en) * | 2000-09-28 | 2004-03-09 | International Business Machines Corporation | Bimodal Java just-in-time complier |
DE10110949A1 (de) * | 2001-03-07 | 2002-09-26 | Siemens Ag | Automatisierte Versions-Analyse von zu einer Softwareapplikation gehörenden Softwarekomponenten |
DE10152729A1 (de) * | 2001-10-25 | 2003-05-08 | Siemens Ag | Verfahren zum Betrieb eines Rechnersystems |
US7913237B2 (en) * | 2003-08-26 | 2011-03-22 | Ensequence, Inc. | Compile-time code validation based on configurable virtual machine |
US7519951B2 (en) * | 2003-09-30 | 2009-04-14 | International Business Machines Corporation | Multi-attribute dynamic link library packaging |
US7814155B2 (en) | 2004-03-31 | 2010-10-12 | Google Inc. | Email conversation management system |
US7389503B2 (en) * | 2004-04-16 | 2008-06-17 | International Business Machines Corporation | Apparatus and method to update code in an information storage and retrieval system while that system remains in normal operation |
US20060271920A1 (en) * | 2005-05-24 | 2006-11-30 | Wael Abouelsaadat | Multilingual compiler system and method |
CN101657795B (zh) | 2007-04-11 | 2013-10-23 | 苹果公司 | 多处理器上的数据并行计算 |
US8286196B2 (en) | 2007-05-03 | 2012-10-09 | Apple Inc. | Parallel runtime execution on multiple processors |
US8276164B2 (en) | 2007-05-03 | 2012-09-25 | Apple Inc. | Data parallel computing on multiple processors |
US11836506B2 (en) | 2007-04-11 | 2023-12-05 | Apple Inc. | Parallel runtime execution on multiple processors |
US8108633B2 (en) | 2007-04-11 | 2012-01-31 | Apple Inc. | Shared stream memory on multiple processors |
US8341611B2 (en) | 2007-04-11 | 2012-12-25 | Apple Inc. | Application interface on multiple processors |
US8185883B2 (en) * | 2007-09-14 | 2012-05-22 | International Business Machines Corporation | Instruction exploitation through loader late fix-up |
US8286198B2 (en) | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
US8225325B2 (en) | 2008-06-06 | 2012-07-17 | Apple Inc. | Multi-dimensional thread grouping for multiple processors |
US8438558B1 (en) | 2009-03-27 | 2013-05-07 | Google Inc. | System and method of updating programs and data |
US8621427B2 (en) * | 2010-06-30 | 2013-12-31 | International Business Machines Corporation | Code modification of rule-based implementations |
US8850399B2 (en) * | 2010-11-15 | 2014-09-30 | Microsoft Corporation | Software development using code retraction and background warm up |
US9043765B2 (en) * | 2011-11-09 | 2015-05-26 | Microsoft Technology Licensing, Llc | Simultaneously targeting multiple homogeneous and heterogeneous runtime environments |
US8850413B2 (en) * | 2012-05-31 | 2014-09-30 | Oracle International Corporation | Compiling multi-threaded applications for targeted criticalities |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4961133A (en) * | 1987-11-06 | 1990-10-02 | Visystems, Inc. | Method for providing a virtual execution environment on a target computer using a virtual software machine |
US5067072A (en) * | 1987-11-06 | 1991-11-19 | Visystems, Inc. | Virtual software machine which preprocesses application program to isolate execution dependencies and uses target computer processes to implement the execution dependencies |
US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
US5675801A (en) * | 1994-09-30 | 1997-10-07 | International Business Machines Corporation | Object oriented system and method for generating target language code |
US5675804A (en) * | 1995-08-31 | 1997-10-07 | International Business Machines Corporation | System and method for enabling a compiled computer program to invoke an interpretive computer program |
-
1997
- 1997-06-11 US US08/873,146 patent/US6115550A/en not_active Expired - Lifetime
-
1998
- 1998-06-03 EP EP98304374A patent/EP0884678A2/en not_active Withdrawn
- 1998-06-10 JP JP10161973A patent/JPH1115673A/ja not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US6115550A (en) | 2000-09-05 |
EP0884678A2 (en) | 1998-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH1115674A (ja) | 異なるランタイム環境において実行するための実行可能プログラムにおいて機能的に類似したコードシーケンスを発生するコンパイラ | |
JPH1115673A (ja) | 異なるランタイム環境において実行するための実行可能プログラムにおけるコードシーケンスを機能的に類似したコードシーケンスと条件付きで置き換えるローダ | |
JP3602857B2 (ja) | 多機種対応型情報処理システム、および、方法 | |
US5887159A (en) | Dynamically determining instruction hint fields | |
Kornau | Return oriented programming for the ARM architecture | |
US7437542B2 (en) | Identifying and processing essential and non-essential code separately | |
US5870607A (en) | Method and apparatus for selective replay of computer programs | |
JP3786644B2 (ja) | バイトコンパイルされたJava(R)コードを実行するためのマイクロプロセッサ | |
US6631460B1 (en) | Advanced load address table entry invalidation based on register address wraparound | |
US20050216701A1 (en) | Automatic configuration of a microprocessor | |
US6230259B1 (en) | Transparent extended state save | |
CN111399990B (zh) | 解释执行智能合约指令的方法及装置 | |
JP2000112772A (ja) | 命令セット内の命令に応答してプロセスを実行するデ―タ処理システムおよびその命令処理方法 | |
US7036118B1 (en) | System for executing computer programs on a limited-memory computing machine | |
JPH10320214A (ja) | コンパイルシステム及びコンピュータプログラム製品 | |
JP7105699B2 (ja) | プログラム・ループ制御 | |
KR20000048630A (ko) | 개선된 마이크로프로세서내의 메모리 데이터 얼라이징 장치 및 방법 | |
KR20010014095A (ko) | 어드레스되는 구성요소의 스펙큘레이션의 실패를 검출하기위한 메모리 제어기 | |
JPH0638234B2 (ja) | 変換されたプログラムコードのソース命令不可分性を保持するためのシステムおよび方法 | |
KR20070118663A (ko) | 고유 명령어를 이용한 레지스터 화일로서의 오퍼랜드스택에 대한 마이크로프로세서 엑세스 | |
KR20010014094A (ko) | 개선된 마이크로프로세서 | |
JP2019509576A (ja) | 分岐命令 | |
KR100308512B1 (ko) | 편집 기능을 위한 전문 밀리코드 지시 | |
WO2021036173A1 (zh) | 解释执行字节码指令流的方法及装置 | |
JP2001519955A (ja) | 先進のプロセッサのための変換メモリ保護装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050308 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050308 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20061227 |
|
A762 | Written abandonment of application |
Free format text: JAPANESE INTERMEDIATE CODE: A762 Effective date: 20061227 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070116 |