JP3508775B2 - 一つのプログラムの中でまたは1つのプロセッサ環境に於て、夫々のオブジェクトコードタイプが異なる複数のプログラムセグメントを実行するための装置 - Google Patents

一つのプログラムの中でまたは1つのプロセッサ環境に於て、夫々のオブジェクトコードタイプが異なる複数のプログラムセグメントを実行するための装置

Info

Publication number
JP3508775B2
JP3508775B2 JP51525494A JP51525494A JP3508775B2 JP 3508775 B2 JP3508775 B2 JP 3508775B2 JP 51525494 A JP51525494 A JP 51525494A JP 51525494 A JP51525494 A JP 51525494A JP 3508775 B2 JP3508775 B2 JP 3508775B2
Authority
JP
Japan
Prior art keywords
mode
routine
area
descriptor
execution
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.)
Expired - Lifetime
Application number
JP51525494A
Other languages
English (en)
Other versions
JPH08506195A (ja
Inventor
ディー. ムーレイ、ジーンチャールス
アール. パレント、シーン
ケー. ジョーンズ、ブルース
ダブリュ. リリック、アラン
エル. エイツ、エリック
Original Assignee
アップル コンピュータ インコーポレイテッド
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 アップル コンピュータ インコーポレイテッド filed Critical アップル コンピュータ インコーポレイテッド
Publication of JPH08506195A publication Critical patent/JPH08506195A/ja
Application granted granted Critical
Publication of JP3508775B2 publication Critical patent/JP3508775B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

【発明の詳細な説明】 発明の分野 この発明はコンピュータシステム、より詳細には、実
行用の単一のプログラム中に、非コンパチブルな複数の
オブジェクトコードを混在させることを可能にするコン
ピュータシステムに関する。
発明の背景 新しいプロセッサ(コンピュータプロセッサ)が開発
されると、それまでのプロセッサでは正しく実行されて
いた従来のアプリケーションやプログラム(以下、「ア
プリケーション」)が、当該新しいプロセッサでは正し
く実行されないことが起こり得る。こうした古い、つま
り新しいプロセッサにとっては非ネイティブなアプリケ
ーションは、一般には新プロセッサで実行するために
「移植」、つまり書き直されるか翻訳される。このアプ
リケーションの移植が実行されるまで、普通は新しいプ
ロセッサの有益な諸特性を利用することができない。ア
プリケーションを移植するのに要求される作業量次第で
は、アプリケーションが新しいプロセッサから受けるこ
とができる利点よりも、その作業量に費やされる時間の
方が大となるおそれもある。
普通、新しいプロセッサを有するコンピュータシステ
ムは、古いプロセッサのために書かれた「古い」アプリ
ケーションを動かすための別個の環境を有している。こ
うした環境は「コンパチビリティ ボックス」と呼ばれ
る。こうしたシステムでは、コンパチビリティボックス
と新しいプロセッサ環境間に、「ネイティブ」環境と呼
ばれるような相互作用は実質的に少しもない。その為に
「古い」アプリケーションは、ネイティブの環境下であ
れば利用可能であった当該改良後の高い処理能力や、そ
の他の有益な諸特性を全く利用することができない。
ある種のコンピュータシステムはエミュレータを有し
ている。このエミュレータは、そのコンピュータシステ
ムにとって非ネイティブなプロセッサ用に記述されたコ
ードの実行を可能にする。典型的には、こうしたエミュ
レータは単一のランタイム環境を前提にしているのであ
り、換言すれば、プログラム手続を呼出し、スタック操
作を実行する規約が、ネイティブコード及び非ネイティ
ブコードつまりエミュレートコードの双方に共通してい
ることを前提にしている。US−A4 812 975は、特有の命
令を展開するためのエミュレータおよびモードスイッチ
ングの仕組みに関するものである。US−A−4 084 235
はエミュレーション装置に関するもので、この装置では
オプションマスクがターゲットシステムの特徴や性質を
定義するようになっている。こうしたエミュレータは典
型的には、出された命令セットを交換するだけであっ
て、異なるルーチン呼出し及びスタック操作規約を有し
ているところの2種の異なるタイプのオブジェクトコー
ドを取り扱う構造にはなっていない。例えば、これらの
エミュレータは、米国モトローラ社の68000のような複
合命令セットコンピュータとか、例えばIBM PowerPC IB
M RISC System/6000のような縮小命令セットコンピュー
タのコードを取り扱うには機能的に不十分であった(68
000は以下「68K」。複合命令セットコンピュータ=CISC
(Complex Instruction Set Computer)。縮小命令セッ
トコンピュータ=RISC(Reduced Instruction Set Comp
uter)(以下「RISC」))。なおPowerPC,IBM RISC Sys
tem/6000は、International Business Machines Corpor
ation,Armonk,N.Y.が登録した商標である。CISC機に関
する背景知識についてはAddison−Wesley Publishing C
o.,1985−1991刊行の「Inside Macintosh」,第1〜6
巻を参照のこと。IBM社のRISC System/6000機に関する
背景知識はIBM Journal of Research and Development,
1990年1月刊行の第34巻,No.1のGregory F.Grohoskiに
よる「Machine organization of the IBM RISC System/
6000 processor」pp.37−58,及びR.R.OehlerとR.D.Grov
esによる「IBM RISC System/6000 processor architect
ure」pp.23−36を参照のこと。IBM社のRISCサブルーチ
ンリンケージ規約に関する背景知識についてはニューヨ
ーク州,アーモンクのInternational Business Machine
s Corporation,1992年9月刊行の「AIX XL FORTRAN Com
piler/6000 User's Guide Version 2.3」第10章及びIBM
Journal of Research of Development,1990年1月刊行
の第34巻,No.1,pp.98−104,Marc A.Auslanderによる「M
anaging programs and libraries in AIX Version 3 fo
r RISC System/6000 processors」参照のこと。なお、A
IXはInternational Business Machines Corporationの
商標である。
68K環境ではプロシージャ(手続)ポインタ[procedu
re pointer]は68Kルーチンそれ自身を指し示すが(ア
ドレスするが)、RISCのようなその他の環境下ではプロ
シージャポインタは、ある構造[structure]、例えば
データ構造とか、その他の情報中にそのルーチンのアド
レスを含む実行可能なコードとかを指し示す。RISC Sys
tem/6000環境では、構造はそのルーチンのエントリーポ
イントのアドレスと、そのルーチンが拘束されるモジュ
ールの内容を示すテーブルのアドレスと、この種ポイン
タを必要とする言語のための環境へのポインタとを有す
る。RISCコードが68Kランタイムモデルに匹敵するよう
構成されていたとすると、RISC命令セットの利点は何も
利用され得ない。
従来のある種コンピュータシステムでは、単一のプロ
セッサ上で、さまざまな呼出し規約をもつ2つ又は3つ
以上のプログラミング言語を実行するために、そのプロ
グラミング言語は使用する都度ベースラインを共通にす
る呼出し規約に変更される。その他の従来システムで
は、プログラミング言語は、他の言語のさまざまな呼出
し規約を明確に取り扱えるように構成されている。
要するに、新しいネイティブプロセッサをサポートす
るだけでなく従来のプロセッサをもエミュレートすると
いうコンピュータシステムは、ある瞬間にはある環境の
みをサポートしているに過ぎない。換言すれば、同時進
行するアプリケーションは同じプロセッサ環境またはモ
ードで実行される。例えば、多数のアプリケーションが
同時に実行されるとき、仮にそうしたアプリケーション
のうちの一つだけが非ネイティブな処理環境用に書かれ
ており、その他の全てのアプリケーションがネイティブ
環境用に設計されていたとしても、それらアプリケーシ
ョン全てが、その一つの非ネイティブなアプリケーショ
ンの為のエミュレート環境下で実行される。したがって
これらアプリケーションの何れも、この新しいネイティ
ブなプロセッサが提供してくれる利点を享受することが
できない。
発明の概要 そこで、あるアプリケーションまたはプログラムがど
んなプロセッサモードでもアクセスできるように、複数
のプロセッサモード間をスイッチングする為の即応型構
造を提供することが本発明の主目的である。
本発明のもう一つの目的は、特定のプロセッサモード
に明示的にアクセスするアプリケーションの為の機構を
提供することにある。
本発明のもう一つの目的は、特定のプログラムセグメ
ントを実行するのに最適なプロセッサモードを決定する
機構を提供することにある。
本発明のもう一つの目的は、複数の環境下で複数のア
プリケーションをほぼ同時にサポートすることにある。
本発明のもう一つの目的は、部分的に複数のプロセッ
サをベースとしているシステムソフトウエアを実行する
ことが出来るコンピュータシステムを実現することにあ
る。
本発明のもう一つの目的は、プログラムコードを変更
することなく、実行中のプログラムを第1のプロセッサ
モードから第2のプロセッサモードへ移行させることを
可能にすることにある。
本発明は、プログラムプロシージャの呼出しやスタッ
ク操作の実行に関し種々の異なる規約を有する夫々のオ
ブジェクトコードタイプ(オブジェクトコード形式)を
切り替えて実行する為の方法及び装置を提供するもので
ある。本発明はまた、単一のオブジェクトコードタイプ
の中の2つまたは3つ以上の異なる呼出し規約をスイッ
チングするのにも使われる。概説すれば、本発明コンピ
ュータシステムは、1又は2以上のコードタイプのため
の命令実行手段と、ルーチン記述子と、スタックスイッ
チフレームと、プロセッサタイプ又はコードタイプをス
イッチングするモードスイッチング機構とを有する。な
お本書では「プロセッサタイプ又はコードタイプ」を単
に「モード」と言う。本発明は、また、ルーチン記述子
の中に、情報を生成し、操作し、セッティングするため
の機構、及び特定のルーチン記述子に関連する情報にア
クセスするための機構を有している場合もある。命令を
実行する手段の構成としては、例えば、1個のCPUと1
個のエミュレータ、複数個のCPU、または複数の動作モ
ードを有する単一のCPUなどがある。命令実行手段は、
さらに、命令を実行するのに使われる関連ソフトウエア
を含む場合もある。
ルーチン記述子は、プログラムセグメント、またはコ
ードの一部分の特徴、例えばそのプロセッサやコードの
タイプ(形式)及び呼出し規約などを記述するものであ
る。あるいは、ルーチン記述子は、実質的に同一な機能
を有するが、プロセッサタイプまたはコードタイプ及び
呼出し規約が異なる複数のプログラムセグメントについ
て記述する場合もある。なお本明細書では「プロセッサ
環境」という用語をプロセッサ及び/又はプログラムの
環境を示すものとして用いる。ルーチン記述子は、その
他の情報の中に、違法(不正)命令や違法記憶アドレス
のような具体的な所定値を設定するための「ミクストモ
ード[mixed mode]」域も有している。ミクストモード
域の値は、命令実行手段やそのとき実行されているスイ
ッチングオペレーションのタイプ如何により異なる。さ
らにルーチン記述子は「プロシージャ情報域」も有して
いる。この情報域は、プログラムセグメントを呼出し、
適切なスタック操作を行うための規約を呈示する。ミク
ストモード域には、何れのモードにも装備されていな
い、つまり違法な、命令を示す値が設定されていてもよ
い。例えば、命令実行手段が1個のCPUと1個のエミュ
レータである場合、ミクストモード域はそのエミュレー
タのみに装備された命令に対して設定されていれば良
く、その他のランタイム環境またはモードに対応してい
る必要はない。エミュレータがこの命令に遭遇すると、
制御はモードスイッチング機構に渡される。
同様に命令実行手段が複数のCPUであった場合、ミク
ストモード域は少なくとも1個のCPUには装備されてい
ない命令に対して設定される。
しかし、ミクストモード域が合法命令(適正命令)
[legal instruction]に向けられる場合もある。例え
ば、単一のコードタイプの下で、2または3つ以上の呼
出し規約をスイッチングするために本発明を実施したと
きは、「ミクストモード」域は、そのコードタイプの合
法命令、例えば分岐命令またはトラップ命令のようなそ
のコードタイプの合法命令に対して設定される。これに
よりそのような命令の実行がモードスイッチング動作の
遂行を可能にするプログラムセグメントを呼び出す。
ルーチンが別のスタックモデルをもつルーチンを呼び
出すとき、そのモードスイッチング機構はそのスタック
タイプをもう一方のスタックタイプへ変更するためにス
タックスイッチフレームを使う。適切なスタックスイッ
チフレームが呼出側のスタックフレームと被呼出側のス
タックフレームの間にあるスタックに配置される。
本発明の1実施例のコンピュータシステムにおいて
は、異なるオブジェクトコードタイプの夫々のプログラ
ムセグメント、或いは異なるプロセッサ用に設計された
夫々のアプリケーションは、単一のプロセッサで実行す
ることができる。これにより各プログラムセグメントは
そのコード及びプロセッサタイプに適したモードで実行
される。したがってネイティブなコードはネイティブプ
ロセッサの進歩した特性の恩恵を享受し、同時に、非ネ
イティブなコードはほぼ通常通りに作動し、ネイティブ
コードの存在を知らなくても、あるいはコード修正をし
なくても、ネイティブコードからの明確な恩恵を受ける
ことができる。
本発明のもう一つの利点は、プログラムセグメントま
たはコードセグメントが複数のコードタイプの何れであ
るかの情報をネイティブなアプリケーションが知得して
いたとしても、該アプリケーションが、その非ネイティ
ブなアプリケーションシステムソフトウエア又はプログ
ラムセグメントの正確なコードタイプを知得することな
しに、そのとき存在する非ネイティブなアプリケーショ
ンシステムのソフトウエア又はプログラムセグメントの
特性を利用することができることである。しかも非ネイ
ティブなアプリケーション又はシステムソフトウエアは
何れも、それにアクセスするために、ネイティブなアプ
リケーション向けに変更される必要はない。
本発明はまた、第1タイプのコードが第2タイプのコ
ードを実行できるようにする。あるいは実行されている
実際のコードタイプを先行して知得していなくても第1
タイプのコードが実行できるようにする。これは言わ
ば、実質的に何れのタイプのコードでも、他のコードの
コードタイプを知得することなしに当該他のコードを実
行することが可能であることを意味する。
図面の簡単な説明 本発明に関する上記の利点および上記していない利点
については、添付の図面を参照して行う以下の説明から
明らかになる。
図1は本発明に従ってミクストモードを実行するのに
適した各構成部分を有するコンピュータシステムを示
す。
図2はルーチン記述子を示す。
図3A〜図3Fは、プロシージャ情報域の内容を示す。
図4はレジスタパラメータ域の内容を示す。
図5A〜図5Cはスタックスイッチフレームのさまざまな
構成を示す。
図6A,図6Bは68KモードからRISCモードへスイッチング
するときに関係するステップを示す。
図6C、図6DはRISCモードから68Kモードへスイッチン
グするときに関係するステップを示す。
図7は多数の呼出し規約があるルーチンを取り扱うの
に好ましい実施例を示す。
実施例の詳細な説明 図1において、10はコンピュータの全体であり、少な
くとも一つの中央処理装置(以下、「CPU」)12と、ス
タック14と、そして記憶装置16とを有する。スタック14
は記憶装置16内に配置されていることもある。コンピュ
ータ10は1個または2個以上のレジスタ17を有すること
もある。記憶装置16はコード18の複数のコードセグメン
ト若しくはコードの一部を有している。図面上、記憶装
置16は第1のコードセグメント18a、第2のコードセグ
メント18b、及び第3のコードセグメント18cを保持して
いる。記憶装置16は又、ルーチン記述子20を保持してい
る。そして好ましくは、コンピュータ10が複数のCPU12
を備えており、或いはコンピュータ10が複数個のモード
で作動するCPU1個を備えているとき以外は、エミュレー
タ21をも備える。
ルーチン記述子 図2に示すように、ルーチン記述子20は好ましくはミ
クストモード域28と選択域29とを有している。又、ルー
チン記述子20はプロシージャ情報域30と、1つ又は2つ
以上のペア31を有するリスト27とを持っている。これら
各ペア31はコードタイプ域32とプロシージャポインタ33
を有している。さらにルーチン記述子20はインジケータ
域34、バージョン域35及びカスタムパラメータプロシー
ジャ域36をも有している。図2はルーチン記述子20の具
体例を簡単に図示したに過ぎない。ルーチン記述子20内
のこれら諸域の正確な配列はさまざまに変化し得る。
ミクストモード域(ときとして「第1域」と呼ぶ)28
は、プロセッサモードを識別する。アプリケーションが
ネイティブのものであるとき、またはネイティブコード
を実行する非ネイティブのものであるとき、ミクストモ
ード28はある命令を表わすミクストモードの値に設定さ
れる。この値はエミュレータで実行される命令を示すも
のか、または少なくとも1つのプロセッサモードでは違
法とされる命令を示すものである。例えばこの値は不使
用の命令であることもあり、不使用のA−Trapあるいは
不使用のF−line命令であることもある。別言すれば、
非ネイティブモードに於て合法でない命令の値なら何で
もよい。
あるいはミクストモード域28は、ある値、即ちその値
によってはそのプログラムまたはコードセグメントのコ
ードタイプが複数ある中の何れであるかをネイティブな
アプリケーションが知得できないようなある値に設定し
てもよい。ミクストモード域28の前半はオブトルーシブ
でない[unobutrusive]RISC命令の値に設定され、後半
はRISCの違法な命令または分岐であってもよい。命令は
モードスイッチング機構その他の機構、例えばルーチン
記述子を生成したり動かしたりするような機構を呼び出
すのに使われる。
選択域29(ときとして「第3域」とも呼ぶ)は、ある
値を有している。この値は実行されるべきモードスイッ
チングオペレーションのタイプを示す。選択域29は本発
明の特定の実施例に特有のサービスまたは機能を定義す
ることができる。
好ましくは選択域29は、「ロード後実行」、「実
行」、または「リターン」の各オペレーションを表わす
値を保持する。ロード後実行のオペレーションは、非ネ
イティブコードタイプのコードがその非ネイティブなコ
ードタイプに適合した方法でネイティブコードタイプの
プログラムセグメントをロードすることを可能にする。
次に、選択域29がロード後実行オペレーションを指定す
ると、モードスイッチング機構が、リロケーション、ラ
ンタイムバインディング、初期化などのネイティブアプ
リケーションのコードタイプに特有のオペレーションを
行う。
プロシージャ情報域(ときとして「第4域」と呼ぶ)
30は、ルーチン記述子その他後述のパラメータによって
示されるルーチンが使う呼出し規約やパラメータに関す
る情報を提供する。
リスト27は、ルーチン記述子が、実質的に同一機能を
実現するもののそのプロセッサ又はコードタイプ及び呼
出し規約が異なる複数のプログラムセグメントを記述す
ることを可能にする。場合によっては、現在のランタイ
ム又はプロセッサ環境にとって最適なプログラムやコー
ドセグメントを選択できるように、2つ又は3つ以上の
種類のコードタイプで書かれた同一機能を実現するプロ
グラム又はコードセグメントを持つことが望ましい。実
行速度、あるいは利用可能な特性やプロセッサその他の
ファクタは、どのプログラムまたはコードセグメントタ
イプを実行するかを決定するとき考慮される。
リスト27がペア31を一つ以上持っていてルーチン記述
子が呼び出されたとき、好ましいコードタイプが複数の
ペア31中のコードタイプ域32から選択される。この好ま
しいとされるコードタイプは具体的なコンピュータシス
テム10の利点を最大に利用するようなコードタイプであ
る。こうしてルーチン記述子とそれに付随するプログラ
ムセグメントは、本発明のさまざまな実施例である複数
のコンピュータシステムに於て修正なしで呼び出すこと
ができる。例えば、二重68K/RISCルーチン記述子がルー
チン記述子20であって、その中でリスト27は68Kを表示
しているコードタイプ域を持つペア31とRISCを表示して
いるコードタイプ域を持つもう一つのペア31とを含み、
この二重68K/RISCルーチン記述子が、68Kだけしかない
コンピュータ、又は68Kエミュレータを有しているRISC
コンピュータの何れでも実行される。68Kだけのコンピ
ュータでは、68Kコードタイプが選択され、RISCコンピ
ュータのときは、そのより良いパフォーマンスその他の
利点に合わせてRISCコードタイプが選択される。選択基
準はさまざまあり得るが、好ましくは選択はパフォーマ
ンスおよびさまざまなコードタイプの利用可能性に基づ
き行われるのがよい。
コードタイプ域(ときとして「第1セグメント」と呼
ぶ)32は、コードまたはプロセッサのタイプを表わし、
その中にルーチンが書き込まれる。
プロシージャポインタ33(ときとして「第2セグメン
ト」と呼ぶ)は、そのルーチンの自然のコードタイプに
適した方法でルーチン記述子20によって記述されている
ルーチンを指し示す。
ルーチン記述子インジケータ域(ときとして「第5
域」とも呼ぶ)34は、メモリ16のその部分をルーチン記
述子と同一視する[identify]。
バージョン域35(ときとして「第6域」とも呼ぶ)
は、ルーチン記述子のバージョンを示す。これはルーチ
ン記述子の構造が新しいバージョンに変更された場合に
有益である。
カスタムパラメータプロシージャ域(ときとして「第
7域」とも呼ぶ)36は、ルーチン記述子が生成されたと
き付与されるプロシージャを指し示すのに使われる。こ
のプロシージャは呼出側ルーチンのコードタイプと被呼
出側ルーチンのコードタイプ間の遷移[transition]を
如何に実行するかを知っている。カスタムパラメータプ
ロシージャ域36は、典型的にはプロシージャ情報域によ
っては容易に定義できない特殊なケースを取り扱うのに
用いられる。しかしルーチン記述子20はカスタムパラメ
ータプロシージャ域36を有していなくてもよいのであっ
て、プロシージャ情報域30はそうした特殊なケースを取
り扱うのに使われてもよく、2つのオブジェクトコード
タイプ間の遷移のプロシージャを間接的に明らかにする
[identify]のに使用されても良い。
プロシージャ情報域30の実際の内容は呼出されるルー
チンによって使われる呼出し規約次第で決められる。各
場合において、プロシージャ情報域30(図3A)は、呼出
し規約域40を有し、この規約域40は、例えばパスカル及
びCのスタックベースのルーチン、レジスタベースのル
ーチン、スタックベースのディスパッチルーチン、そし
てレジスタベースのディスパッチルーチンによって使わ
れる呼出し規約を表わす。
呼出し規約は、一つのソフトウエアルーチンを援用す
るのに使われるメカニズムである。「コンピュータ操作
に関するIBM辞典(IBM Dictionary of Computing)」
(第9版、1991年)は、呼出し規約を「データ交換のた
めのルーチン及びサブルーチンに関する具体的方法」と
定義している。「援用するメカニズム」という用語は、
呼出し規約という言葉と差し替え自在に使うことがで
き、あるいは場合によっては、呼出し規約プラス実際の
数字やパラメータのフォーマットに関する追加的情報
[knowledge]で構成されている。その違いは、呼出し
規約がパラメータのどんな組合せにも適用できる一般的
メカニズムしか記述しないのに対して、援用メカニズム
はそのパラメータ、特に数字とサイズに関する情報を有
していることである。
例えばパスカルとCのスタックベースのルーチンにつ
き、図3Bに示されるように、プロシージャ情報域30は、
ルーチンにより戻ってきたバイト数を示す結果サイズ域
42と、各パラメータのサイズを記述しているパラメータ
サイズ域43とを有している。このパラメータサイズ域43
はゼロ値で終了するパラメータサイズ値のリストであ
る。図3Cは、レジスタベースのルーチンのためにプロシ
ージャ情報域30が、ネイティブインターフェイス内のパ
ラメータと同じ順番にレジスタをリストするレジスタパ
ラメータ域44を有していることを示している。レジスタ
パラメータ域44は1個または2個以上の入力パラメータ
及び出力パラメータを有している。例えば、レジスタパ
ラメータ域44は2個の出力パラメータとそれに従う4個
の入力パラメータを有するなどである。
図3Dは、スタックベースのディスパッチルーチン、す
なわち単一のエントリーポイントを経由してルーチンデ
ィスパッチャ(図示せず)にアクセスできるルーチンを
示す。プロシージャ情報域30は、そのルーチンによって
戻ってくるバイト数を示す結果サイズ域46、セレクタの
サイズを示すセレクタサイズ域47、及び各パラメータの
サイズを記述しパラメータサイズ域43と同一のフォーマ
ットを有しているパラメータサイズ域48を有する。
図3Eに示すように、レジスタベースのディスパッチル
ーチン、すなわちパラメータがレジスタを経由し、セレ
クタがスタックを経由するルーチンでは、プロシージャ
情報域30は、スタック上のセレクタサイズを示すセレク
タサイズ域50、及びレジスタパラメータ域44と同じフォ
ーマット中のパラメータを記述するレジスタパラメータ
域51も有している(図3C)。
図3Fは上記以外の場合を取り扱うためのプロシージャ
情報域30を示す。プロシージャ情報域30は、呼出し規約
域40とユーザ定義可能域52を有する。ユーザ定義可能域
52はルーチン記述子20によって記述されるルーチンに適
した方法で構成される。
図4に示すように、各パラメータのためにレジスタパ
ラメータ域44は、レジスタサブ域53とパラメータサイズ
サブ域54を有している。
「古」すなわち非ネイティブコードタイプのプログラ
ムまたはコードセグメントがそれらと連動するルーチン
記述子の存否を実行する。しかし「新」すなわち「ネイ
ティブ」コードタイプのプログラムまたはコードセグメ
ントは普通、それと関係するルーチン記述子を有してい
る。
ルーチン記述子はプログラムセグメントが複数のコー
ドタイプのいずれの場合でも有用である。プログラムセ
グメントが具体的なあるコードタイプであってその他の
コードタイプではないことが知られているときは、サブ
ルーチンまたはライブラリコールがミクストモード域28
を使わずに直接にモードスイッチング機構にアクセスす
るために使われる。
アプリケーションインターフェイス ルーチン記述子は、プログラムがオブジェクトコード
にコンパイルされ、オブジェクトコードセグメントをま
とめて結合し実行可能なプログラムを形成するランタイ
ムリンカーによって処理[resolve]されるとき、静的
に生成することができる。しかしそれ以外のときは、ル
ーチン記述子を動的に割り当ててリリースし、ルーチン
記述子中の情報にアクセスし、そしてルーチン記述子中
の情報をセットするか変更することが好ましい。
したがって好ましくは、インターフェイスはルーチン
記述子を生成しリリースする為のアプリケーション用手
段を提供する。例えばルーチン記述子を作り出す命令は
好ましくは次のパラメータを受けるのがよい。すなわ
ち、ルーチンのポインタ、プロシージャタイプの識別情
報[identification]、プロシージャ情報、そして追加
的には、カスタムパラメータプロシージャポインタ、現
時点のモードを表わすモードインジケータ、又は追加的
にはそれが現時点のモードと違っていたら適当なプロセ
ッサモード、及びルーチン記述子又はそれへのポインタ
への戻し番地[returns]。Cプログラミング言語にお
いてのこの命令の実施は次のようになるであろう。
RoutineDescriptor=NewRoutineDescriptor(ProcPtr
theProc,ProcInfoType procInfo,CodeType executionM
ode) 同様に、ルーチン記述子をリリースし、それに割り当
てられた記憶装置を解放せよ、との命令は、ルーチン記
述子またはそれのポインタを受ける。例えばこの命令は
次のようにものである。
DisposeRoutineDescriptor(RoutineDescriptor *th
eRoutine) インターフェイスはまたアプリケーションがルーチン
記述子に関する情報にアクセスすることを可能にする。
例えば特定のルーチンにつきそれが書かれているコード
のタイプ、それに関連するプロシージャ情報、あるいは
それに関連するカスタムパラメータプロシージャなどを
見つけ出す命令がある。例えばGetCodeType(RoutineDe
scriptor *theRoutine)が、コードのタイプをアクセ
スするのに使われ、そのコードの中に記述されたルーチ
ンが書かれている。
さらにインターフェイスはアプリケーションがルーチ
ン記述子中の情報を変更するのを可能にする。例えば命
令はプロシージャポインタが変更されること、または、
プロシージャ情報域が設定されることを可能にする。OS
Err=SetProcInfo(RoutineDescriptor *theRoutine,P
rocInfoType procInfo)のような命令が、ルーチン記述
子のプロシージャ情報域を所定のprocInfoに変更する。
68Kのような「古い」すなわち非ネイティブなコード
タイプのプログラムセグメントまたはコードセグメント
は、それがそのネイティブなコードを呼出していること
を知らずにルーチン記述子を介してネイティブなプログ
ラムセグメントまたはコードセグメントを呼出し得る。
68Kのこのような場合は、ルーチン記述子は、恰もそれ
が68Kプロシージャポインタであるかのように直接に呼
出され、命令に渡されたパラメータはルーチンに渡され
る。もしルーチンが68Kならば、そのルーチン記述子は
実際に68Kプロシージャポインタであって、それが指し
示すプロシージャが呼出される。もしルーチンがネイテ
ィブならば、あるいはそれが呼出側のルーチンの予定し
ている呼出し規約とは違う68Kルーチンならば、そのル
ーチン記述子はネイティブまたは68Kルーチン記述子で
あり、それはモードスイッチング機構を起動するミクス
トモード値を有するミクストモード域28からスタートす
る。
必須的に、ミクストモード域は有しており、非ネイテ
ィブコードタイプのコードとして扱われるので、ルーチ
ン記述子20へのリファレンスと、68Kのような非ネイテ
ィブコードタイプのあるコードまたはプログラムセグメ
ントへの直接のリファレンスとは相互交換可能である。
非ネイティブコードタイプ環境では、ルーチン記述子は
実行されるコードセグメントまたはプログラムセグメン
トとして扱われるが、新しい、即ちネイティブな、コー
ドタイプ環境では、ルーチン記述子はデータとして扱わ
れ、それにアクセスする手段によって利用される。この
ように、非ネイティブコードへのリファレンスはルーチ
ン記述子にアクセスするための手段と置換することがで
きる。
好ましくはアプリケーションインターフェイスはアプ
リケーションまたはプログラムセグメントがルーチン記
述子を呼出すことを可能にする。この命令は所与のルー
チン記述子によって記述されたものとしてルーチンを呼
出し、何らかの結果を返す。この命令の目的はアプリケ
ーションまたはプログラムセグメントをして何らかのコ
ードタイプのルーチンを呼出すことを可能にすることで
ある。例えば、このメカニズムはネイティブコードがモ
ードスイッチング機構にアクセスすることを可能にす
る。本発明の第1実施例では、ルーチン記述子を呼出す
命令は、ルーチン記述子、プロシージャ情報、及びパラ
メータのリストを受け取る。例えば、CallRoutineDescr
iptor(RoutineDescriptor *theRoutine,ProcInfoType
procInfo,shortnumParams,...)が、所与のルーチン記
述子によって記述されたルーチンを呼出すのに使うこと
ができる。
しかしある種のRISC環境では、ルーチン呼出しがされ
たときかなりな量のパラメータ移動[shifting]が起こ
り得る。CallRoutineDescriptor命令の実行中に、その
命令の各パラメータは別個に設けられたレジスタ中に置
かれ、ルーチン記述子によって記述されているルーチン
のためにパラメータをトランスフォームするのにプロシ
ージャ情報パラメータが使われる。ルーチン記述子によ
って記述されているルーチンのための各パラメータは、
次に、また別のレジスタに置かれる。しかし、レジス
タ、即ちCallRoutineDescriptorを呼出すときにルーチ
ン記述子によって記述されるルーチンのためのパラメー
タがそこに置かれるレジスタと、レジスタ、即ちそのル
ーチンがそのパラメータを見付け出すことを予定されて
いるレジスタとは相違することがあり得る。このよう
に、そのルーチンを実行するには、これらパラメータは
正しいレジスタ中に移動されていなければならない。こ
のパラメータ移動は時間がかかるものであり、特にモー
ド変更が実際に起こらないときは不必要、不具合なもの
である。
したがって好ましい実施例では、そうしたパラメータ
を記述している情報はルーチンが呼出される前はカプセ
ルに封じ込められたものとしている。例えば、これを達
成する命令は次のようなものである。P=SetUpMixedMo
de(RoutineDescriptor *theRoutine,ProInfoType pro
cInfo,&parameter_block)。このSetUpMixedMode命令
で始まるプログラムまたはコードセグメントと、そのル
ーチン記述子で同定されるプログラムまたはコードセグ
メントとが同じコードタイプのときは、SetUpMixedMode
命令はそのルーチン記述子によって同定されたプログラ
ムまたはコードセグメントに有効なポインタを返す。Se
tUpMixedMode命令を出したプログラムまたはコードセグ
メントは次に、そのルーチン記述子によって同定された
ルーチン、例えば(*P)(parameter1,parameter
2,...)を直接呼出し、これによってパラメータの移動
量を減らしパフォーマンス速度を速める。
SetUpMixedMode命令を開始するプログラムまたはコー
ドセグメントがネイティブなコードタイプであり、その
ルーチン記述子によって同定されるプログラムまたはコ
ードセグメントが非ネイティブなコードタイプであると
きは、SetUpMixedMode命令はポインタをルーチンに戻
す。これによりこのルーチンは呼出された際&paramete
r_blockパラメータで同定されたパラメータブロックの
ポインタを見つけることができる。基本的にはパラメー
タブロックとは利用可能なメモリのブロックである。ル
ーチン記述子及びSetUpMixedMode命令のパラメータとし
て渡されたプロシージャ情報とはパラメータブロック中
にストアされる。SetUpMixedMode命令を開始するプログ
ラムまたはコードセグメントは、その後ルーチンを実行
する。
スタックスイッチフレーム 図5Aは、スタックスイッチフレーム60aを示す。この
スタックスイッチフレーム60aはさまざまなスタックモ
デルと呼出し規約を有する異なる2つのプログラムセグ
メント間の遷移[transition]を可能にする。このスタ
ックスイッチフレーム60aは、異なる2つのスタック規
約間に遷移域を提供することによって異なる2つのタイ
プのスタックフレームが1つのスタックポインタ58を有
する単一のスタックモデル上に共存することを可能にす
る。
あるプログラムセグメント(呼出側)が別のプログラ
ムセグメント(被呼出側)を呼出し、被呼出側が呼出側
とは違うスタックモデルまたは呼出し規約を使うとき
は、呼出側のスタックフレーム61と被呼出側のスタック
フレーム62との間に位置するスタック14にスタックスイ
ッチフレーム60aが置かれる。呼出側のスタックフレー
ム61がそのコードまたはプロセスタイプに適したスタッ
クフォーマットになっている間、被呼出側のスタックフ
レーム62は、その自分のコードまたはプロセスタイプに
適したスタックフォーマットになっている。
スタックスイッチフレーム60aは、第1セグメント63
と、第2セグメント64と、第3セグメント65とを有す
る。第1セグメント63は呼出側のスタックフレーム61を
リファレンスする情報を有し、これによって被呼出側の
コードまたはプログラムセグメントが実行終了したとき
即座に制御を呼出側に戻すことができる。第2セグメン
ト64は呼出側のフォーマットから被呼出側のフォーマッ
トへ変更するパラメータを備える。そして第3セグメン
ト65は、被呼出側が所望するフォーマットで或いは取扱
い可能な言語でスタックスイッチフレーム60aを構成す
るのに適した内容を有する。
図5Bは、68KルーチンがネイティブなRISCルーチンを
呼出すとき使われるスタックスイッチフレーム60bを示
す。スタック横に記された矢印は、スタックフレームが
スタックに追加されていくにつれ増大していくスタック
の増大方向を示している。スタックスイッチフレーム60
bは、好ましくは(68Kパラメータから派生する)68K入
力パラメータ66、広域変数[gloval variables]用の内
容表(“TOC"[table of contents])のポインタ67、
及び前記スタックフレームを再言及するポインタ68を有
している。スタックスイッチフレームであることを示す
為、ポインタ68中のロービッド[low bit]が1に設定
されている。スタックスイッチフレーム60bは、セーブ
レジスタ領域69も有している。これにより被呼出側ルー
チンが非揮発性レジスタ値を保存することができる。
図5Cは、RISCルーチンが68Kルーチンを呼出すとき使
われるスタックスイッチフレーム60cを示す。スタック
スイッチフレーム60cは、インジケータ70、RISCレジス
タセーブ領域72、セーブされたプロシージャ情報74、ル
ーチン記述子領域76、68Kレジスタセーブ領域78、68Kの
結果スペース[result space]80、68Kのパラメータ8
2、及びリターンアドレス84を有している。インジケー
タ70は、フレームポインタにとって非有効な値、つまり
0、−1または奇数値にセットされる。RISCレジスタセ
ーブ領域72は、モードスイッチが作動するたびにRISCの
非揮発性レジスタをスタックにプッシュするのに使われ
る。ルーチン記述子領域76は、好ましくは、ミクストモ
ード域28及び選択域29(図2)を有している。68Kの結
果スペース80及び68Kパラメータ82は、68K被呼出側の呼
出し規約に依存して、必要なときにスタック14上にプッ
シュされる。68Kパラメータ82はRISC入力パラメータか
ら派生し変換される。リターンアドレス84は、68Kコー
ドが実行を完了したとき呼出されるルーチンのアドレス
を含んでいる。
モードスイッチング機構 使用に当たっては、あるルーチンが異なるスタックモ
デルを持つ別のルーチンを呼出すときは、呼出側はその
スタックフレームをスタック14上にプッシュする[the
caller pusshes its stack frame on the stack 14]。
するとモードスイッチング機構がスタック14上のスタッ
クスイッチフレームをプッシュする。するとスタックポ
インタ58がスタックスイッチフレームの底[bottom]を
指すようにセットされる。もしそれがスタックスイッチ
フレーム60cなら、68Kスタックポインタがスタックスイ
ッチフレームの底をも指すようにセットされる。
スタックスイッチフレーム60bは、スタックポインタ5
8をポインタ68の値にセットし、レジスタ17のポインタ6
8によりリファレンスされた被呼出側のスタック中のロ
ケーションに記憶されたリターンアドレスを記憶するこ
とにより、スタック14から解放される。スタックスイッ
チフレーム60cは、セーブされた非揮発性レジスタを復
元し、スタックポインタをこれに従ってリセットするこ
とにより解放される。
スタック14は、スタック中にスタックスイッチフレー
ム60bまたは60cがあったとしても、フレームからフレー
ムへとトラバースすることができる。スタックスイッチ
フレーム60bにとって、ポインタ68のロービットが1に
セットされていたら、それはスタックスイッチフレーム
であって、そのポインタ68中の残りのビットは被呼出側
のスタックフレームポインタを指していることになる。
スタックスイッチフレーム60cにとって、インジケータ7
0がフレームポインタに対して有効でない同じ値になっ
ていたなら、それはスイッチフレームであることにな
る。
使用に当たっては、コードが実行されルーチンまたは
ファンクション呼出しが実行されるときは、その呼出し
に関係するポインタは68Kコードまたはルーチン記述子
を指し示す。モードスイッチが作動するか否かを決定す
るのには、ルーチン記述子中のコードタイプ域が使われ
る。図6A〜図6Dは68KモードとPowerPC RISCモード間を
スイッチングするモードスイッチング機構について示
す。図6A及び図6Bは68KモードからRISCモードへスイッ
チングするときに関与するステップについて示し、図6C
及び図6DはRISCモードから68Kモードへスイッチングす
るときに関与するステップについて示す。
図6A、図6Bに示されるように、ミクストモード域28が
ミクストモード値に等しいか、或いはモードスイッチが
それ以外のものを表わしているときは、それが有効なル
ーチン記述子であるかどうかを確認するためルーチン記
述子が検査される。もしそれが有効なら、どちらのオペ
レーションが行われるべきかをみるため選択域が検査さ
れる。
もしそれが実行オペレーションなら、レジスタベース
のルーチンか、スタックベースのルーチンかを判断する
ためプロシージャ情報域が解釈される。もしそれがレジ
スタベースのルーチンなら、スタックスイッチフレーム
が立てられる。もしRISCルーチンがレジスタを修飾する
か、その中の結果をリターンするなら、スタックスイッ
チフレーム上の予約領域に68Kレジスタからパラメータ
を移すことによってスイッチフレームがセットされる。
次に、いずれの場合も、パラメータがRISCレジスタに移
される。
もしそれがスタックベースのルーチンなら、プロシー
ジャ情報域によって定義されたパラメータ全てが68Kス
タックから取り払われ[taken off the 68K stack]、R
ISCレジスタ中におかれる。それからスタックスイッチ
フレームが立てられる。
図6Bに示されるように、それがスタックベースのルー
チンであろうとレジスタベースのルーチンであろうと、
ルーチン記述子からのターゲットアドレスはRISCコード
へジャンプするために使われる。そのコードを実行後、
レジスタベースかスタックベースかをみるためルーチン
が検査される。もしレジスタベースなら、スタックスイ
ッチフレームから68Kレジスタに出力パラメータを戻
す。しかし若しスタックベースなら、リターン値をコピ
ーし、もし少しでもプロシージャ情報域に何かが存在す
るなら、それをRISCレジスタから68Kスタックへ戻す。
いずれの場合も、その後、スタックスイッチフレームを
解放して68Kコードへジャンプして戻る。
図6Aに示すように、もしそれがロード後実行のオペレ
ーションなら、非ネイティブコードによって先にオペレ
ーションが実行された後、その他のローディングオペレ
ーションが行われる。これらのローディングオペレーシ
ョンは、例えば、リロケーション、ランタイムバインデ
ィング、初期化などを含む。次にプロシージャ情報が解
釈され、実行のオペレーションにつき記載したのと同じ
ステップが実行される。
もしそれがリターンオペレーションなら、リターン結
果が68Kスタックから外され[pull off]、ネイティブ
なRISCリターンレジスタに入力される。セーブされてい
た非揮発性レジスタが復元され、スタックスイッチフレ
ームが開放される。コントロールはその後呼出しコード
に戻る。
図6C及び図6Dは、RISCコードと68Kコード間のスイッ
チング機構を示す。ルーチン記述子を上記の変形実施例
のいずれかを使って呼出す。次にスタックスイッチフレ
ームを割り当て、後で再格納するためにRISC非揮発性レ
ジスタの全てをスタックスイッチフレームにセーブす
る。
次にそれがレジスタベースかスタックベースかを決定
し、それがレジスタベースなら、入力パラメータをネイ
ティブなレジスタから引き出し、68Kレジスタに入力す
る。
次に68Kスタックフレームが立てられる。もし68Kルー
チンがある値をリターンするなら、そのための領域がス
タックフレーム中に割り当てられる。RISCコードから入
ってきたパラメータが68Kスタックフレームに入力され
る。リターンアドレスがリターン値に等しい選択域を有
している特別なルーチン記述子を指し示す値にセットさ
れる。
ルーチンアドレスをルーチン記述子から取り出し、エ
ミュレータが呼出される。エミュレータはそのコードを
実行し、これが終了したとき、特別なルーチン記述子の
始めとなっているようにセットされたリターンアドレス
の実行を試みる。エミュレータがそれを実行しようとす
ると、コントロールがモードスイッチング機構に戻され
る。モードスイッチング機構は、リターンオペレーショ
ンと等しい選択域を検査し、それに適合する上述の動作
をする。
単一のオブジェクトコードタイプ内の多重呼出し[mult
iple calling]規約 本発明はまた、1つのオブジェクトコードタイプ内で
異なる呼出し規約間をスイッチングするのにも使うこと
ができる。例えば本発明はFORTRANとPASCALとをスイッ
チングするのに使うことができる。この場合、実行また
はコードタイプモードスイッチングが何も起こらないこ
とを除けば、モードスイッチング機構はほぼ同一で、む
しろ呼出し規約の変形だけが行われる。また、スイッチ
ングはコードタイプ間では発生せず呼出し規約間でだけ
しか発生しないので、スタックスイッチフレームも簡素
化できる。
単一ルーチン内の多重呼出し規約 本発明はまた、ルーチン、つまり多重の呼出し規約を
持っているコードまたはプログラムセグメントでも使う
ことができる。例えば、あるルーチンは第1のパラメー
タがセレクタ[selector]でその他のパラメータは数、
大きさ、内容及びタイプのそれぞれでその選択値[sele
ctor value]に左右されて変化する関数[function]で
あることがある。図7は記憶装置16が複数の域92のある
ルックアップテーブル90を有している好ましい実施例を
示す。ルーチン記述子20は有効な各選択値と関係し、そ
のルーチン記述子はその選択値に対応するプログラムま
たはコードセグメントを参照する。ルックアップテーブ
ル90中の第1域92aは、ルーチンに対応するルックアッ
プテーブル中の適切な域92を探索[look up]するプロ
グラムセグメントまたはコードセグメントに分岐せよと
する命令を有している。当該域92は選択値と関連して
(in conjunction with)、どのルーチン記述子を使用
し、それによってどのコードセグメントまたはプログラ
ムセグメントを実行するかを決定するのに使われる。
例えば、あるルーチンは第1パラメータを持つことが
出来る。この第1パラメータは1、2、または3という
ような3つの異なる有効値を持つことが出来るセレクタ
であり、そのセレクタの値に依存し、それに従ってそれ
ぞれ1固、2固、または3固持つことができる。即ち、
もし選択値が1なら、1パラメータがそのセレクタに従
うが、もし選択値が2なら、2つのパラメータがそのセ
レクタに従う。正しいパラメータ数だけそのルーチンを
行うように、それぞれのセレクタの値に対し、1ルーチ
ン記述子20が1コードセグメントまたは1プログラムセ
グメントと関連づけられている。
ルーチンがルックアップテーブル90中に探索される
と、どのルーチン記述子を使い、それによってどのコー
ドセグメントまたはプログラムセグメントを実行するか
を決定するためセレクタの値が使われる。
フロントページの続き (72)発明者 パレント、シーン アール. アメリカ合衆国、95037 カリフォルニ ア州、モーガン ヒル、ベンダー サー クル 147 (72)発明者 ジョーンズ、ブルース ケー. アメリカ合衆国、94040 カリフォルニ ア州、マウンテン ビュー、ブライアン ト アヴェニュー 1310 (72)発明者 リリック、アラン ダブリュ. アメリカ合衆国、95032 カリフォルニ ア州、ロス ガトス、ユークリッド ア ベニュー 3 (72)発明者 エイツ、エリック エル. アメリカ合衆国、95008 カリフォルニ ア州、キャンプベル、ノース セカンド ストリート 83 (56)参考文献 特開 平4−309135(JP,A) 特開 平2−81227(JP,A) 特開 昭61−52769(JP,A) 特開 昭63−180129(JP,A) 特開 平4−322327(JP,A) 特開 平4−336327(JP,A) 特開 昭62−73333(JP,A) 特開 昭62−6331(JP,A) 特開 平5−233358(JP,A) 特開 平1−297729(JP,A) 特開 平5−46406(JP,A) 特開 昭62−32540(JP,A) 特開 昭61−221827(JP,A) 特開 平2−231634(JP,A) 「ユーザーズ・マニュアルMC 68040」,日本,日本モトローラ株式会 社,1992年12月 1日,初版,p.226, 227,234−240 可児賢二・他,「Vシリーズマイクロ コンピュータII」,日本,丸善株式会 社,1987年 4月30日,初版,pp. 104−109,ISBN:4−621−03157− 0 Gerry Kane,「mips RISCアーキテクチャ」,日本,共立 出版株式会社,1992年10月 1日,初 版,pp.67−70,83,84,ISBN: 4−320−02598−9 (58)調査した分野(Int.Cl.7,DB名) G06F 9/455 G06F 9/30 - 9/318 G06F 9/40 - 9/42 JSTファイル(JOIS) CSDB(日本国特許庁)

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】プロセッサ12と記憶装置16とを有するコン
    ピュータシステム10の1プロセッサ環境中で、少なくと
    も第1モード及び第2モードを有する複数モードを実行
    する装置であって、 少なくとも第1モードと第2モードとを指定することが
    でき、第2モードにあるときは具体的な所定値にセット
    されている、モードそれぞれを識別するためのミクスト
    モード域28と、 少なくとも1つのソフトウエアルーチンを指定する手段
    27と、 上記指定されたソフトウエアルーチンの実行開始をする
    ことができる機構を指し示し、その実行する指定された
    ソフトウエアルーチンによって使われる1または2以上
    のパラメータを指定するプロシージャ情報域30と、 上記ミクストモード域28を具体的な所定値にセットし、
    上記ミクストモード域28にアクセスするように設計され
    ている、プロセッサ12中の第1の手段と、 上記プロシージャ情報域30を、具体的なソフトウエアル
    ーチンのために用いられる開始機構及びパラメータを指
    し示すようにセットする、プロセッサ12中の第2の手段
    と、 上記ミクストモード域の値にアクセスするように設計さ
    れている、ミクストモード域値を判別するプロセッサ12
    中の第3の手段と、 上記第3の手段に連結され、上記ミクストモード域が上
    記具体的な所定値を持っているという判別に応答して作
    動し、第1モードから第2モードへスイッチングするス
    イッチング手段と、 上記スイッチング手段が第1モードから第2モードへス
    イッチングしたとき呼出されるように上記スイッチング
    手段に連結されているプロセッサ12中の第4の手段であ
    って、指定されたソフトウエアルーチンを呼出すため実
    行開始機構とプロシージャ情報域によって指定されたパ
    ラメータとを使い、それによって具体的なソフトウエア
    ルーチンが実行できるようにする、プロセッサ12中の第
    4の手段と、 具体的なソフトウエアルーチンの実行終了とともに作動
    する、第1モードにリターンするためのプロセッサ12中
    の第5の手段と、 を有することを特徴とする装置。
  2. 【請求項2】少なくとも第1モード及び第2モードを有
    する複数モードを1プロセッサ環境中で、実行する装置
    であって、 コードセグメントを記述するルーチン記述子と、 該ルーチン記述子中に記述されモード間を差別化するミ
    クストモード域と、 該ミクストモード域を特定の所定値にセットするミクス
    トモード域セット手段と、 ロード後実行、実行およびリターンの複数のオペレーシ
    ョン中から1オペレーションを指示する上記ルーチン記
    述子中に置かれるセレクタ域と、 複数のオペレーションから1オペレーションを指定する
    ため該セレクタ域をセットするセレクタ域セット手段
    と、 複数のインストラクションを実行する実行手段と、 複数のインストラクションの各々の実行中に、特定の所
    定値にセットされたミクストモード域を有するルーチン
    記述子に遭遇したか否かを判定する判定手段であって、
    上記実行手段に接続されるものと、 第1モードから第2モードへ切り換えるスイッチ手段で
    あって、上記判定手段がミクストモード域の特定所定値
    にセットされたことを判定したとき該スイッチ手段が作
    動するように上記判定手段に接続されたものと、 実行されるインストラクションにより参照されたルーチ
    ン記述子のセレクタ域中に指定されたオペレーションを
    実行する手段であって、上記スイッチ手段が第1モード
    から第2モードへ切り換えた後に作動するようにスイッ
    チ手段に接続されているものと、 上記指定されたオペレーションの実行を終えると作動さ
    れる上記第1モードに戻る戻手段と、 を有することを特徴とする装置。
  3. 【請求項3】少なくとも第1モード及び第2モードを有
    する複数モードを1プロセッサ環境中で、実行する装置
    であって、 コードセグメント相互でパラメータや結果を引き渡すプ
    ロトコルを有するプログラミング言語により記述される
    コードセグメントを規定するルーチン記述子と、該ルー
    チン記述子中に記述されモード間を差別化するミクスト
    モード域と、 該ミクストモード域を特定の所定値にセットするミクス
    トモード域セット手段と、 上記ルーチン記述子中に置かれるプロシージャポインタ
    であって、上記ルーチン記述子により規定されたコード
    セグメントを特定するものと、 上記プロシージャポインタにより特定されたコードセグ
    メントにパラメータと結果をパスするプロトコルを指示
    する上記ルーチン記述子中に置かれたプロシージャ情報
    域と、 上記プロシージャポインタにより特定されたコードセグ
    メントにパラメータと結果をパスするプロトコルを指示
    する上記プロシージャ情報域をセットするプロシージャ
    情報域セット手段と、 複数のインストラクションを実行する実行手段と、 複数のインストラクションの各々の実行中に、特定の所
    定値にセットされたミクストモード域を有するルーチン
    記述子に遭遇したか否かを判定する判定手段であって、
    上記実行手段に接続されるものと、 第1モードから第2モードへ切り換えるスイッチ手段で
    あって、上記ミクストモード域が上記特定の所定値を持
    つとき上記スイッチ手段が作動するように上記判定手段
    に接続されたものと、 プロシージャポインタにより特定されたコードセグメン
    トを実行する実行手段であって、上記スイッチ手段が第
    1モードから第2モードへ切り換えた後に作動し、コー
    ドセグメントへパラメータをパスするため上記プロシー
    ジャ情報域中において特定されたプロトコルを使うもの
    と、 上記指定されたオペレーションの実行を終えると作動さ
    れる上記第1モードに戻る戻手段と、 を有することを特徴とする装置。
  4. 【請求項4】1コンピュータシステムにおける1プロセ
    ッサー環境中の少なくとも第1モードと第2モードとが
    ある複数モードを実行する装置であって、 メモリーと、 ソフトウエアルーチンを記述するルーチン記述子と、 該ルーチン記述子中に記述されモード間を差別化するミ
    クストモード域と、 該ミクストモード域を特定の所定値にセットするミクス
    トモード域セット手段と、 上記ルーチン記述子中に置かれソフトウエアルーチンの
    アドレスを示すプロシージャポインタ域と、 該プロシージャポインタ域に示されたアドレスを有する
    ソフトウエアルーチンの実行を起動することができるメ
    カニズムを示す、上記ルーチン記述子中に置かれたプロ
    シージャ情報域であって、実行するソフトウエアルーチ
    ンによって使われる1または2以上のパラメータをさら
    に特定するものと、 ソフトウエアルーチンを第2モードで呼び出す呼出手段
    であって、上記ルーチン記述子のプロシージャ情報域が
    アドレスするソフトウエアルーチンのための1または2
    以上のパラメータを受け取ることができるものと、 メモリー中のバッファをポイントするポインタと、 上記呼出手段を実行することができるプロセッサーと、 1または2以上のパラメータを、モード切り替え後に利
    用できるようにバッファに記憶するバッファ手段であっ
    て、1または2以上のパラメータが呼出手段の実行に先
    だってモード切り替え後に利用できるようにバッファに
    記憶されるように呼出手段に接続され、これによって上
    記呼出手段の実行がされたとき上記プロセッサーが呼出
    手段に、バッファをポイントするポインタを引き渡すも
    のと、 パラメータがモード切り替え後に利用できるようにバッ
    ファに記憶されるべきことを示す値に上記プロシージャ
    情報域をセットするセット手段と、 複数のインストラクションを実行する実行手段と、 これら複数のインストラクション各々の実行中に特定の
    所定値にセットされたミクストモード域を有するルーチ
    ン記述子に遭遇したか否かを判定する判定手段であっ
    て、上記実行手段に接続されるものと、 第1モードから第2モードへ切り換えるスイッチ手段で
    あって、ミクストモード域が特定の所定値にセットされ
    たことを上記判定手段が判定したとき該スイッチ手段が
    作動するように上記判定手段に接続されるものと、 実行されるインストラクションが参照したルーチン記述
    子のセレクタ域中に特定されるオペレーションを実行す
    る実行手段であって、上記スイッチ手段が第1モードか
    ら第2モードへ切り換えた後に該実行手段が作動するよ
    うに上記スイッチ手段に接続されるものと、 第1モードへ戻す戻し手段であって、特定のオペレーシ
    ョンの実行が完了したら作動するものと、 を有することを特徴とする装置。
  5. 【請求項5】プロセッサーとメモリーを有するコンピュ
    ータシステムのプロセッサー環境中にある互換性のない
    複数のオブジェクトコードタイプを有する複数のコード
    セグメントを参照する1個のルーチン記述子を実行する
    装置であって、 ルーチン記述子と、 該ルーチン記述子中に記述されモード間を差別化するミ
    クストモード域であって、少なくとも第1状態と第2状
    態とを特定することができ、該第2状態にあるときは特
    定の所定値にセットされるものと、 上記ルーチン記述子中の複数のソフトウエアルーチンを
    特定する特定手段であって、該ソフトウエアは各々異な
    るオブジェクトコードタイプであるものと、 これら複数のソフトウエアルーチンの1つを特定する特
    定手段と、 指定されたソフトウエアルーチンの実行を開始すること
    ができ、この指定されたソフトウエアルーチンの実行に
    使われるべき1または2以上のパラメータを特定するこ
    とができるメカニズム指定手段と、 上記ミクストモード域を特定の所定値にセットするセッ
    ト手段であって、該ミクストモード域にアクセスするよ
    うに設定されたものと、 ミクストモード域の値にアクセスしてその値を判定する
    判定手段と、 第1モードから第2モードへ切り換えるスイッチ手段で
    あって、上記判定手段に接続され、該ミクストモード域
    が上記特定の所定値を持ったという判定がされるとそれ
    に呼応して作動するものと、 上記スイッチング手段が第1モードから第2モードへス
    イッチングしたとき呼出されるように上記スイッチング
    手段に連結されている実行開始機構利用手段であって、
    指定されたソフトウエアルーチンを呼出すため実行開始
    機構とプロシージャ情報域によって指定されたパラメー
    タとを使い、それによって具体的なソフトウエアルーチ
    ンが実行できるようにする手段と、 上記第1モードへ戻す戻し手段であって、指定されたソ
    フトウエアルーチンの実行が完了したら作動するもの
    と、 を有することを特徴とする装置。
  6. 【請求項6】少なくとも1つのCPUとメモリーとを備え
    たコンピュータシステムにおけるプロセッサ環境中で複
    数のモードを実行する方法であって、 第1ルーチン記述子のためのメモリスペースを割り当
    て、 第1ルーチン記述子のアドレスにポインタをセットし、 第1ルーチン記述子中のミクストモード域の内容を無効
    なインストラクションに等しいものにセットし、 該域の内容を実行し、 無効なインストラクションに等しいミクストモード域の
    内容を実行するとき第1モードから第2モードに切り換
    え、 第2モードへ切り換えたのち為されるべきロード後実
    行、実行およびリターンの複数のオペレーションのタイ
    プの1つに第1ルーチン記述子中のセレクタ域の内容を
    セットし、 第2モードへ切り換えたのちセレクタ域の内容が指示す
    るオペレーションを行い、 第2ルーチン記述子を割り当て、 第2ルーチン記述子中のセレクタ域を第1モードオペレ
    ーションへのリターンを指示する値にセットし、 スタックスイッチフレームを割り当て、 該スタックスイッチフレーム中のレジスタ値を保存し、 第1ルーチン記述子の記述するルーチンがレジスタベー
    スか又はスタックベースであるか否か、またルーチンが
    レジスタベースであるか否かを判定し、第1モードレジ
    スタから、入力済みパラメータを移動させて第2モード
    レジスタへ入れ、 スタックスイッチフレームに情報を入れ、 ルーチンが値をリターンしたら、そのためにスタックス
    イッチフレーム中にスペースを割り当て、 スタックスイッチフレームにパラメータを入れ、 スタックスイッチフレームに第2ルーチン記述子のアド
    レスに等しいリターンアドレスをセットし、 第1ルーチン記述子に記述されているルーチンを実行
    し、 第2ルーチン記述子のセレクタ域をチェックし、 第2ルーチン記述子のセレクタ域がリターンオペレーシ
    ョンを指示しているときは第1モードへリターンする、 以上のステップを有することを特徴とする方法。
JP51525494A 1992-12-18 1993-12-14 一つのプログラムの中でまたは1つのプロセッサ環境に於て、夫々のオブジェクトコードタイプが異なる複数のプログラムセグメントを実行するための装置 Expired - Lifetime JP3508775B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US07/993,923 US5452456A (en) 1992-12-18 1992-12-18 Apparatus for executing a plurality of program segments having different object code types in a single program or processor environment
US07/993,923 1992-12-18
PCT/US1993/012148 WO1994015283A1 (en) 1992-12-18 1993-12-14 An apparatus for executing a plurality of program segments having different object code types in a single program or processor environment

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2003277282A Division JP3705547B2 (ja) 1992-12-18 2003-07-22 1プログラムまたは1プロセッサ環境中にさまざまなオブジェクトコードタイプがある複数のプログラムセグメントを実行する装置

Publications (2)

Publication Number Publication Date
JPH08506195A JPH08506195A (ja) 1996-07-02
JP3508775B2 true JP3508775B2 (ja) 2004-03-22

Family

ID=25540073

Family Applications (4)

Application Number Title Priority Date Filing Date
JP51525494A Expired - Lifetime JP3508775B2 (ja) 1992-12-18 1993-12-14 一つのプログラムの中でまたは1つのプロセッサ環境に於て、夫々のオブジェクトコードタイプが異なる複数のプログラムセグメントを実行するための装置
JP2003277282A Expired - Lifetime JP3705547B2 (ja) 1992-12-18 2003-07-22 1プログラムまたは1プロセッサ環境中にさまざまなオブジェクトコードタイプがある複数のプログラムセグメントを実行する装置
JP2005018957A Expired - Lifetime JP3968377B2 (ja) 1992-12-18 2005-01-26 1プログラムまたは1プロセッサ環境中にさまざまなオブジェクトコードタイプがある複数のプログラムセグメントを実行する装置および方法
JP2006207207A Expired - Fee Related JP4298728B2 (ja) 1992-12-18 2006-07-28 複数のプログラムセグメントを実行する装置

Family Applications After (3)

Application Number Title Priority Date Filing Date
JP2003277282A Expired - Lifetime JP3705547B2 (ja) 1992-12-18 2003-07-22 1プログラムまたは1プロセッサ環境中にさまざまなオブジェクトコードタイプがある複数のプログラムセグメントを実行する装置
JP2005018957A Expired - Lifetime JP3968377B2 (ja) 1992-12-18 2005-01-26 1プログラムまたは1プロセッサ環境中にさまざまなオブジェクトコードタイプがある複数のプログラムセグメントを実行する装置および方法
JP2006207207A Expired - Fee Related JP4298728B2 (ja) 1992-12-18 2006-07-28 複数のプログラムセグメントを実行する装置

Country Status (8)

Country Link
US (2) US5452456A (ja)
EP (1) EP0674783B1 (ja)
JP (4) JP3508775B2 (ja)
AT (1) ATE171554T1 (ja)
AU (1) AU5801294A (ja)
CA (1) CA2152041C (ja)
DE (1) DE69321255T2 (ja)
WO (1) WO1994015283A1 (ja)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199200B1 (en) * 1994-04-15 2001-03-06 International Business Machines Corporation Method and system for supporting dual conventions for methods that return structures
ATE419586T1 (de) * 1995-02-13 2009-01-15 Intertrust Tech Corp Systeme und verfahren zur gesicherten transaktionsverwaltung und elektronischem rechtsschutz
US5748963A (en) * 1995-05-12 1998-05-05 Design Intelligence, Inc. Adaptive binding
US5696956A (en) * 1995-11-08 1997-12-09 Digital Equipment Corporation Dynamically programmable reduced instruction set computer with programmable processor loading on program number field and program number register contents
US6535903B2 (en) * 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
US6091897A (en) 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US5784638A (en) * 1996-02-22 1998-07-21 International Business Machines Corporation Computer system supporting control transfers between two architectures
US5835958A (en) * 1996-10-29 1998-11-10 Sun Microsystems, Inc. Method and apparatus for dynamically sizing non-contiguous runtime stacks
US5961639A (en) * 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
US5896522A (en) * 1996-12-31 1999-04-20 Unisys Corporation Selective emulation interpretation using transformed instructions
US6012129A (en) * 1997-03-31 2000-01-04 International Business Machines Corporation Apparatus and method allocating virtual memory upon demand
US6026431A (en) * 1997-10-20 2000-02-15 Micron Electronics, Inc. System for providing a user with parameter-specific information
US5946695A (en) * 1997-10-20 1999-08-31 Micron Electronics, Inc. Method for viewing and providing to a user parameter-specific information
US6295640B1 (en) * 1998-05-08 2001-09-25 Apple Computer, Inc. Method and apparatus for distinguishing reference values from non-reference values in a runtime environment
US6279082B1 (en) 1998-10-14 2001-08-21 Telefonaktiebolaget Lm Ericsson (Publ) System and method for efficient use of cache to improve access to memory of page type
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
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
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
JP2001142692A (ja) * 1999-10-01 2001-05-25 Hitachi Ltd 2つの異なる固定長命令セットを実行するマイクロプロセッサ、マイクロコンピュータおよび命令実行方法
JP4277396B2 (ja) * 1999-11-30 2009-06-10 株式会社デンソー 電子制御装置
US7765581B1 (en) 1999-12-10 2010-07-27 Oracle America, Inc. System and method for enabling scalable security in a virtual private network
GB2358261B (en) * 2000-01-17 2004-06-09 Advanced Risc Mach Ltd Data processing with native and interpreted program instruction words
US6961934B2 (en) * 2000-05-08 2005-11-01 Microtune (San Diego), Inc. Portable thread environment
WO2001086415A2 (en) * 2000-05-08 2001-11-15 Transilica, Inc. Priority in a portable thread environment
US7069205B1 (en) 2000-07-17 2006-06-27 Microsoft Corporation System and method for emulating the operation of a video graphics adapter
US6651132B1 (en) 2000-07-17 2003-11-18 Microsoft Corporation System and method for emulating the operation of a translation look-aside buffer
US7506265B1 (en) 2000-07-17 2009-03-17 Microsoft Corporation System and method for displaying images of virtual machine environments
US7085705B2 (en) * 2000-12-21 2006-08-01 Microsoft Corporation System and method for the logical substitution of processor control in an emulated computing environment
US6980946B2 (en) * 2001-03-15 2005-12-27 Microsoft Corporation Method for hybrid processing of software instructions of an emulated computer system
US6968350B2 (en) * 2001-04-07 2005-11-22 Microsoft Corporation Method for establishing a virtual hard drive for an emulated computer system running on a host computer system
US20020154635A1 (en) * 2001-04-23 2002-10-24 Sun Microsystems, Inc. System and method for extending private networks onto public infrastructure using supernets
US6907519B2 (en) * 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
JP4042527B2 (ja) * 2002-10-29 2008-02-06 株式会社日立製作所 呼出規約変換処理の生成方法
US8271976B2 (en) * 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
KR20070062576A (ko) * 2004-10-25 2007-06-15 로베르트 보쉬 게엠베하 적어도 2개의 실행 유닛을 포함하는 컴퓨터 시스템에서프로그램 코드로부터 처리를 분리하기 위한 방법 및 장치
US20080313384A1 (en) * 2004-10-25 2008-12-18 Ralf Angerbauer Method and Device for Separating the Processing of Program Code in a Computer System Having at Least Two Execution Units
GB2424092A (en) 2005-03-11 2006-09-13 Transitive Ltd Switching between code translation and execution using a trampoline
EP1866761A1 (en) * 2005-03-11 2007-12-19 Transitive Limited Execution control during program code conversion
US10317892B2 (en) * 2014-10-15 2019-06-11 Brigham Young University System and method for concurrent multi-user computer-aided manufacturing
US10181030B2 (en) 2015-07-24 2019-01-15 Citrix Systems, Inc. Blocking routine redirection
US10977101B2 (en) 2018-12-12 2021-04-13 International Business Machines Corporation Interoperability between programs associated with different addressing modes
US11249760B2 (en) 2019-04-10 2022-02-15 International Business Machines Corporation Parameter management between programs
US11294695B2 (en) 2020-05-28 2022-04-05 International Business Machines Corporation Termination of programs associated with different addressing modes
US11042422B1 (en) * 2020-08-31 2021-06-22 Microsoft Technology Licensing, Llc Hybrid binaries supporting code stream folding
US11231918B1 (en) 2020-08-31 2022-01-25 Microsoft Technologly Licensing, LLC Native emulation compatible application binary interface for supporting emulation of foreign code
US11403100B2 (en) 2020-08-31 2022-08-02 Microsoft Technology Licensing, Llc Dual architecture function pointers having consistent reference addresses
US11947993B2 (en) 2021-06-22 2024-04-02 International Business Machines Corporation Cooperative input/output of address modes for interoperating programs
US11556356B1 (en) 2021-09-23 2023-01-17 International Business Machines Corporation Dynamic link objects across different addressing modes

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4084235A (en) * 1975-04-14 1978-04-11 Honeywell Information Systems Inc. Emulation apparatus
US4589087A (en) * 1983-06-30 1986-05-13 International Business Machines Corporation Condition register architecture for a primitive instruction set machine
JPS6017539A (ja) * 1983-07-11 1985-01-29 Hitachi Ltd エミユレ−シヨン方式
US5027273A (en) * 1985-04-10 1991-06-25 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4779187A (en) * 1985-04-10 1988-10-18 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4825358A (en) * 1985-04-10 1989-04-25 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
US4974159A (en) * 1988-09-13 1990-11-27 Microsoft Corporation Method of transferring control in a multitasking computer system
JP2655615B2 (ja) * 1988-12-08 1997-09-24 日本電気株式会社 情報処理装置
US5146593A (en) * 1989-03-06 1992-09-08 International Business Machines Corporation Procedure call interface
EP0414624B1 (en) * 1989-08-24 1996-12-18 International Business Machines Corporation System for calling procedures on a remote network node
US5754855A (en) * 1994-04-21 1998-05-19 International Business Machines Corporation System and method for managing control flow of computer programs executing in a computer system

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
「ユーザーズ・マニュアルMC68040」,日本,日本モトローラ株式会社,1992年12月 1日,初版,p.226,227,234−240
Gerry Kane,「mips RISCアーキテクチャ」,日本,共立出版株式会社,1992年10月 1日,初版,pp.67−70,83,84,ISBN:4−320−02598−9
可児賢二・他,「VシリーズマイクロコンピュータII」,日本,丸善株式会社,1987年 4月30日,初版,pp.104−109,ISBN:4−621−03157−0

Also Published As

Publication number Publication date
ATE171554T1 (de) 1998-10-15
WO1994015283A1 (en) 1994-07-07
US5452456A (en) 1995-09-19
AU5801294A (en) 1994-07-19
JP3968377B2 (ja) 2007-08-29
JP2004046881A (ja) 2004-02-12
US6256658B1 (en) 2001-07-03
JP2006331450A (ja) 2006-12-07
EP0674783A1 (en) 1995-10-04
JPH08506195A (ja) 1996-07-02
JP4298728B2 (ja) 2009-07-22
DE69321255T2 (de) 1999-05-27
JP3705547B2 (ja) 2005-10-12
JP2005149532A (ja) 2005-06-09
CA2152041C (en) 1999-03-16
CA2152041A1 (en) 1994-07-07
DE69321255D1 (de) 1998-10-29
EP0674783B1 (en) 1998-09-23

Similar Documents

Publication Publication Date Title
JP3508775B2 (ja) 一つのプログラムの中でまたは1つのプロセッサ環境に於て、夫々のオブジェクトコードタイプが異なる複数のプログラムセグメントを実行するための装置
US5835768A (en) Computer operating system providing means for formatting information in accordance with specified cultural preferences
US5247678A (en) Load time linker for software used with a multiprocessor system
US6381737B1 (en) Automatic adapter/stub generator
JP5039031B2 (ja) ネイティブコード及び目的コードをプログラムコード変換中に組み合わせて実行する方法及び装置
US6651080B1 (en) Techniques for implementing pluggable virtual machines
EP0706684B1 (en) System for object oriented dynamic linking based upon a catalog of registered function set or class identifiers
US5983021A (en) Dynamically switching statically bound function calls to dynamically bound function calls without recompilation
EP1019794A2 (en) Data processing device for processing virtual machine instructions
KR20070118663A (ko) 고유 명령어를 이용한 레지스터 화일로서의 오퍼랜드스택에 대한 마이크로프로세서 엑세스
CA1319439C (en) System for processing data to facilitate the creation of executable images
KR20040048246A (ko) 자바 실행 장치 및 자바 실행 방법
JP2582992B2 (ja) 汎用制御インターフェースを含むデータ処理システム
EP0803801B1 (en) Method for mixing objective-C and C++ objects
WO2006131695A1 (en) Method and apparatus for combined execution of native code and target code during program code conversion
RU2718235C1 (ru) Архитектура операционной системы для обеспечения поддержки поколений микроядер
EP0530351B1 (en) Improved system and method for detecting cross-domain instruction calls and data references especiallly adapted for code interface jacketing in a multi-code execution and debugging system within a multi-architecture environment
JPH08272757A (ja) マルチプロセッサシステム及びプログラム起動方法
Moriai et al. Dynamic loadable object support for real-time mach kernels
Giguhre Platform-Specific Standards for REXX: Issues for Developers and Implementors
JPH0377140A (ja) コンパイル装置

Legal Events

Date Code Title Description
A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20031216

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080109

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090109

Year of fee payment: 5

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090109

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090109

Year of fee payment: 5

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090109

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100109

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110109

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110109

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130109

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130109

Year of fee payment: 9

EXPY Cancellation because of completion of term