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
Application number
JP10161973A
Other languages
English (en)
Inventor
David P Hunter
ピー ハンター ディヴィッド
Baak Thomas Van
ヴァン バーク トーマス
William K Colgate
ケイ コルゲート ウィリアム
Richard L Sites
エル シーテス リチャード
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
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 Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of JPH1115673A publication Critical patent/JPH1115673A/ja
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/47Retargetable compilers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • G06F9/44542Retargetable
    • G06F9/44547Fat 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

(57)【要約】 【課題】 コンピュータにおいてコール命令を置き換え
る方法を提供することである。 【解決手段】コンパイラ−ローダシステムは、命令セッ
トアーキテクチャの異なるバージョンに応じたターゲッ
トコンピュータに異なるロード実行可能なイメージを形
成することができる。この異なるイメージは、二次記憶
装置における単一実行可能プログラムから形成される。
コンパイラは、ターゲットコンピュータの両方のバージ
ョンで実行可能なルーチンおよび(i)ルーチンが呼び
出されるプログラム位置のアドレス、(ii)ルーチンと
同じ機能をすぐれた性能でもって実行するターゲットコ
ンピュータの1つのバージョンのみで実行可能な命令、
および(iii)どのバージョンのターゲットマシンがそ
の命令を実行しうるかを指示する値を有するアーキテク
チャエントリを含む実行可能なプログラムを発生する。
ローダは、ターゲットマシンが命令を実行しうるかを決
定し、もし、そうである場合には、アーキテクチャエン
トリにおけるアドレスに現れるサブルーチンコールを、
アーキテクチャエントリに現れる命令で置き換える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般的には、コン
ピュータおよびコンピュータアーキテクチャの分野に関
する。特に、本発明は、異なる命令セットまたは他のア
ーキテクチャ特徴を有するコンピュータのためのコンピ
ュータ特定プログラムコードを発生するコンパイラ、ロ
ーダおよび類似のコンピュータプログラムに関するもの
である。
【0002】
【従来の技術】種々なコンピュータアーキテクチャが開
発されてくるにつれて、新しい命令および他の特徴がそ
れらに加えられてくる。より新しいコンピュータおよび
それらに書き込まれたソフトウエア(プログラム)は、
それらのより新しい命令および特徴を使用することがで
き、同じアーキテクチャのより古いコンピュータでは得
られなかったような効果を達成することができる。した
がって、より新しいプログラムまたはプログラムのより
新しいバージョンは、新しい命令を使用することが望ま
しい。しかしながら、一般的には、より新しいプログラ
ムは、より新しいコンピュータにて実行できるだけでな
く、より古いコンピュータでも実行できるものであるの
が望ましい。すなわち、より新しいプログラムは、遡及
的に、すなわち、後ろへ遡って両立性のあるものである
のが望ましい。ソフトウエアの売主は、種々なバージョ
ンのハードウエアを有する顧客へプログラムを売るが、
各プログラムの1つのバージョンだけサポートすればよ
い。顧客は、プログラムの1つのバージョンを買い、自
分のハードウエアのバージョンがどれであるかに関係な
しに、自分のハードウエアにそのプログラムを適用す
る。また、いわゆる、異種の環境、すなわち、プログラ
ムを実行する能力を必要としているより古いコンピュー
タとより新しいコンピュータとからなるコンピュータク
ラスタまたはコレクションにおいてそのプログラムを使
用したい顧客は、そのプログラムの1つのバージョンの
みをインストールし維持するだけでよい。したがって、
コンピュータ設計者が一般的に目指すところは、コンピ
ュータシステムの性能を改善し、同時に、新しいまたは
更新されたプログラムが広く使用しうるものであるよう
に遡及的な両立性を与えるような新しい命令の使用を促
進させることである。
【0003】こうするために従来試みられた一つの方法
としては、トラップ・アンド・エミュレートと称される
ものがあった。このスキームにおいては、実行可能なプ
ログラムが、1つまたはそれ以上の新しい命令を使用し
てコンパイルされ、この実行可能なプログラムが実行さ
れるべきコンピュータにおいて使用するための更新され
たオペレーティングシステムソフトウエアモジュールが
設けられる。より古いコンピュータが新しい命令を実行
しようとする時、不当命令トラップが中央プロセッサの
設計によって発生する。トラップハンドラーと称される
トラップベクトルが、その更新されたオペレーティング
システムモジュールへ指示する。このトラップハンドラ
ーは、その不当命令を検査し、それがより新しいコンピ
ュータにて正しく実行できるより新しい命令であるのか
を決定する。それから、そのトラップハンドラーは、ソ
フトウエアにてその新しい命令をエミュレートするルー
チンをランチする。このエミュレーションルーチンが完
了するとき、プログラムコントロールは、その実行可能
プログラムの、その新しい命令に続く命令のところに復
帰される。
【0004】しかしながら、前述したようなトラップ・
アンド・エミュレート技法は、種々な欠点を有してお
り、そのために、あまり魅力的なものではない。その1
つの欠点は、新しい命令がそのアーキテクチャに加えら
れ、実行可能なプログラムにおいて使用されるときには
いつでも、オペレーティングシステムを更新する必要が
あるということである。さらに別の大きな欠点は、性能
である。トラップを行なうために100の単位のプロセ
ッサクロックサイクルに対する大きなペナルティがあ
る。実際に、より古いコンピュータの性能は、より新し
い命令を欠いている元のコンピュータの性能より悪くな
るのが一般的である。したがって、トラップ・アンド・
エミュレート技法は、遡及的、すなわち、後ろへ遡って
両立性を与えつつ、より古いコンピュータについても高
い性能を維持するという要望に十分に応えるものではな
い。
【0005】
【発明の概要】より古いバージョンのコンピュータとの
遡及的な両立性を維持し且つより古いバージョンのコン
ピュータの性能に与える影響を最少としつつ、より新し
いバージョンのコンピュータによって新しい命令を使用
できるようにするスキームが従来から要望されている。
本発明の目的は、このようなスキームを提供することで
ある。
【0006】本発明は、広義においては、本特許請求の
範囲の請求項1に限定したような、コンピュータにおい
てコール命令を置き換える方法にある。本発明の好まし
い実施例によるローダプログラムは、ターゲットコンピ
ュータが該ターゲットコンピュータへロードされるべき
実行可能なプログラムに現れる命令を実行することがで
きるかを判断し、もし、実行することができるならば、
(1)前記実行可能なプログラムにおけるアーキテクチ
ャセクションから、前記命令によって置き換えられうる
前記実行可能なプログラムにおけるコール命令の位置を
指定するアドレスを検索し、(2)前記アーキテクチャ
セクションから前記命令を検索し、(3)前記実行可能
なプログラムの他のものの実行のフローに干渉を与えな
いような仕方で前記コール命令を前記検索された命令と
置き換えるという各段階を行なう。このローダによって
形成される実行可能なイメージは、そのイメージが形成
されるべきコンピュータがその新しい命令を実行できる
ときにのみ、その新しい命令を含むので効果的である。
この結果、必要に応じて遡及的な両立性を与えつつ、新
しい命令を使用するという目的の達成が助長されること
になる。
【0007】
【発明の実施の形態】次に、添付図面に基づいて、本発
明の実施例について本発明を説明する。
【0008】図1は、本発明の好ましい実施例を例示し
ており、この実施例によれば、コンピュータプログラム
が用意され、実行のためにターゲットコンピュータへロ
ードされる。高レベル言語にて書かれたソース言語プロ
グラム10は、ソースプログラム10の自然言語状コン
ストラクトを、デジタル呼によってより容易に理解され
る命令およびデータの如きオブジェクトコードコンスト
ラクトへと変換するコンパイラ12によってオペレート
される。コンパイラ12によって形成されるオブジェク
トコードコンストラクトのコレクションは、実行可能な
プログラム14と称される。この実行可能なプログラム
は、通常、後で実行するために、磁気ディスク上のファ
イルの如き持久性記憶装置におけるイメージとして保存
される。例えば、この実行可能なプログラム14は、ネ
ットワークサーバに存在し、また、ネットワークサーバ
を介してアクセスされうる。
【0009】図1の実施例においては、実行可能なプロ
トコル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へ転送され、その実行を開始する。
【0010】以下の説明においては、好ましい実施例を
例示するために、バージョン1およびバージョン2のコ
ンピュータの特定の例を使用する。これらの例は、デジ
タルイクイップメントコーポレーションによって製造販
売されているAlphTM(アルファ)ファミリーのコンピュ
ータである。このファミリーの古いコンピュータおよび
新しいコンピュータは、特定の型のデータを処理するた
めにそれらが使用する命令のうちのあるいくつかの命令
に関して区別しうるものである。ある特定のケースは、
バイト(8ビット)データタイプの処理である。アルフ
ァアーキテクチャは、フラット64ビット仮想メモリア
ドレッシングを指定しており、したがって、アルファイ
ンプリメンテーションにおけるメモリワードの固有幅
は、64ビットである。このような理由を一つの理由と
して、アルファアーキテクチャの初期のバージョン(以
下、バージョン1と称する)の設計においては、レジス
タとメモリの間でデータを移動させるための命令(ロー
ドおよびストア命令)は、ロングワード(32ビット)
データタイプのための命令も存在するのであるが、主と
してカッドワード(64ビット)データタイプを取り扱
うのに限定されている。16ビットデータタイプと称さ
れるワード並びにバイト(8ビット)データタイプを取
り扱うために、バージョン1のアルファアーキテクチャ
は、いくつかの64ビット汎用レジスタのうちの1つ内
でバイトをマニュピレートするための命令を与える。
【0011】バイトストアオペレーションを行なうため
に、バージョン1のアルファコンピュータは、ある命令
のセットを実行する。これらは、バイトを含むカッドワ
ードをレジスタへもたらすためのカッドロード命令、レ
ジスタの所望の位置にバイトを挿入したりレジスタの所
望の位置からバイトを抽出したりする命令、およびデー
タ(新しいバイトを含む)をメモリへと戻すためのカッ
ドワードストア命令を含む。
【0012】アルファアーキテクチャの最近のバージョ
ン(以下、バージョン2と称する)においては、バイト
およびワードロードおよびストアを直接に行なう命令が
存在する。これらの命令を使用すると、バイトおよびワ
ード変数を有するプログラムを簡単化でき、また、ある
場合には、それらプログラムの性能を増すことができ
る。
【0013】バージョン2のアーキテクチャは、バージ
ョン1のアーキテクチャのスーパーセットと称されるも
のであり、すなわち、このバージョン2のアーキテクチ
ャは、新しい命令に加えて、バージョン1の命令のすべ
てを含む。したがって、バイトストアオペレーション
は、バージョン1のアルファコンピュータについて前述
したのと同じようにして、バージョン2のアルファコン
ピュータにて行われうる。そして、実際に、バージョン
1のコンピュータに対して書かれコンパイルされたプロ
グラムは、バージョン2のコンピュータにて変更されな
いままで実行されうる。しかしながら、バージョン2の
アルファコンピュータにて実行されるプログラムは、前
述したより古い方法に代えて、新しいバイトおよびワー
ド命令を使用するのが好ましい。
【0014】図1に示した種々のエレメントは、このよ
うな目的を達成するために協動する。1つの重要なエレ
メントは、実行可能なプログラム14を発生するコンパ
イラ12である。このコンパイラ12の機能について、
以下に、主として、それが発生する実行可能なプログラ
ム14の構造に関して説明する。コンパイラ12を実施
するための適当な手段については、ここでの説明から当
業者には明らかであろう。
【0015】後記の付録Aは、リストのセクション1に
挙げられたソースプログラム10から発生される実行可
能なプログラム14の構造を示す簡単なプログラム例の
リストである。この付録Aのリストに現れているエレメ
ントについて、以下に、ある程度詳細に説明する。
【0016】このプログラム例は、変数bを別の変数a
へ単純にコピーするs1と称するサブルーチンを含む。
これらの変数aおよびbは、バイトとして宣言される。
aおよびbは、バイトタイプの変数であるのでサブルー
チンs1において現れる割当てa=bは、バージョン1
のアルファコンピュータと、バージョン2のアルファコ
ンピュータとでは、異なった仕方で実施されるのが好ま
しい。何故ならば、前述したように、バージョン1のコ
ンピュータには、バイトロードおよびストア命令がない
からである。
【0017】このリストのセクション2は、その実行可
能なプログラム14が異なるアルファ実施に対してこの
要件を取り扱うためにどのように構成されるかを示して
いる。相対プログラム位置0000で始まるプログラム
の主要部分は、バイトbを含むカッドワードを汎用レジ
スタt0へもたらすためロードカッドワード命令(1d
u)を実行し、それから、そのバイトをt0内の最
下位位置に置くためにエクストラクトバイト命令(ex
tb1)を実行する。この点で、この割当て機能を完了
するために、このようにしてt0に置かれたバイトbを
メモリのバイトaのアドレスに記憶する必要がある。必
要とされるストアバイト機能をなすために、サブルーチ
ン(bsr)へのブランチが、stb routine
とラベルされたルーチンに対して実行される。このルー
チンは、後述するようなストアバイトオペレーションを
行なう。このサブルーチンstb routineが完
了するとき、バイト割当てa=bが完了され、それか
ら、リターン命令(ret)が、サブルーチンs1から
の復帰を実施する。
【0018】ルーチンstb routineは、バイ
ト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によって置き換えられたことである。
【0019】付録Aに現れているようなプログラム例の
実行のフローは、s1サブルーチンにおける位置000
0からbsrを通して0008まで行き、それから、s
tb routineの位置0010から位置0024ま
で行き、最後に、s1の位置000Cへ戻る。このシー
ケンスは、バージョン1のアルファコンピュータまたは
バージョン2のアルファコンピュータに関して実行しう
るようにして、バイトロード/ストアペアを実行する。
これは、実行可能なプログラム14の変更なしで実行さ
れるデホールトコードシーケンスである。
【0020】このリストのセクション3は、アーキテク
チャセクションと称されるセクションを示している。こ
れは、ローダが異なるロードされた実行可能なイメージ
18−1および18−2を形成することができるように
する情報を含む実行可能なプログラム14の別のセクシ
ョンである。このリストには、3つの重要なアイテム、
すなわち、バージョン指示値(0002)、アドレス
(0008)および命令(stb t0,(a0))が
ある。これらの3つのアイテムは、そこに現れているア
ドレス0008によって、位置0008でのbsr命令
に関連付けられるアーキテクチャエントリを形成する。
一般的に、ソースプログラム12によって必要とされる
各割当てオペレーションに対して1つのアーキテクチャ
エントリがある。この例は、1つの割当てしか有してい
ないので、アーキテクチャセクションには、1つのアー
キテクチャエントリしか示されていない。このアーキテ
クチャエントリにおけるバージョン指示値は、実行を行
なうターゲットコンピュータがそのアーキテクチャエン
トリに現れる命令を実行することができるかを、ローダ
が判断できるようにする。アドレスは、ローダが、st
routineに対するコーリングポイントを識別
できるようにする。そして、その命令は、ローダによっ
て容易に識別され検索されうるように、そのアーキテク
チャエントリに置かれる。
【0021】後述するように、ローダ16は、バージョ
ン2のアルファコンピュータにて実行されるべきときに
は、付録Aに示した実行可能なプログラム14を変更す
る。詳細には、ローダは、位置0008に現れているb
sr命令を、アーキテクチャエントリに現れるstb命
令で置き換える。その結果変更されたプログラムは、ソ
ースプログラムによって必要とされる同じ割当てオペレ
ーションを実行するが、実行のためのフローは異なる。
変更されたプログラムは、単に、位置000Cに復帰す
るまで直線的に実行し、サブルーチンstb rout
ineを呼び出すことはない。
【0022】前述したような置換は、実行可能なプログ
ラムの実行のフローに影響を与えないような仕方で行わ
れねばならない。アルファアーキテクチャにおいて、す
べての命令は、同じサイズであり、32ビットである。
したがって、1つの命令は、命令ストリームにギャップ
を生じたり、命令ストリームのギャップを埋めたりせず
に、別の命令と置き換えられうる。他のアーキテクチャ
または置換スキームにおいては、デホールトシーケンス
を発生するとき、その後の置換を考慮する必要がある。
例えば、置換命令がデホールト命令より大きい場合に
は、デホールト命令に隣接した命令ストリームにおいて
ノーオペレーション(NOP)コマンドを発生する必要
がある。このような技法は、当業分野においてはよく知
られている。
【0023】ここで注意すべき点は、付録Aに現れてい
るようなプログラム例は、バージョン1のアルファコン
ピュータに関して変更を要せずに実行しうるということ
である。したがって、このプログラムは、アーキテクチ
ャ情報およびstb命令におけるパッチングの可能性を
念頭においていないローダプログラムによってでも、メ
モリへロードされうる。これは、コードシーケンスのこ
のような配列によって達成される遡及的両立性をさらに
示すものである。
【0024】図2を参照するに、ローダ16のオペレー
ションについて、本実施例について以下説明する。ロー
ディングプロセス中、ローダ16は、実行可能なプログ
ラム14のアーキテクチャセクションにアクセスする。
そして、ローダは、そこに見出したバージョン指示値
を、ターゲットコンピュータのバージョンを特定するタ
ーゲットコンピュータ環境における情報と比較する。ア
ルファアーキテクチャにおいては、この情報は、アマス
ク(アーキテクチャマスク)命令を介して手に入る。も
し、ターゲットコンピュータのバージョンがアーキテク
チャセクションの値によって特定されるものと一致しな
い場合には、ターゲットコンピュータは、そのアーキテ
クチャセクションに記憶された命令を実行することがで
きない。この場合において、ローダは、付録Aに示され
た実行可能なコードを、実行可能なプログラム14から
変更されていないメモリ20−1へと単にコピーするこ
とによって、バージョン1ロード実行可能イメージ18
−1を形成する。しかしながら、もし、ターゲットコン
ピュータのバージョンがそのアーキテクチャセクション
における値によって特定されるものと一致する場合に
は、ターゲットコンピュータは、そのアーキテクチャセ
クションに記憶された命令を実行することができる。こ
の場合において、ローダ16は、バージョンロード実行
可能イメージ18−2を形成する。ローダは、そのアー
キテクチャセクションに記憶されたアドレスおよび命令
を得る。それから、実行可能なプログラム14をメモリ
20−2へコピーしている間、または、コピーの後、ロ
ーダは、その特定されたアドレスに現れる命令を、その
アーキテクチャセクションから得られる命令で置き換え
る。
【0025】本発明の実施例の特定の特徴について説明
してきたのであるが、本発明の範囲内に入る他の多くの
可能な実施例がある。本発明は、命令セットアーキテク
チャを改訂することにより発生する問題を処理するのに
特に有用である。しかしながら、本発明は、より一般的
には、実行可能なプログラムが実行されうるような異な
るランタイム環境のセットにおいて効果的な結果をもた
らすのに適用されうる。このようなランタイム環境の例
としては、異なるオペレーティングシステム、通常のオ
ペレーティングモード対デバッグ、異なる浮動小数点演
算スキームまたは所望の精度がある。例示した実施例で
は、実行可能なプログラムは、2つのランタイム環境の
うちのどちらか一方にて実行され、2つの代替コードシ
ーケンスが発生される。本発明の原理は、2つ、3つ、
またはそれ以上の代替コードシーケンスが含まれるよう
な3つまたはそれ以上の異なるランタイム環境での実行
を行えるように拡張されうる。
【0026】前述したようなコンパイラは、発生される
実行可能なイメージ14を効果的に処理するのに外部ロ
ーダに頼っているが、別の実施例では、ランタイムでそ
の変更を実施する実行可能なプログラムにコードをそれ
自身で発生することができる。さらに別の実施例では、
発生されたルーチン(stb routineの如き)
は、ストアバイト機能が必要とされるような多重位置か
ら呼び出されうる。このようなスキームでは、stb命
令によって使用されるパラメータに特定のプリアレンジ
制約を課す必要がある。このような技法は、当業分野に
おいては知られており、これらを使用することにより、
発生される実行可能なプログラムのスペース効率をより
大きくすることができる。最後に、別の実施例では、デ
ホールトシーケンスが遡及的な両立性のあるルーチンで
なく、新しい命令であることの方が重要であることもあ
る。本特許請求の範囲は、これらのすべておよびその他
の実施例を包含しようとしているものである。
【0027】 付 録 A プログラム例のリスト {セクション1−ソースプログラムリスト} 1 サブルーチン s1(a,b) 2 バイトa,b 3 a=b 4 終了 {セクション2−シンボリックフォーマットにおける実行可能なプログラム} s1: 0000 1dq u t0,(a1) //bを含むカッドワードをレジスタt0 //へもたらす 0004 extb1 t0,a1,t0 //所望のバイトを抽出し、最下位位置に //置く 0008 bsr at,stb routine //ストアバイトルーチンを呼ぶ 000C ret (ra) //リンクとしてレジスタraを使用して //復帰 stb routine : 0010 1dq u t11, (a0) //aを含むカッドワードをレジスタt1 //1へもたらす 0014 insb1 t0,a0,t12 //レジスタt12における零のフィール //ドにバイトbを置く 0018 mskb1 t11,a0,t11 //レジスタt11におけるバイトaを構 //成するビットをクリア 001C bis t11,t12,t11 //レジスタt11をレジスタt11へビ //ットワイズオア 0020 stq u t11,(a0) //レジスタt11をメモリへストアし戻 //す 0024 ret (at) //リンクとしてレジスタatを使用して //復帰 {セクション3−アーキテクチャセクション} arch section: 0000 0002 //置換がOKであるバージョンのコンピ //ュータを指示する値 0008 //stbによって置き換えられるべきb //srのアドレス stb t0, (a0) //bsrを置き換える命令
【図面の簡単な説明】
【図1】本発明の原理を使用したプログラムコンパイリ
ングおよびローディングを示すブロック図である。
【図2】図1のスキームにおけるローダプログラムのオ
ペレーションを示すフローチャートを示す図である。
【符号の説明】
10 ソース言語プログラム 12 コンパイラ 14 実行可能なプログラム 16 ローダ 18−1 バージョン1ロード実行可能イメージ 18−2 バージョン2ロード実行可能イメージ 20−1 メモリ 20−2 メモリ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 トーマス ヴァン バーク アメリカ合衆国 ワシントン州 98006 ベルヴィュー サウスイースト フォーテ ィフィフス プレイス 15720 (72)発明者 ウィリアム ケイ コルゲート アメリカ合衆国 ワシントン州 98027 イサカ ワンハンドレッドアンドセヴンテ ィース プレイス サウスイースト 4327 (72)発明者 リチャード エル シーテス アメリカ合衆国 カリフォルニア州 94025 メンロ パーク カンポ ベーロ レーン 145

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータにおいてコール命令を置き
    換える方法において、 ターゲットコンピュータへロードされるべき実行可能な
    プログラムに現れる命令を該ターゲットコンピュータが
    実行しうるかをチェックし決定し、 もし、前記ターゲットコンピュータが前記命令を実行で
    きる場合には、前記実行可能なプログラムにおけるアー
    キテクチャセクションから、前記命令によって置き換え
    られうる前記実行可能なプログラムにおけるコール命令
    の位置を特定するアドレスを検索し、前記アーキテクチ
    ャセクションから前記命令を検索し、前記実行可能なプ
    ログラムの他のものの実行のフローに影響を与えないよ
    うにして、前記コール命令を前記検索された命令と置き
    換え、 もし、前記ターゲットコンピュータが前記命令を実行で
    きない場合には、前記コール命令を置き換えないように
    する、ことを特徴とする方法。
JP10161973A 1997-06-11 1998-06-10 異なるランタイム環境において実行するための実行可能プログラムにおけるコードシーケンスを機能的に類似したコードシーケンスと条件付きで置き換えるローダ Abandoned JPH1115673A (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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