JPH1115674A - 異なるランタイム環境において実行するための実行可能プログラムにおいて機能的に類似したコードシーケンスを発生するコンパイラ - Google Patents

異なるランタイム環境において実行するための実行可能プログラムにおいて機能的に類似したコードシーケンスを発生するコンパイラ

Info

Publication number
JPH1115674A
JPH1115674A JP10161974A JP16197498A JPH1115674A JP H1115674 A JPH1115674 A JP H1115674A JP 10161974 A JP10161974 A JP 10161974A JP 16197498 A JP16197498 A JP 16197498A JP H1115674 A JPH1115674 A JP H1115674A
Authority
JP
Japan
Prior art keywords
executable program
program
computer
instruction
version
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
JP10161974A
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 JPH1115674A publication Critical patent/JPH1115674A/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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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に限定したような、コンピュータにおい
て実行可能なプログラムを発生する方法にある。
【0007】後述する好ましい実施例は、異なるランタ
イム環境において実行しうる実行可能なプログラムを発
生するコンパイラを含む。ここで、異なるランタイム環
境は、例えば、命令セットアーキテクチャの異なるバー
ジョンを有するようなコンピュータでありうる。コンパ
イラは、実行可能なプログラムにおけるコードシーケン
スを発生する。これら各コードシーケンスは、実行可能
なプログラムが発生されるソースプログラムの部分によ
って必要とされる機能を実行する。各コードシーケンス
は、他のコードシーケンスよりも、ランタイム環境の対
応する1つにおいて実行するのにより適しており、これ
らコードシーケンスは、ランタイム環境の各々において
より適したコードシーケンスを実行しうるようにする仕
方で発生される。
【0008】例えば、実行可能なプログラムは、2つの
異なるバージョンのコンピュータ、すなわち、1つはよ
り新しいコンピュータ、1つはより古いコンピュータに
て実行するためのものとされうる。この場合において、
コンパイラは、2つのコードシーケンスを発生する。こ
れらコードシーケンスのうちの一方は、より新しいコン
ピュータのみで実行されうる新しい命令であり、他方の
コードシーケンスは、その命令と同じ機能を実行する
が、より新しいコンピュータ並びにより古いコンピュー
タにて実行されうるようなルーチンである。
【0009】このようにしてコンパイラによって発生さ
れた実行可能なプログラムは、より適したコードシーケ
ンスが実行されうるように、ランタイムで容易に変更さ
れうる。例えば、ローダプログラムの如き協動エンティ
ティは、より適したコードシーケンスにおいてパッチす
ることができ、すなわち、より適したコードシーケンス
が実行されるようにプログラムコントロールのフローを
変更することができる。したがって、より新しい命令
は、より新しいコンピュータにて使用され得て、そのル
ーチンは、トラップまたは他の同様の非効率的なメカニ
ズムを必要とせずに、より古いコンピュータにて使用さ
れ得る。
【0010】後で詳述するように、コードシーケンスの
うちの1つは、そのデホールト実行を行なうようにして
発生されうるという点で効果がある。したがって、実行
可能なプログラムは、他のコードシーケンスおよび実行
可能なプログラムをパッチングする可能性を念頭に入れ
ていないようなより古いプログラムでありうるような環
境において実行されうる。この実行可能なプログラム
は、もし、発生されるデホールトコードシーケンスが遡
及的に両立性のあるコードシーケンスである場合には、
それでもなお正しく実行されうる。
【0011】ここで説明する好ましい実施例は、コード
シーケンスと共に、(i)ソースプログラムの部分によ
って必要とされる機能が実行されるべき実行可能なプロ
グラムにおけるプログラム位置を指定するアドレス、お
よび(ii)コードシーケンスのうちの1つの実行がより
適しているのは、どのランタイム環境においてかを指示
する値を含む実行可能なプログラムにおける付加的情報
を発生するコンパイラを含む。この付加的情報により、
イメージアクティベーションタイムでの協動エンティテ
ィによる実行可能なプログラムの速い効率的なパッチン
グが可能とされる。
【0012】
【発明の実施の形態】次に、添付図面に基づいて、本発
明の実施例について本発明を説明する。
【0013】図1は、本発明の好ましい実施例を例示し
ており、この実施例によれば、コンピュータプログラム
が用意され、実行のためにターゲットコンピュータへロ
ードされる。高レベル言語にて書かれたソース言語プロ
グラム10は、ソースプログラム10の自然言語状コン
ストラクトを、デジタル呼によってより容易に理解され
る命令およびデータの如きオブジェクトコードコンスト
ラクトへと変換するコンパイラ12によってオペレート
される。コンパイラ12によって形成されるオブジェク
トコードコンストラクトのコレクションは、実行可能な
プログラム14と称される。この実行可能なプログラム
は、通常、後で実行するために、磁気ディスク上のファ
イルの如き持久性記憶装置におけるイメージとして保存
される。例えば、この実行可能なプログラム14は、ネ
ットワークサーバに存在し、また、ネットワークサーバ
を介してアクセスされうる。
【0014】図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へ転送され、その実行を開始する。
【0015】以下の説明においては、好ましい実施例を
例示するために、バージョン1およびバージョン2のコ
ンピュータの特定の例を使用する。これらの例は、デジ
タルイクイップメントコーポレーションによって製造販
売されているAlphTM(アルファ)ファミリーのコンピュ
ータである。このファミリーの古いコンピュータおよび
新しいコンピュータは、特定の型のデータを処理するた
めにそれらが使用する命令のうちのあるいくつかの命令
に関して区別しうるものである。ある特定のケースは、
バイト(8ビット)データタイプの処理である。アルフ
ァアーキテクチャは、フラット64ビット仮想メモリア
ドレッシングを指定しており、したがって、アルファイ
ンプリメンテーションにおけるメモリワードの固有幅
は、64ビットである。このような理由を一つの理由と
して、アルファアーキテクチャの初期のバージョン(以
下、バージョン1と称する)の設計においては、レジス
タとメモリの間でデータを移動させるための命令(ロー
ドおよびストア命令)は、ロングワード(32ビット)
データタイプのための命令も存在するのであるが、主と
してカッドワード(64ビット)データタイプを取り扱
うのに限定されている。16ビットデータタイプと称さ
れるワード並びにバイト(8ビット)データタイプを取
り扱うために、バージョン1のアルファアーキテクチャ
は、いくつかの64ビット汎用レジスタのうちの1つ内
でバイトをマニュピレートするための命令を与える。
【0016】バイトストアオペレーションを行なうため
に、バージョン1のアルファコンピュータは、ある命令
のセットを実行する。これらは、バイトを含むカッドワ
ードをレジスタへもたらすためのカッドロード命令、レ
ジスタの所望の位置にバイトを挿入したりレジスタの所
望の位置からバイトを抽出したりする命令、およびデー
タ(新しいバイトを含む)をメモリへと戻すためのカッ
ドワードストア命令を含む。
【0017】アルファアーキテクチャの最近のバージョ
ン(以下、バージョン2と称する)においては、バイト
およびワードロードおよびストアを直接に行なう命令が
存在する。これらの命令を使用すると、バイトおよびワ
ード変数を有するプログラムを簡単化でき、また、ある
場合には、それらプログラムの性能を増すことができ
る。
【0018】バージョン2のアーキテクチャは、バージ
ョン1のアーキテクチャのスーパーセットと称されるも
のであり、すなわち、このバージョン2のアーキテクチ
ャは、新しい命令に加えて、バージョン1の命令のすべ
てを含む。したがって、バイトストアオペレーション
は、バージョン1のアルファコンピュータについて前述
したのと同じようにして、バージョン2のアルファコン
ピュータにて行われうる。そして、実際に、バージョン
1のコンピュータに対して書かれコンパイルされたプロ
グラムは、バージョン2のコンピュータにて変更されな
いままで実行されうる。しかしながら、バージョン2の
アルファコンピュータにて実行されるプログラムは、前
述したより古い方法に代えて、新しいバイトおよびワー
ド命令を使用するのが好ましい。
【0019】図1に示した種々のエレメントは、このよ
うな目的を達成するために協動する。1つの重要なエレ
メントは、実行可能なプログラム14を発生するコンパ
イラ12である。このコンパイラ12の機能について、
以下に、主として、それが発生する実行可能なプログラ
ム14の構造に関して説明する。コンパイラ12を実施
するための適当な手段については、ここでの説明から当
業者には明らかであろう。
【0020】後記の付録Aは、リストのセクション1に
挙げられたソースプログラム10から発生される実行可
能なプログラム14の構造を示す簡単なプログラム例の
リストである。この付録Aのリストに現れているエレメ
ントについて、以下に、ある程度詳細に説明する。
【0021】このプログラム例は、変数bを別の変数a
へ単純にコピーするs1と称するサブルーチンを含む。
これらの変数aおよびbは、バイトとして宣言される。
aおよびbは、バイトタイプの変数であるのでサブルー
チンs1において現れる割当てa=bは、バージョン1
のアルファコンピュータと、バージョン2のアルファコ
ンピュータとでは、異なった仕方で実施されるのが好ま
しい。何故ならば、前述したように、バージョン1のコ
ンピュータには、バイトロードおよびストア命令がない
からである。
【0022】このリストのセクション2は、その実行可
能なプログラム14が異なるアルファ実施に対してこの
要件を取り扱うためにどのように構成されるかを示して
いる。相対プログラム位置0000で始まるプログラム
の主要部分は、バイトbを含むカッドワードを汎用レジ
スタt0へもたらすためロードカッドワード命令(1d
u)を実行し、それから、そのバイトをt0内の最
下位位置に置くためにエクストラクトバイト命令(ex
tb1)を実行する。この点で、この割当て機能を完了
するために、このようにしてt0に置かれたバイトbを
メモリのバイトaのアドレスに記憶する必要がある。必
要とされるストアバイト機能をなすために、サブルーチ
ン(bsr)へのブランチが、stb routine
とラベルされたルーチンに対して実行される。このルー
チンは、後述するようなストアバイトオペレーションを
行なう。このサブルーチンstb routineが完
了するとき、バイト割当てa=bが完了され、それか
ら、リターン命令(ret)が、サブルーチンs1から
の復帰を実施する。
【0023】ルーチン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によって置き換えられたことである。
【0024】付録Aに現れているようなプログラム例の
実行のフローは、s1サブルーチンにおける位置000
0からbsrを通して0008まで行き、それから、s
tb routineの位置0010から位置0024ま
で行き、最後に、s1の位置000Cへ戻る。このシー
ケンスは、バージョン1のアルファコンピュータまたは
バージョン2のアルファコンピュータに関して実行しう
るようにして、バイトロード/ストアペアを実行する。
これは、実行可能なプログラム14の変更なしで実行さ
れるデホールトコードシーケンスである。
【0025】このリストのセクション3は、アーキテク
チャセクションと称されるセクションを示している。こ
れは、ローダが異なるロードされた実行可能なイメージ
18−1および18−2を形成することができるように
する情報を含む実行可能なプログラム14の別のセクシ
ョンである。このリストには、3つの重要なアイテム、
すなわち、バージョン指示値(0002)、アドレス
(0008)および命令(stb t0,(a0))が
ある。これらの3つのアイテムは、そこに現れているア
ドレス0008によって、位置0008でのbsr命令
に関連付けられるアーキテクチャエントリを形成する。
一般的に、ソースプログラム12によって必要とされる
各割当てオペレーションに対して1つのアーキテクチャ
エントリがある。この例は、1つの割当てしか有してい
ないので、アーキテクチャセクションには、1つのアー
キテクチャエントリしか示されていない。このアーキテ
クチャエントリにおけるバージョン指示値は、実行を行
なうターゲットコンピュータがそのアーキテクチャエン
トリに現れる命令を実行することができるかを、ローダ
が判断できるようにする。アドレスは、ローダが、st
routineに対するコーリングポイントを識別
できるようにする。そして、その命令は、ローダによっ
て容易に識別され検索されうるように、そのアーキテク
チャエントリに置かれる。
【0026】後述するように、ローダ16は、バージョ
ン2のアルファコンピュータにて実行されるべきときに
は、付録Aに示した実行可能なプログラム14を変更す
る。詳細には、ローダは、位置0008に現れているb
sr命令を、アーキテクチャエントリに現れるstb命
令で置き換える。その結果変更されたプログラムは、ソ
ースプログラムによって必要とされる同じ割当てオペレ
ーションを実行するが、実行のためのフローは異なる。
変更されたプログラムは、単に、位置000Cに復帰す
るまで直線的に実行し、サブルーチンstb rout
ineを呼び出すことはない。
【0027】前述したような置換は、実行可能なプログ
ラムの実行のフローに影響を与えないような仕方で行わ
れねばならない。アルファアーキテクチャにおいて、す
べての命令は、同じサイズであり、32ビットである。
したがって、1つの命令は、命令ストリームにギャップ
を生じたり、命令ストリームのギャップを埋めたりせず
に、別の命令と置き換えられうる。他のアーキテクチャ
または置換スキームにおいては、デホールトシーケンス
を発生するとき、その後の置換を考慮する必要がある。
例えば、置換命令がデホールト命令より大きい場合に
は、デホールト命令に隣接した命令ストリームにおいて
ノーオペレーション(NOP)コマンドを発生する必要
がある。このような技法は、当業分野においてはよく知
られている。
【0028】ここで注意すべき点は、付録Aに現れてい
るようなプログラム例は、バージョン1のアルファコン
ピュータに関して変更を要せずに実行しうるということ
である。したがって、このプログラムは、アーキテクチ
ャ情報およびstb命令におけるパッチングの可能性を
念頭においていないローダプログラムによってでも、メ
モリへロードされうる。これは、コードシーケンスのこ
のような配列によって達成される遡及的両立性をさらに
示すものである。
【0029】図2を参照するに、ローダ16のオペレー
ションについて、本実施例について以下説明する。ロー
ディングプロセス中、ローダ16は、実行可能なプログ
ラム14のアーキテクチャセクションにアクセスする。
そして、ローダは、そこに見出したバージョン指示値
を、ターゲットコンピュータのバージョンを特定するタ
ーゲットコンピュータ環境における情報と比較する。ア
ルファアーキテクチャにおいては、この情報は、アマス
ク(アーキテクチャマスク)命令を介して手に入る。も
し、ターゲットコンピュータのバージョンがアーキテク
チャセクションの値によって特定されるものと一致しな
い場合には、ターゲットコンピュータは、そのアーキテ
クチャセクションに記憶された命令を実行することがで
きない。この場合において、ローダは、付録Aに示され
た実行可能なコードを、実行可能なプログラム14から
変更されていないメモリ20−1へと単にコピーするこ
とによって、バージョン1ロード実行可能イメージ18
−1を形成する。しかしながら、もし、ターゲットコン
ピュータのバージョンがそのアーキテクチャセクション
における値によって特定されるものと一致する場合に
は、ターゲットコンピュータは、そのアーキテクチャセ
クションに記憶された命令を実行することができる。こ
の場合において、ローダ16は、バージョンロード実行
可能イメージ18−2を形成する。ローダは、そのアー
キテクチャセクションに記憶されたアドレスおよび命令
を得る。それから、実行可能なプログラム14をメモリ
20−2へコピーしている間、または、コピーの後、ロ
ーダは、その特定されたアドレスに現れる命令を、その
アーキテクチャセクションから得られる命令で置き換え
る。
【0030】本発明の実施例の特定の特徴について説明
してきたのであるが、本発明の範囲内に入る他の多くの
可能な実施例がある。本発明は、命令セットアーキテク
チャを改訂することにより発生する問題を処理するのに
特に有用である。しかしながら、本発明は、より一般的
には、実行可能なプログラムが実行されうるような異な
るランタイム環境のセットにおいて効果的な結果をもた
らすのに適用されうる。このようなランタイム環境の例
としては、異なるオペレーティングシステム、通常のオ
ペレーティングモード対デバッグ、異なる浮動小数点演
算スキームまたは所望の精度がある。例示した実施例で
は、実行可能なプログラムは、2つのランタイム環境の
うちのどちらか一方にて実行され、2つの代替コードシ
ーケンスが発生される。本発明の原理は、2つ、3つ、
またはそれ以上の代替コードシーケンスが含まれるよう
な3つまたはそれ以上の異なるランタイム環境での実行
を行えるように拡張されうる。
【0031】前述したようなコンパイラは、発生される
実行可能なイメージ14を効果的に処理するのに外部ロ
ーダに頼っているが、別の実施例では、ランタイムでそ
の変更を実施する実行可能なプログラムにコードをそれ
自身で発生することができる。さらに別の実施例では、
発生されたルーチン(stb routineの如き)
は、ストアバイト機能が必要とされるような多重位置か
ら呼び出されうる。このようなスキームでは、stb命
令によって使用されるパラメータに特定のプリアレンジ
制約を課す必要がある。このような技法は、当業分野に
おいては知られており、これらを使用することにより、
発生される実行可能なプログラムのスペース効率をより
大きくすることができる。最後に、別の実施例では、デ
ホールトシーケンスが遡及的な両立性のあるルーチンで
なく、新しい命令であることの方が重要であることもあ
る。本特許請求の範囲は、これらのすべておよびその他
の実施例を包含しようとしているものである。
【0032】 付 録 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 (9)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータにおけるソースプログラム
    から異なるランタイム環境において実行されるための実
    行可能なプログラムを発生する方法において、前記実行
    可能なプログラムにおいて、該実行可能なプログラムが
    発生されるソースプログラムの部分によって必要とされ
    る機能を各々が実行するコードシーケンスを発生し、該
    コードシーケンスは、他のコードシーケンスよりも、異
    なるランタイム環境のうちの対応する1つにおいて実行
    するのにより適しており、該コードシーケンスは、ラン
    タイム環境の各々においてより適したコードシーケンス
    の実行を可能とするような仕方で発生されることを特徴
    とする方法。
  2. 【請求項2】 前記実行可能なプログラムにおいて、次
    の情報、すなわち、(i)前記ソースプログラムの部分
    によって必要とされる機能が実行されるべき前記実行可
    能なプログラムにおけるプログラム位置を指定するアド
    レス、および(ii)前記コードシーケンスのうちの1つ
    の実行がより適しているのは、どのランタイム環境にお
    いてかを指示する値を発生することを、更に、含む請求
    項1記載の方法。
  3. 【請求項3】 ランタイム環境のうちの所定のランタイ
    ム環境において実行するのにより適した前記コードシー
    ケンスのうちの1つは、前記1つのコードシーケンスの
    代わりにコードシーケンスのうちの別のコードシーケン
    スを実行するために、前記実行可能なプログラムを変更
    することのできるランタイム環境のうちの別のランタイ
    ム環境における協動エンティティによる容易な識別およ
    びデホールト実行を行えるような仕方で発生され、前記
    他方のコードシーケンスは、前記協動エンティティによ
    る容易な識別を行えるような仕方で発生される請求項1
    記載の方法。
  4. 【請求項4】 前記異なるランタイム環境は、前記実行
    可能なプログラムが実行されるための2つの異なるバー
    ジョンのコンピュータであり、発生されるコードシーケ
    ンスの数は、2であり、前記コードシーケンスのうちの
    1つは、前記コンピュータの1つのバージョンのみにて
    実行しうる命令であり、他方のコードシーケンスは、実
    行中に命令よりも効率的でないが、前記コンピュータの
    両方のバージョンで実行しうるルーチンである請求項1
    記載の方法。
  5. 【請求項5】 前記コンピュータの2つのバージョン
    は、命令セットアーキテクチャの2つの異なるバージョ
    ンとの追従性によって区別され、命令セットアーキテク
    チャのうちの1つのバージョンは、他方のバージョンの
    スーパーセットである最近のバージョンである請求項4
    記載の方法。
  6. 【請求項6】 前記コンピュータの両方のバージョン
    は、64ビットメモリアーキテクチャであり、前記コー
    ドシーケンスのうちの1つは、バイトストア命令であ
    り、他方のコードシーケンスは、バイトストアオペレー
    ションを行なう多重命令ルーチンである請求項4記載の
    方法。
  7. 【請求項7】 実行可能なプログラムにおいて、該実行
    可能なプログラムが発生されるソースプログラムの部分
    によって必要とされる機能を行なう命令を発生し、該命
    令は、前記実行可能なプログラムが実行されるためのコ
    ンピュータの2つの異なるバージョンのうちの1つのみ
    で実行可能であり、さらに、前記実行可能なプログラム
    において、前記必要とされる機能を行うが、前記コンピ
    ュータの両方のバージョンで実行可能であるようなルー
    チンを発生し、前記実行可能なプログラムにおいて、
    (i)前記機能が行われるべき前記実行可能なプログラ
    ムにおけるプログラム位置を指定するアドレス、および
    (ii)前記コンピュータのどのバージョンが前記命令を
    実行できるかを指示する値を有するアーキテクチャエン
    トリを発生することを特徴とする方法。
  8. 【請求項8】 前記ルーチンは、前記アーキテクチャ情
    報に含まれたアドレスによって指定されるプログラム位
    置から呼び出しうるサブルーチンであり、前記命令は、
    前記アーキテクチャエントリに含まれており、さらに、
    前記指定されたプログラム位置で前記実行可能なプログ
    ラムにおける前記サブルーチンへのコールを発生し、前
    記サブルーチンコールは、前記実行可能なプログラムの
    他のものの実行のフローに影響せずに、前記命令と後で
    置換できるような仕方で発生される請求項7記載の方
    法。
  9. 【請求項9】 前記コンピュータの両方のバージョン
    は、64ビットメモリアーキテクチャを有し、前記命令
    およびルーチンによって行われる機能は、データの単一
    バイトをメモリにストアすることである請求項7記載の
    方法。
JP10161974A 1997-06-11 1998-06-10 異なるランタイム環境において実行するための実行可能プログラムにおいて機能的に類似したコードシーケンスを発生するコンパイラ Abandoned JPH1115674A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/873,147 US5920721A (en) 1997-06-11 1997-06-11 Compiler generating functionally-alike code sequences in an executable program intended for execution in different run-time environments
US08/873147 1997-06-11

Publications (1)

Publication Number Publication Date
JPH1115674A true JPH1115674A (ja) 1999-01-22

Family

ID=25361066

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10161974A Abandoned JPH1115674A (ja) 1997-06-11 1998-06-10 異なるランタイム環境において実行するための実行可能プログラムにおいて機能的に類似したコードシーケンスを発生するコンパイラ

Country Status (3)

Country Link
US (1) US5920721A (ja)
EP (1) EP0892343A2 (ja)
JP (1) JPH1115674A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8221010B2 (en) 2000-09-11 2012-07-17 Zipher Limited Tape drive and printing apparatus
KR20140060299A (ko) * 2011-09-07 2014-05-19 마이크로소프트 코포레이션 변형 컨텍스트-인식 데이터 소스 관리

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6163764A (en) * 1998-10-12 2000-12-19 Intel Corporation Emulation of an instruction set on an instruction set architecture transition
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US6526570B1 (en) * 1999-04-23 2003-02-25 Sun Microsystems, Inc. File portability techniques
US6286134B1 (en) * 1999-04-23 2001-09-04 Sun Microsystems, Inc. Instruction selection in a multi-platform environment
GB2389751B (en) * 1999-05-28 2004-02-25 Nec Corp Mobile telecommunications system
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
JP3655152B2 (ja) * 1999-11-29 2005-06-02 富士通株式会社 ソフトウェア編集装置及び記憶媒体
JP3640081B2 (ja) * 1999-12-27 2005-04-20 日本電気株式会社 Mpiプログラムのコンパイルにおける最適化方法
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6941549B1 (en) * 2000-03-31 2005-09-06 International Business Machines Corporation Communicating between programs having different machine context organizations
US7207038B2 (en) * 2003-08-29 2007-04-17 Nokia Corporation Constructing control flows graphs of binary executable programs at post-link time
US7395527B2 (en) 2003-09-30 2008-07-01 International Business Machines Corporation Method and apparatus for counting instruction execution and data accesses
US8381037B2 (en) 2003-10-09 2013-02-19 International Business Machines Corporation Method and system for autonomic execution path selection in an application
JP2005157849A (ja) * 2003-11-27 2005-06-16 Toshiba Corp システムlsi設計装置、システムlsi設計用処理プログラム、及び整合性検証方法
US7401330B2 (en) * 2003-12-11 2008-07-15 Hewlett-Packard Development Company, L.P. Cloning programming code
US7895382B2 (en) 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US7415705B2 (en) * 2004-01-14 2008-08-19 International Business Machines Corporation Autonomic method and apparatus for hardware assist for patching code
US20070016899A1 (en) * 2005-07-15 2007-01-18 Sule Dineel D Technique for the calling of a sub-routine by a function using an intermediate sub-routine
US9361137B2 (en) 2006-03-10 2016-06-07 International Business Machines Corporation Managing application parameters based on parameter types
US9727604B2 (en) * 2006-03-10 2017-08-08 International Business Machines Corporation Generating code for an integrated data system
US8099725B2 (en) * 2006-10-11 2012-01-17 International Business Machines Corporation Method and apparatus for generating code for an extract, transform, and load (ETL) data flow
US8160999B2 (en) * 2006-12-13 2012-04-17 International Business Machines Corporation Method and apparatus for using set based structured query language (SQL) to implement extract, transform, and load (ETL) splitter operation
US8219518B2 (en) * 2007-01-09 2012-07-10 International Business Machines Corporation Method and apparatus for modelling data exchange in a data flow of an extract, transform, and load (ETL) process
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
US8561037B2 (en) * 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US8370821B2 (en) * 2007-08-21 2013-02-05 International Business Machines Corporation Method for enabling profile-based call site tailor-ing using profile gathering of cloned functions
US8185883B2 (en) * 2007-09-14 2012-05-22 International Business Machines Corporation Instruction exploitation through loader late fix-up
US8205066B2 (en) 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US20100153693A1 (en) * 2008-12-17 2010-06-17 Microsoft Corporation Code execution with automated domain switching
US8677329B2 (en) * 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US9117071B2 (en) * 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
US8423745B1 (en) 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
US8683455B1 (en) 2011-01-12 2014-03-25 Google Inc. Method and system for optimizing an executable program by selectively merging identical program entities
US8689200B1 (en) * 2011-01-12 2014-04-01 Google Inc. Method and system for optimizing an executable program by generating special operations for identical program entities
US8850413B2 (en) * 2012-05-31 2014-09-30 Oracle International Corporation Compiling multi-threaded applications for targeted criticalities
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9052956B2 (en) * 2012-08-30 2015-06-09 Hewlett-Packard Development Company, L.P. Selecting execution environments
US9110737B1 (en) 2014-05-30 2015-08-18 Semmle Limited Extracting source code
US10162817B2 (en) * 2016-06-14 2018-12-25 Microsoft Technology Licensing, Llc Computer messaging bot creation
US10360906B2 (en) 2016-06-14 2019-07-23 Microsoft Technology Licensing, Llc Computer proxy messaging bot
US10810007B2 (en) 2017-12-29 2020-10-20 Microsoft Technology Licensing, Llc Classifying system-generated code

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6184740A (ja) * 1984-10-03 1986-04-30 Hitachi Ltd 汎用オブジエクトコ−ド生成方式
US4791558A (en) * 1987-02-13 1988-12-13 International Business Machines Corporation System and method for generating an object module in a first format and then converting the first format into a format which is loadable into a selected computer
US5339422A (en) * 1991-03-07 1994-08-16 Digital Equipment Corporation System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment
KR930020263A (ko) * 1992-03-06 1993-10-19 윌리암 에이취. 뉴콤 프로그램 로딩 및 기억방법
US5446899A (en) * 1992-06-26 1995-08-29 Digital Equipment Corporation Hint generation in smart recompilation
JPH08501167A (ja) * 1992-09-22 1996-02-06 シーメンス アクチエンゲゼルシヤフト 並列コンピュータシステムにおけるアプリケーションプログラムの処理方法
US5546586A (en) * 1993-05-06 1996-08-13 Apple Computer, Inc. Method and apparatus for vectorizing the contents of a read only memory device without modifying underlying source code
US5432937A (en) * 1993-08-20 1995-07-11 Next Computer, Inc. Method and apparatus for architecture independent executable files
US5634114A (en) * 1993-11-18 1997-05-27 Intel Corporation Dynamic link library version negotiation
US5675803A (en) * 1994-01-28 1997-10-07 Sun Microsystems, Inc. Method and apparatus for a fast debugger fix and continue operation
US5701442A (en) * 1995-09-19 1997-12-23 Intel Corporation Method of modifying an instruction set architecture of a computer processor to maintain backward compatibility
US5774728A (en) * 1995-12-27 1998-06-30 International Business Machines Corporation Method and system for compiling sections of a computer program for multiple execution environments
US5732275A (en) * 1996-01-11 1998-03-24 Apple Computer, Inc. Method and apparatus for managing and automatically updating software programs

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8221010B2 (en) 2000-09-11 2012-07-17 Zipher Limited Tape drive and printing apparatus
US8221009B2 (en) 2000-09-11 2012-07-17 Zipher Limited Tape drive and printing apparatus
US8328441B2 (en) 2000-09-11 2012-12-11 Videojet Technologies (Nottingham) Limited Tape drive and printing apparatus
US8591127B2 (en) 2000-09-11 2013-11-26 Videojet Technologies (Nottingham) Limited Tape drive and printing apparatus
KR20140060299A (ko) * 2011-09-07 2014-05-19 마이크로소프트 코포레이션 변형 컨텍스트-인식 데이터 소스 관리

Also Published As

Publication number Publication date
EP0892343A2 (en) 1999-01-20
US5920721A (en) 1999-07-06

Similar Documents

Publication Publication Date Title
JPH1115674A (ja) 異なるランタイム環境において実行するための実行可能プログラムにおいて機能的に類似したコードシーケンスを発生するコンパイラ
JPH1115673A (ja) 異なるランタイム環境において実行するための実行可能プログラムにおけるコードシーケンスを機能的に類似したコードシーケンスと条件付きで置き換えるローダ
US7533246B2 (en) Application program execution enhancing instruction set generation for coprocessor and code conversion with marking for function call translation
Kornau Return oriented programming for the ARM architecture
JP3786644B2 (ja) バイトコンパイルされたJava(R)コードを実行するためのマイクロプロセッサ
JP3602857B2 (ja) 多機種対応型情報処理システム、および、方法
US5724590A (en) Technique for executing translated software
TWI314701B (en) Data processing apparatus and method with predication instruction function capable of adding conditional behavior to associated programs, and computer program product recording related instructions
US8015558B1 (en) System, method and computer program product for on-the-fly patching of executable code
US7437542B2 (en) Identifying and processing essential and non-essential code separately
US6230259B1 (en) Transparent extended state save
US20120304160A1 (en) Systems and Methods for Run-Time Interception of Software Methods
KR20010030587A (ko) 데이터 처리장치
CN111399990B (zh) 解释执行智能合约指令的方法及装置
JP2000112772A (ja) 命令セット内の命令に応答してプロセスを実行するデ―タ処理システムおよびその命令処理方法
JPH10320214A (ja) コンパイルシステム及びコンピュータプログラム製品
JP2008536240A (ja) レジスタファイルとしてのオペランドスタックへの、ネイティブな命令を用いた、マイクロプロセッサのアクセス
JP7105699B2 (ja) プログラム・ループ制御
JP6908601B2 (ja) ベクトルロード命令
KR101292476B1 (ko) 동적 확장가능 프로세서들에 대한 소프트웨어 지원을 위한컴퓨터 운영 체제, 재작성기 도구, 및 애플리케이션 효율성개선 방법
TW202416123A (zh) 硬體處理器及處理器
US6871173B1 (en) Method and apparatus for handling masked exceptions in an instruction interpreter
KR100308512B1 (ko) 편집 기능을 위한 전문 밀리코드 지시
JP2001519955A (ja) 先進のプロセッサのための変換メモリ保護装置
JP5051452B2 (ja) 情報処理装置および命令実行方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

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 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070116