JPH08339304A - 機械独立コードを含むプラットフォーム標準オブジェクト・ファイルを生成する方法および装置 - Google Patents

機械独立コードを含むプラットフォーム標準オブジェクト・ファイルを生成する方法および装置

Info

Publication number
JPH08339304A
JPH08339304A JP7350069A JP35006995A JPH08339304A JP H08339304 A JPH08339304 A JP H08339304A JP 7350069 A JP7350069 A JP 7350069A JP 35006995 A JP35006995 A JP 35006995A JP H08339304 A JPH08339304 A JP H08339304A
Authority
JP
Japan
Prior art keywords
code
procedure
abstract code
abstract
object file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP7350069A
Other languages
English (en)
Inventor
Brian T Lewis
ブライアン・ティ・ルイス
Theodore C Goldstein
セオドア・シイ・ゴールドスティン
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH08339304A publication Critical patent/JPH08339304A/ja
Withdrawn 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/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Abstract

(57)【要約】 【課題】 機械独立抽象コードを含むプラットフォーム
標準オブジェクト・ファイルを生成する方法および装
置。 【解決手段】 手順を定義するソース・コードは、その
手順が実行されるプラットフォームに関する仮定を行わ
ない抽象コードに変換される。抽象コードに基づいて抽
象コード・プラットフォーム標準オブジェクト・ファイ
ルが生成される。抽象コード・プラットフォーム標準オ
ブジェクト・ファイルは、抽象コードに定義されている
グローバル変数の定義のリスト、抽象コードで参照され
る外部変数または外部手順を示す記号参照のリスト、ク
ライアントが手順を呼び出したときに実行ルーチンを呼
び出す機械命令のシーケンスと、手順を定義する抽象コ
ードとを含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ソフトウェア開発
ツールに関し、詳細には、機械独立ソフトウェア・コー
ドをプラットフォーム標準オブジェクト・ファイルとし
て封入する装置および方法に関する。
【0002】
【従来の技術】コンピュータ・プラットフォームは、特
定のオペレーティング・システムを実行するコンピュー
タ・システムから成る。すべてのコンピュータ・プラッ
トフォームが相互に互換性をもつわけではない。具体的
には、あるプラットフォーム上で実行できる命令が他の
プラットフォーム上では実行できないことが多い。複数
のプラットフォーム上での実行を可能にするために、ソ
フトウェアは最初、「高レベル」言語で書かれる。高レ
ベル言語は、実際にプラットフォーム上で実行される命
令よりも一般的な命令(「高レベル命令」)を含む。高
レベル命令は一般に、コンピュータ・システム上で直接
に実行することができないので、まず、特定のターゲッ
ト・プラットフォーム上で直接実行できる機械固有コー
ドに変換しなければならない。本明細書では、高レベル
命令を含むファイルを高レベル・ソフトウェア・モジュ
ールと呼ぶ。
【0003】高レベル・ソフトウェア・モジュールに基
づいて機械固有のプログラムを生成するために様々なプ
ログラミング手法が使用されている。ある手法によれ
ば、高レベル・ソフトウェア・モジュールはまず、コン
パイラ・プログラムによって機械固有オブジェクト・フ
ァイルとしてコンパイルされる。本明細書では、この手
法を一般に実行前コンパイル手法と呼ぶ。通常、プラッ
トフォームは、機械固有のオブジェクト・ファイル用の
標準フォーマットを有する。本明細書では、プラットフ
ォームの標準フォーマットを満たす機械固有のオブジェ
クト・ファイルをプラットフォーム標準オブジェクト・
ファイル(「PSOF」)と呼ぶ。特定のプラットフォ
ーム用のプラットフォーム標準ファイルは標準フォーマ
ットを有するので、単一のプログラムにおいて、最初に
複数の高レベル・プログラミング言語で書かれた高レベ
ル・ソフトウェア・モジュールから生成されたプラット
フォーム標準オブジェクト・ファイルを組み合わせるこ
とができる。たとえば、第1の高レベル・プログラミン
グ言語で書かれた第1の高レベル・ソフトウェア・モジ
ュールからコンパイルされた第1のプラットフォーム標
準オブジェクト・ファイルと、第2の高レベル・プログ
ラミング言語で書かれた第2の高レベル・ソフトウェア
・モジュールからコンパイルされた第2のプラットフォ
ーム標準オブジェクト・ファイルから単一のプログラム
を作成することができる。
【0004】プログラム用のプラットフォーム標準オブ
ジェクト・ファイルは、コンパイルされた後、プログラ
ムを作成するために互いにリンクされる。プラットフォ
ーム標準オブジェクト・ファイル間のリンクによって、
プラットフォーム標準オブジェクト・ファイルは、情報
を渡し相互のファイル内に定義されている手順を呼び出
すことができる。ソフトウェア・モジュールは、(プロ
グラム実行の前に)静的にリンクすることも、あるいは
(プログラム実行時に)動的にリンクすることもでき
る。プラットフォーム上のすべてのプラットフォーム標
準オブジェクト・ファイルが標準フォーマットを有する
ので、標準リンカを使用して、対応する高レベル・ソフ
トウェア・モジュールが書かれた高レベル・プログラミ
ング言語にかかわらずに、プラットフォーム標準オブジ
ェクト・ファイルをリンクすることができる。
【0005】プログラムが特定の機能にアクセスできる
ようにするためにソフトウェア「ライブラリ」および
「ツールキット」が開発されている。通常、このような
機能はプラットフォーム標準オブジェクト・ファイルで
実施される。したがって、プログラム内のライブラリ機
能にアクセスするには、そのプログラムのプラットフォ
ーム標準オブジェクト・ファイルを単に、所望の機能に
対応するツールキット・プラットフォーム標準オブジェ
クト・ファイルにリンクする。
【0006】他の手法によれば、高レベル・ソフトウェ
ア・モジュールの各命令は、プログラム実行時に「ただ
ちに」機械固有のコードに変換される。本明細書では、
この手法を一般に実行時コンパイル手法と呼ぶ。具体的
に言うと、高レベル・ソフトウェア・モジュールに表さ
れているプログラムを実行するには、高レベル・ソフト
ウェア・モジュールに含まれる命令をコード生成プログ
ラムによって読み取る。コード生成プログラムは、高レ
ベル・ソフトウェア・モジュール中の高レベル命令を機
械固有の命令に変換し、その機械固有の命令を、実行で
きるようにただちにプロセッサへ送る。
【0007】他の手法によれば、高レベル・ソフトウェ
ア・モジュールの各命令はプログラム実行時に、解釈プ
ログラムへ送られる。本明細書では、この手法を解釈プ
ログラム手法と呼ぶ。解釈プログラムによって、プログ
ラム実行は、現高レベル命令に対応する機械固有の命令
の事前コンパイル・ブロックにジャンプする。機械固有
の命令の事前コンパイル・ブロックが実行された後、解
釈プログラムは、すでに実行されたこの機械固有の命令
の実行に応答して次に解釈すべき高レベル命令を決定す
る。
【0008】プログラムに関する実行速度要件、メモリ
要件、資源要件、エラー訂正、メンテナンス・ターンア
ラウンド時間は部分的に、これらのプログラム開発手法
のうちのどれを使用してプログラムを生成するかに依存
する。たとえば、実行前にコンパイルされるコードは通
常、解釈プログラムまたは実行時コード生成ソフトウェ
アにリンクする必要も、そのようなプログラムまたはソ
フトウェアと共に分散する必要もない。また、事前コン
パイル・コードは一般に、実行時に解釈プログラムとも
コード生成プロセスとも処理資源を共用する必要がない
ので、解釈されたコードよりも高速に実行される。しか
し、小さな変更であっても、それを組み込むには、完全
にコンパイルされたコードを再コンパイルしなければな
らない。コンパイル済みコードが、高レベル命令よりも
ずっと大きくなる傾向もある。したがって、コンパイル
済みコードには通常、より多くの記憶空間とより多くの
実行時資源が必要である。
【0009】これに対して、「ただちに」コンパイルま
たは解釈されるコード(「実行時変換コード」)は一般
に、より小さく、必要とする実行時資源がより少ない。
また、ただちにコンパイルまたは解釈されるコードを改
訂するとき、そのコードをプログラム実行よりも前に再
コンパイルする必要はない。即時コード変換では、実行
時に、最初のソース・コードを再コンパイルせずに追加
検査コードを生成することもできる。実行時変換コード
を特定の実行環境向けに調整することもできる。たとえ
ば、単一のアーキテクチャの異なる処理系は、わずかに
異なる命令スケジューリング特性および遅延特性を有す
ることができる。ある試験では、あるアーキテクチャの
第1の処理系向けにコンパイルされたサンプル・プログ
ラムは、そのアーキテクチャの第2の処理系上で、その
第2の処理系向けにコンパイルされた同じプログラムよ
りも、動作が25%だけ低速であった。即時コード変換
では、同じプログラム表現を、共に良好な性能特性を有
する2つのアーキテクチャで使用することができる。他
の例では、ローカル・オブジェクト処理系向けに調整さ
れたスタブ・コードは通常、ローカル・オブジェクト処
理系と非ローカル・オブジェクト処理系を共に扱う汎用
スタブ・コードよりも高速である。しかし、オブジェク
トがローカルに実施されるかどうかは、実行時まで分か
らない。即時コード変換を使用すると、スタブ・コード
が生成される前に、オブジェクトがローカルに実施され
るかどうかを判定することができる。この実行時情報に
基づいて、より高速でより非汎用的なスタブ・コードを
生成することができる。
【0010】様々な開発手法の利益を実現するために、
混成プログラミング環境が開発されている。たとえば、
即時コード生成プログラムによって変換された高レベル
・ソフトウェア・モジュールが外部プラットフォーム標
準オブジェクト・ファイルを呼び出せるようにするシス
テムが開発されている。生成されたコードと外部プラッ
トフォーム標準オブジェクト・ファイルの間の接続は、
カスタム・リンカによって行われる。しかし、ある種の
現行の混成システム上のカスタム・リンカでは、外部プ
ラットフォーム標準オブジェクト・ファイルが、変換中
の高レベル・ソフトウェア・モジュールに「コールバッ
ク」することはできない。コールバックがサポートされ
ないので、情報は一方向にしか流れない。残念なこと
に、多数のプラットフォーム標準オブジェクト・ファイ
ルは二方向通信を必要とする。したがって、多数のプラ
ットフォーム標準オブジェクト・ファイル、ソフトウェ
ア・ライブラリ、ソフトウェア・ツールキットはこれら
のシステムにアクセスすることができない。
【0011】他の混成システムは、外部コードから生成
済みコードで定義された変数へのコールバックおよび参
照をサポートしない専用リンカを有する。これらのシス
テムによって生成されたプログラムは、他のプログラミ
ング環境によって生成されたプラットフォーム標準オブ
ジェクト・ファイルを利用することができる。しかし、
これらのシステムは、プラットフォーム標準オブジェク
ト・ファイル自体は生成しないので、他のプログラミン
グ環境で生成されたプログラムが、高レベル・ソフトウ
ェア・モジュールで実施される機能を利用することはで
きない。
【0012】マイクロソフト社(Microsoft
Corporation)によって他の混成プログラム
開発システムが開発されている。マイクロソフト社のC
及びC++コンパイラのあるバージョンでは、プログラ
ム開発者は、ソース・コード・プログラムのすべての部
分または選択された部分を、「Pコード」を密閉するプ
ログラム固有オブジェクト・ファイルとしてコンパイル
することができる。Pコード・オブジェクト・ファイル
を機械コード・オブジェクト・ファイルとその他のPコ
ード・オブジェクト・ファイルとにリンクしてプログラ
ムを作成することができる。Pコードは、コンピュータ
上で直接実行することはできない。したがって、実行時
Pコード解釈プログラムを実施するオブジェクト・ファ
イルも、Pコード・オブジェクト・ファイルを含むプロ
グラムに静的にリンクされる。実行時には、Pコード解
釈プログラムは、Pコードが呼び出されたときにPコー
ド命令を解釈する。
【0013】一般に、Pコード命令が占有する空間は、
機械コード相当物が占有する空間よりも狭い。Pコード
は、1つには、Pコードを含むプログラムを実行するハ
ードウェアに関する仮定を行うことによって、このサイ
ズ削減を行う。たとえば、Pコードは、ある種のレジス
タの存在を仮定する。Pコードは、「ワード」、「短
い」、「長い」、「nearポインタ」、「farポイ
ンタ」、「hugeポインタ」など、データ・タイプの
サイズおよび意味も仮定する。これらの仮定によって実
行可能なプログラム・サイズが大幅に削減されるが、P
コードの移植性が抑制される。たとえば、「ワード」が
16ビットの情報であると仮定するPコード・ルーチン
は、「ワード」が32ビット情報から成るプラットフォ
ーム上ではうまく動作することができない。
【0014】
【発明が解決しようとする課題】前記のことに基づい
て、機械独立ソフトウェア・モジュールをプラットフォ
ーム標準オブジェクト・ファイルとして封入する機構を
提供することが望ましいことは明らかである。さらに、
他のプログラミング環境によって生成されたプラットフ
ォーム標準オブジェクト・ファイルからアクセスできる
プラットフォーム標準オブジェクト・ファイルを生成す
る即時コード生成システムを提供することが望ましい。
さらに、プログラム実行時までコード変換プロセス選択
を遅延させるプログラム開発環境を提供することが望ま
しい。最後に、実行時に最適なコード変換技法を選択す
る機構を提供することが望ましい。
【0015】
【課題を解決するための手段】本発明の一態様によれ
ば、機械独立ソフトウェア・モジュールからプラットフ
ォーム標準オブジェクト・ファイルを生成する方法が提
供される。機械独立ソフトウェア・モジュールは、少な
くとも1つの手順を定義する抽象コードを含む。この方
法によれば、この抽象コードは、機械独立ソフトウェア
・モジュールにグローバル変数が定義されているかどう
かを判定するために分析される。機械独立ソフトウェア
・モジュールにグローバル変数が定義されている場合、
グローバル変数の定義のリストが生成される。定義のリ
ストは、プラットフォーム標準オブジェクト・ファイル
に記憶される。抽象コード手順は、それが外部変数また
は外部手順を参照するかどうかを判定するために分析さ
れる。抽象コード手順が外部変数または外部手順を参照
する場合、外部変数または外部手順を示す記号参照のリ
ストが生成される。記号参照のリストは、プラットフォ
ーム標準オブジェクト・ファイルに記憶される。クライ
アントが抽象コード手順を呼び出したときに実行ルーチ
ンを呼び出すために機械命令のシーケンスが生成され
る。この機械命令シーケンスは、プラットフォーム標準
オブジェクト・ファイルに記憶される。抽象コードは、
プラットフォーム標準オブジェクト・ファイルに記憶さ
れる。
【0016】この方法は任意選択で、プラットフォーム
標準オブジェクト・ファイルにコードを記憶する前に抽
象コードを圧縮するステップを含む。記号参照のリスト
は、実行ルーチンを示す記号参照を含む。実行ルーチン
は、様々な形をとることができる。たとえば、実行ルー
チンは、抽象コード手順の抽象コードを解釈するルーチ
ンでよい。実行ルーチンは、抽象コード手順を含むプロ
グラムの実行時に抽象コード手順に応答して機械コード
を生成するルーチンでもよい。
【0017】本発明の他の態様によればプラットフォー
ム上でコンピュータ・プログラムを実行する方法が提供
される。コンピュータ・プログラムは、機械独立ソフト
ウェア・モジュールに含まれる抽象コードで定義された
第2の手順を呼び出す第1のプラットフォーム標準オブ
ジェクト・ファイルで実施される第1の手順を含む。プ
ラットフォームは、標準静的リンカを有する。この方法
によれば、抽象コードに基づいて第2のプラットフォー
ム標準オブジェクト・ファイルが生成される。第2のプ
ラットフォーム標準オブジェクト・ファイルは抽象コー
ドを含む。第1のプラットフォーム標準オブジェクト・
ファイルは、標準静的リンカによって第2の標準オブジ
ェクト・ファイルに静的にリンクされる。第2のプラッ
トフォーム標準オブジェクト・ファイルは、実行ルーチ
ンにリンクされる。実行ルーチンは、第1の手順が第2
の手順を呼び出すときに呼び出される。実行ルーチンに
よって、抽象コードに応答して第2の手順が実行され
る。
【0018】一実施態様によれば、第2のプラットフォ
ーム標準オブジェクト・ファイルはプログラムの実行時
に実行ルーチンに動的にリンクされる。実行ルーチン
は、解釈プログラムでも、コード生成プログラムでも、
複数の実行技法によって抽象コードを実行する実行制御
ルーチンでもよい。
【0019】実行ルーチンが、複数の実行技法によって
抽象コードを実行する実行制御ルーチンである実施態様
では、複数の実行技法から実行技法を選択し、選択した
実行技法に応じて抽象コードを実行することによって抽
象コードを実行することができる。複数の実行技法は、
抽象コードを解釈する技法と、抽象コードに応答して機
械コードを生成する技法とを含むことができる。複数の
実行技法は、抽象コードに応答して機械コードを生成す
る第1の技法と、抽象コードに応答して機械コードを生
成する第2の技法とを含むこともでき、この場合、第1
の技法は第2の技法よりも比較的高速であり、第2の技
法は、第1の技法と比べてより効率的なコードを生成す
る。第2の手順が呼び出される頻度に応じて、複数の実
行技法のうちの1つを選択することができる。
【0020】本発明の他の態様によれば、記憶装置上に
記憶された機械独立ソフトウェア・モジュールからプラ
ットフォーム標準オブジェクト・ファイルを生成する装
置が提供される。機械独立ソフトウェア・モジュール
は、抽象コード手順を定義する抽象コードを含む。この
装置は一般に、グローバル変数処理装置と、外部参照処
理装置と、呼出しルーチン生成装置と、抽象コード密閉
装置とを含む。
【0021】グローバル変数処理装置は記憶装置に結合
される。グローバル変数処理装置は、機械独立ソフトウ
ェア・モジュールにグローバル変数が定義されているか
どうかを判定するために抽象コードを分析する。機械独
立ソフトウェア・モジュールにグローバル変数が定義さ
れている場合、グローバル変数処理装置は、グローバル
変数の定義のリストと、プラットフォーム標準オブジェ
クト・ファイルに記憶されている定義のリストを生成す
る。
【0022】外部参照処理装置は記憶装置に結合され
る。外部参照処理装置は、抽象コード手順が外部変数ま
たは外部手順を参照するかどうかを判定するために抽象
コードを分析する。抽象コード手順が外部変数または外
部手順を参照する場合、外部参照処理装置は、外部変数
または外部手順を示す記号参照のリストを生成し、記号
参照のリストはプラットフォーム標準オブジェクト・フ
ァイルに記憶される。
【0023】呼出しルーチン生成装置は、記憶装置に結
合される。呼出しルーチン生成装置は、クライアントが
抽象コード手順を呼び出したときに実行ルーチンを呼び
出す機械命令のシーケンスを生成し、この機械命令シー
ケンスは、プラットフォーム標準オブジェクト・ファイ
ルに記憶される。抽象コード密閉装置は記憶装置に結合
される。抽象コード処理装置は、抽象コードをプラット
フォーム標準オブジェクト・ファイルに記憶する。
【0024】
【発明の実施の形態】高レベル・ソフトウェア・モジュ
ールからプラットフォーム標準オブジェクト・ファイル
を生成する方法および装置について説明する。下記の説
明では、説明の都合上、本発明を完全に理解してもらう
ために、ソフトウェア・ツール、プラットフォーム、オ
ペレーティング・システム、プログラミング言語など多
数の特定の詳細について述べる。しかし、当業者には、
本発明がこれらの特定の詳細なしで実施できることが明
らかであろう。他の例では、本発明を不必要にあいまい
にしないように、周知の構造および装置をブロック図の
形で示す。
【0025】図1を参照すると、本発明の好ましい実施
形態を実施することができるコンピュータ・システム1
00が示されている。コンピュータ・システム100
は、情報を通信するバスまたはその他の通信手段101
と、情報を処理するためにバス101に結合されたプロ
セッサ102とを備える。コンピュータ・システム10
0はさらに、プロセッサ102が実行すべき情報および
命令を記憶するためにバス101に結合された、ランダ
ム・アクセス・メモリ(RAM)またはその他の動的記
憶装置104(メイン・メモリと呼ばれる)を備える。
メイン・メモリ104は、プロセッサ102による命令
の実行時に一時変数またはその他の中間情報を記憶する
ために使用することもできる。
【0026】さらに、磁気ディスクや光ディスクなどの
データ記憶装置107とそれに関連するディスク・ドラ
イブとをコンピュータ・システム100に結合すること
ができる。コンピュータ・システム100は、コンピュ
ータ・ユーザに情報を表示するために陰極線管(CR
T)などの表示装置121にバス101を介して結合す
ることもできる。英数字キーおよびその他のキーを含む
英数字入力装置122は通常、選択された情報およびコ
マンドをプロセッサ102に通知するためにバス101
に結合される。
【0027】本発明は、コンピュータ・システム100
を使用して実行可能なプログラムを開発することに関す
るものである。現在好ましい実施形態では、コンピュー
タ・システム100は、UNIX System Vオ
ペレーティング・システムを実行するように構成され
る。コンピュータ・システム100は、コードを処理す
る複数のプログラミング・ツールを実行することによっ
てソース・コードから実行時プログラムを作成する。次
に、実行可能なファイルを作成する際に必要な様々な処
理フェーズを図2aに関してさらに詳しく説明する。
【0028】図2aは、本発明の一実施形態によるソフ
トウェア開発の処理フェーズを示すデータ流れ図であ
る。図2aで、データは卵形で示され、データを処理し
変換するプログラミング・ツールは矩形で示されてい
る。処理フェーズ間に、データは、メモリ104または
記憶装置107に記憶されることが好ましい。プログラ
ミング・ツールは最初に、記憶装置107上に記憶さ
れ、プロセッサ102によって実行される前にメモリ1
04にロードされる。
【0029】ソフトウェア開発者は、変換プロセスの第
1段の前に、PascalやC++などの高水準言語で
1つまたは複数の手順を記述するソース・コード・ファ
イルを作成する。ソース・コード200は一般に、ソー
ス・コード命令を含むファイルを表す。
【0030】実行可能ファイル作成プロセスの第1フェ
ーズ中に、ソース・コード変換プログラム202は、ソ
ース・コード200を読み取り、ソース・コード200
を機械独立コード(抽象コード)204に変換する。通
常、ソース・コード200は記憶装置107上のファイ
ルとして存在する。しかし、たとえば、ソース・コード
変換プログラム202がプログラム・エディタから直接
呼び出される場合、ソース・コード200をメモリ10
4から呼び出すこともできる。
【0031】ソース・コード変換プログラム202を図
3aにさらに詳しく示す。ソース・コード変換プログラ
ム202は一般に、パーサ300と抽象コード生成プロ
グラム304とを含む。パーサ300は、ソース・コー
ド200を読み取り、それに基づいて抽象意味グラフ3
02を生成する。抽象意味グラフ302は、ソース・コ
ード200で定義された手順を表すデータ構造である。
【0032】抽象コード生成プログラム304は、抽象
意味グラフ302を読み取り、それに基づいて抽象コー
ド204を生成する。抽象コード生成プログラム304
は、特定の抽象コード言語に適合する抽象コード204
を生成する。
【0033】抽象コードは、機械独立解釈済みコード
と、プログラム成分の機械独立記述との両方を含む。抽
象コードは、プログラムが最終的に実行されるプラット
フォームに関する仮定を行わない点で、マイクロソフト
社のCコンパイラおよびC++コンパイラによって生成
されるPコードとは異なる。たとえば、抽象コードは、
それが定義する手順で使用されるあらゆるデータ・タイ
プのサイズを明示的に表す。したがって、ソース・コー
ド言語が、整数の長さが4バイトであると仮定する場合
でも、ソース・コードから生成された抽象コードは、整
数の長さが4バイトであることを明示的に表す対応する
データ・タイプを定義する。
【0034】したがって、抽象コードは、従来技術で使
用される他のプログラム表現形式よりもかなり移植性が
高い。たとえば、整数に作用する抽象手順は、「整数」
を異なる方法で定義する2つのプラットフォーム上で修
正なしで正確に実行することができる。この機械独立性
は、「整数」が意味するものを抽象コード自体が明確に
定義するために得られる。この機械独立性は、プラット
フォーム固有のタイプ定義にも、プラットフォーム固有
のハードウェア機械にも依存しない。
【0035】抽象コード204は最初、メモリ104中
のリンク化データ構造として生成される。リンク化デー
タ構造のフィールドは、抽象コード・プログラム要素に
対応する。次に、付録Iにリストした機械独立性ソフト
ウェア・モジュールのサンプル部分に関して、このプロ
グラミング要素について説明する。サンプル機械ソフト
ウェア・モジュールの特定の構造、文法、語彙項目が特
定の抽象コード言語に適合することが理解されよう。し
かし機械独立ソフトウェア・モジュールのサンプル部分
で反映される抽象コード言語は、例示的なものに過ぎな
い。本発明は、特定の抽象コード言語に限らない。従っ
て、抽象コード生成プログラム304は、抽象コード言
語(すなわち、プログラムが実行されるハードウェアに
関する仮定を行わないプログラミング言語)に適合する
抽象コード204も生成する。
【0036】次に、付録Iに示した機械独立ソフトウェ
ア・モジュール部分を参照すると、機械独立ソフトウェ
ア・モジュールは、機械独立ソフトウェア・モジュール
に定義されている手順によって使用され、あるいは返さ
れるデータ・タイプを定義するタイプ定義セクションを
有する。付録Iに示した抽象コード・モジュールのタイ
プ定義セクションは、ワード「Types:」で始ま
る。抽象コードは、リストされた各データ・タイプごと
に、データ・タイプのサイズ(幅)と、データ・タイプ
に符号付けするかどうかを明示的に表す。たとえば、デ
ータ・タイプ0は、幅が32ビットの符号付き整数であ
る。
【0037】タイプ定義セクションの後に、グローバル
変数定義セクションが続く。グローバル変数定義セクシ
ョンには、機械独立ソフトウェア・モジュールに定義さ
れている手順以外の手順(外部手順)からアクセスでき
る機械独立ソフトウェア・モジュールに定義されている
手順で使用される変数が定義される。グローバル変数
は、タイプ定義セクションに定義されているデータ・タ
イプのものである。たとえば、グローバル変数「out
i」は、変数タイプ0として定義される。
【0038】グローバル変数定義セクションの後に、手
順定義セクションが続く。手順定義セクションは、機械
独立ソフトウェア・モジュールに表されている1つまた
は複数の手順に関する定義を含む。サンプル機械独立ソ
フトウェア・モジュールは「.init」、「shel
lsort」、「main」の3つの手順を有する。各
手順定義は、グローバル参照セクション、引数セクショ
ン、命令セクションを含め様々なセクションを含む。グ
ローバル参照セクションは、手順がグローバル変数また
はその他の手順、あるいはその両方に対して行う参照を
リストする。たとえば、手順「.init」はグローバ
ル変数「a」を参照する。引数セクションは、手順を呼
び出すときに手順に渡さなければならない値をリストし
たものである。たとえば、変数「n」は、「shell
sort」手順に関する引数である。この参照は、参照
を行っているPSOF以外のPSOFに定義されている
変数を指すこともある。このような参照を外部参照と呼
ぶ。
【0039】命令セクションは、手順によって実行され
るステップを定義する抽象コード命令をリストしたもの
である。抽象コード命令は、完全なプラットフォーム独
立性を保持するために、ハードウェア固有のレジスタな
ど特定のハードウェア要素の参照を行わない。
【0040】抽象コード204は、前述のようにソース
・コード200から生成することができるが、プログラ
マが直接コード化することもできる。プログラマは、抽
象コード204を直接コード化することによって、ソー
ス・コード200から識別できない情報に基づいて抽象
コード手順を最適化することができる。しかし一般に、
プログラマが最初に、すでに慣れている高レベル言語で
手順を書くことができるようにソース・コード変換プロ
グラム202を使用することが好ましい。
【0041】次に、図2aを参照すると分かるように、
抽象コード204が作成された後、リンク可能抽象コー
ド変換プログラム206は、抽象コード204を抽象コ
ードPSOF204に変換する。リンク可能抽象コード
変換プログラム206は、抽象コード204がメモリ1
04中のリンク化データ構造として表される間、あるい
は、記憶装置107上に機械独立ソフトウェア・モジュ
ールとして保存された後に、抽象コード204を読み取
るように構成することができる。
【0042】抽象コードPSOF208とは、抽象コー
ド204を密閉するPSOFである。好ましい実施形態
では、オペレーティング・システムはUNIX Sys
tem Vである。UNIX System V上のオ
ブジェクト・ファイル用の標準フォーマットは、実行可
能リンク・フォーマットまたは「ELF」として知られ
ている。ELFは、System V,Applica
tion Binary Interface,改訂
版,UNIX System Laboratorie
s,Inc(1992年)4−1ないし4−33ページ
に記載されている。抽象コードPSOF208の内容
と、リンク可能抽象コード変換プログラム206が抽象
コード204を抽象コードPSOF208に変換するた
めの機構を図3bおよび4aに関してさらに詳しく説明
する。
【0043】図4aは、抽象コードPSOF208の主
構成要素を示す。抽象コードPSOF208は一般に、
グローバル変数定義セクション402と、変数及び手順
参照セクション404と、機械コード化入力コード・セ
クション406と、圧縮抽象コード・セクション408
とを含む。典型的な抽象コードPSOFを付録IIにリ
ストする。付録II中の典型的な抽象コードPSOF
は、ELF規格を満たすオブジェクト・ファイルであ
る。付録II中の典型的な抽象コードPSOFは、付録
Iにリストした典型的な抽象コード・プログラムに基づ
いて構成されたものである。
【0044】後述のように、PSOFは、実行可能なフ
ァイルまたはプログラムを作成するために他のPSOF
と組み合わされる。PSOFは、プログラム中の各PS
OFが他のPSOFと通信できるように組み合わされ
る。所与のPSOFに関して、そのような通信はたとえ
ば、他のPSOFに定義されている手順を呼び出すこと
と、他のPSOFに定義されているグローバル変数を参
照することとを含む。
【0045】他のPSOFに定義されている手順を呼び
出すには、その手順を呼び出し、手順にパラメータを渡
し、手順から戻された値を読み取ることが必要である。
他のPSOFに定義されているグローバル変数はたとえ
ば、その変数に関連する記憶位置に値を書き込めるよう
にし、その変数に関連する記憶位置に記憶されている値
を読み取れるようにするために参照される。
【0046】各PSOFは、PSOF間の完全な通信を
イネーブルするために、そのPSOFが他のPSOFと
どのように通信するかと、他のPSOFがそのPSOF
とどのように通信するかに関する情報を提供しなければ
ならない。PSOFは、(1)その手順によってアクセ
スされる他のPSOFに定義されている変数と、(2)
その手順が呼び出す他のPSOFに定義されている手順
を指定することによって、そのPSOFが他のPSOF
とどのように通信するかを示す。PSOFは、(1)他
のPSOFがアクセスできるその変数と、(2)他のP
SOFがその手順を呼び出す方法とを指定することによ
り、他のPSOFがそれと通信する方法を示す。各PS
OFは、ターゲット・プラットフォームの標準リンカに
知られている形式およびフォーマットでこの情報を提供
する。それぞれの異なるプラットフォーム上の標準リン
カが必要とする形式およびフォーマットが一様なもので
はないので、各PSOFがこの情報を表す形式およびフ
ォーマットはプラットフォームに固有のものである。
【0047】前述のように、グローバル変数定義セクシ
ョン402は、他のPSOFがアクセスできる抽象コー
ド204で定義された変数を指定するものであり、プラ
ットフォーム固有のフォーマットで記憶されなければな
らない。付録II中の典型的な抽象コードPSOFのグ
ローバル変数定義セクションは、コメント「Globa
l variable definitions(グロ
ーバル変数定義)」の後に続く。典型的な抽象コードP
SOFのグローバル変数定義セクションの形式及びフォ
ーマットは、UNIX System Vの仕様を満た
すものである。
【0048】変数及び手順参照セクション404は、抽
象コード204で定義された手順がアクセスする他のP
SOFの変数および手順を指定する。変数及び手順参照
セクション404もプラットフォーム固有の形式および
フォーマットで記憶される。付録II中の典型的な抽象
コードPSOFの変数及び手順参照セクションは、コメ
ント」Global variable refere
nces(グローバル変数参照)」の後に続く。典型的
な抽象コードPSOFの変数及び手順参照セクションの
形式およびフォーマットは、UNIX System
Vの仕様を満たすものである。
【0049】機械コード化入力コード・セクション40
6は、他のPSOFが、抽象コード204で定義された
変数にどのようにアクセスするかを指定するものであ
り、やはりプラットフォーム固有のフォーマットで記憶
されなければならない。付録II中の典型的な抽象コー
ドPSOFの機械コード化入力コード・セクションは、
コメント「Trampolines for proc
edures」の後に続く。典型的な抽象コードPSO
Fの機械コード化入力コードの形式およびフォーマット
は、UNIX System Vの仕様を満たすもので
ある。
【0050】大部分のプラットフォームで、PSOF
は、機械固有の命令を使用して、他のPSOFがその手
順を呼び出せるようにする「エントリ点」を指定する。
たとえば、UNIX System V規格を満たすP
SOFは、それが一連の機械固有の命令を使用すること
によって定義した手順のエントリ点を指定しなければな
らない。したがって、付録IIの典型的な抽象コードP
SOFの機械コード化入力コード・セクションは、典型
的な抽象コードPSOFで定義された各手順ごとの一連
の短い機械固有の命令を含む。たとえば、典型的な抽象
コードPSOF中のラベル「init_for_she
ll_sort」とコメント」End of proc
init_for_shell_sort」の間にリ
ストされた機械固有の命令を参照されたい。
【0051】典型的なPSOFは、その手順を実施する
機械固有の命令を含む。したがって、典型的なPSOF
では、機械コード化入力コード・セクションは、手順を
実施する一連の機械命令を含む。
【0052】典型的なPSOFに対して、抽象コードP
SOF208は、その手順を実施する機械固有の命令を
含まない。抽象コードPSOFはその代わりに、その手
順を機械独立的に定義する圧縮抽象コード408を含
む。たとえば、典型的な抽象コードPSOF中のコメン
ト「Instructions for proc i
nit_for_shell_sort」の後に続く命
令を参照されたい。
【0053】前述のように、抽象コードを直接実行する
ことはできない。したがって、抽象コードPSOF20
8の機械コード化入力コード・セクション406は、抽
象コードPSOF208の圧縮抽象コード・セクション
408を直接実行する命令を含まない。機械コード化入
力コード・セクション406はその代わり、実行された
ときに、プロセッサに、実行時に圧縮抽象コード408
を実行する実行ルーチンを呼び出させる機械固有の命令
を含む。
【0054】圧縮抽象コード408は、抽象コード20
4に圧縮フォーマットで含まれるすべての情報を含む。
この情報は、抽象コードPSOF208のサイズ、した
がって、抽象コードPSOF208を組み込んだ実行可
能なファイルのサイズを削減するために圧縮される。一
実施形態によれば、圧縮抽象コード408は、付録II
中の典型的な抽象コードPSOFに示したように圧縮す
ることができる。典型的な抽象コードPSOFは1つの
圧縮形式を示すが、任意のロスレス圧縮技法を使用する
ことができる。しかし、後述のように、手順用の圧縮抽
象コードは、実行時にその手順を初めて呼び出すときに
圧縮解除しなければならない。したがって、圧縮抽象コ
ード408は、比較的顕著な圧縮遅延をもたらすことの
ない圧縮技法によって生成することが好ましい。一実施
形態によれば、抽象コードは、圧縮なしで抽象コードP
SOF208として密閉することができる。未圧縮抽象
コードを使用すると、実行速度がある程度向上し、その
代わりに、抽象コードPSOF208のサイズが増大す
る。
【0055】図3bは、リンク可能抽象コード変換プロ
グラム206をさらに詳しく示すものである。抽象コー
ド変換プログラム206は一般に、グローバル変数処理
装置310と、外部参照処理装置312と、呼出しルー
チン生成装置314と、抽象コード密閉装置316とを
含む。グローバル変数処理装置310、外部参照処理装
置312、呼出しルーチン生成装置314、抽象コード
密閉装置316は、抽象コード204を読み取り、それ
ぞれ、グローバル変数定義セクション402、変数・手
順参照セクション404、機械コード化入力コード・セ
クション406、圧縮抽象コード・セクション408を
生成する。装置310、312、314、316によっ
て実行される処理は、順次実行することも、あるいは同
時に実行することもできる。装置310、312、31
4、316は、プロセッサ102が実行する単一のプロ
セスで実施される。
【0056】次に、図2aに戻ると、抽象コードPSO
F208は、プラットフォームの標準オブジェクト・フ
ォーマットに従っているので、他のPSOFまたは実行
可能ファイルを作成するために標準静的リンカ210に
よって1つまたは複数の他のPSOF212にリンクす
ることができる。UNIX System Vの下で
は、再配置可能なオブジェクト・ファイルと共用オブジ
ェクト・ファイルの2つの一般的なタイプのPSOFが
ある。PSOFの語は、本明細書では、プラットフォー
ムの標準リンカによってサポートされるすべてのオブジ
ェクト・ファイル形式を指定するために使用される。図
2aは、実行可能ファイル214を作成するために抽象
コードPSOF208を他のPSOF212に静的にリ
ンクするケースを示す。UNIX System Vプ
ラットフォームでELFオブジェクト・ファイルを静的
にリンクする標準静的リンカはUNIX LDである。
【0057】図4bは、実行可能ファイル214をさら
に詳しく示すものである。実行可能ファイル214は、
抽象コードPSOF208だけでなく、複数の機械コー
ド化PSOF410、412、416と第2の抽象コー
ドPSOF414とを含む。機械コード化PSOF41
0、412、416は一般に、機械コード化手順を含む
PSOFを表す。これに対して、抽象コードPSOF2
08および414は、抽象コード(または圧縮抽象コー
ド)で定義された手順を含む。
【0058】静的リンカ210は、PSOF間参照を処
理することによって実行可能ファイル214を作成す
る。PSOF間参照には、あるPSOF中の手順から他
のPSOF中の手順への呼出しと、あるPSOFに定義
されている変数への、他のPSOFに定義されている手
順からのアクセスが含まれる。静的リンカ210は、各
PSOFのグローバル変数定義セクション、変数手順及
び参照セクション、機械コード化入力コード・セクショ
ンを検査することによってPSOF間参照を決定し処理
することができる。
【0059】たとえば、抽象コードPSOF208は、
機械コード化PSOF410に定義されている変数を使
用する手順を含むことができ、機械コード化PSOF4
10は、抽象コードPSOF208に定義されている手
順を呼び出すことができる。したがって、静的リンカ2
10は、抽象コードPSOF208中の外部変数参照
を、機械コード化PSOF410に定義されている変数
を指すポインタまたはアドレスで置き換える。外部参照
を処理すると、参照される側の手順(「処理系」)と参
照する側の手順(「クライアント」)の間にリンクが作
成される。機械コード化PSOF410が行う変数参照
を処理することに対応するリンクを矢印418で示す。
【0060】静的リンカ210はまた、機械コード化P
SOF410中の手順呼出しを、抽象コードPSOF2
08中の参照される抽象コード手順に対応する入力コー
ドの呼出しで置き換える。したがって、PSOF中の機
械コード化手順の実行時に、参照される手順が呼び出さ
れたとき、参照される抽象コード手順に対応する入力コ
ードが呼び出される。矢印420は、外部手順呼出しを
処理することによって生じるリンクを示す。
【0061】複数の矢印422、424、426、42
8は、他のPSOF間参照を処理することを示す。通
常、静的リンカ210は、実行可能ファイルに含まれる
PSOF間のすべての参照を処理する。しかし、実行可
能ファイル214内のPSOFは、実行可能ファイル2
14中の他のPSOFに定義されていない変数および呼
出し手順を参照することができる。そのような参照は、
実行時まで未処理のままである。
【0062】再び図2aを参照すると分かるように、前
記で論じたすべての処理ステップは、プログラム実行よ
りも前に実行される。前記のステップが完了した後、記
憶装置107は、少なくとも1つの手順が抽象コードで
定義された実行可能ファイル214を記憶する。
【0063】実行時に、実行可能ファイル214はメモ
リ104にロードされる。同時に、動的リンカ216が
呼び出される。実行可能ファイル214に定義されてい
るプロセスが実行される前に、動的リンカ216は、す
べての未処理の外部変数参照および手順呼出しを処理す
る。実行されるこの動的リンク・プロセスは、静的リン
ク・プロセスに類似しているが、この場合、外部参照は
プログラム実行時にしか処理されず、参照する側および
参照される側の手順を定義するファイルは単一のファイ
ルとして組み合わされる。
【0064】前述のように、抽象コードPSOF208
の機械コード化入力コード・セクション406が、抽象
コードPSOF208に定義されている抽象コード手順
を直接呼び出すことはない。その代わり、機械コード化
入力コード406は、抽象コードPSOF208に定義
されている手順用の機械コードを解釈または生成するル
ーチンを呼び出す。そのような実行ルーチンは、実行時
よりも前に実行可能ファイル214中の抽象コードPS
OF208に静的にリンクすることができる。しかし、
好ましい実施形態では、実行可能ファイル214に抽象
コード実行ルーチン218が動的にリンクされる。
【0065】抽象コード実行ルーチン218は、実行可
能ファイル214中の抽象コード命令に基づいて機械コ
ード命令を実行するルーチンである。後述のように、抽
象コード実行ルーチン218は、即時コード生成プログ
ラムでも、解釈プログラムでも、様々な動作因子に基づ
いて2つ以上のコード生成プログラムまたは解釈プログ
ラムのうちの1つを選択するルーチンでもよい。圧縮抽
象コードを有するPSOFを使用するとき、抽象コード
実行ルーチン218は、初めて呼び出されたときに圧縮
抽象コード手順を圧縮解除し、その後、抽象コード手順
用のコードを解釈または生成する。
【0066】他のオブジェクト・ファイル219は、実
行時に抽象コード実行ルーチン218と共にロードする
ことができる。オブジェクト・ファイル219は、実行
時にプログラム要求に応答して、動作中のプログラムに
ロードされる。オブジェクト・ファイル219は、抽象
コードPSOFと機械コード化PSOFを共に含むこと
ができる。
【0067】抽象コード実行ルーチン218は、実行可
能ファイル214にリンクされた後、実行可能ファイル
214内の抽象コード手順が呼び出されたときに常に呼
び出される。抽象コード実行ルーチンにリンクされた実
行可能ファイル214は単一のプロセス・イメージ22
0を構成する。プロセス・イメージ220を全体的に図
5aに示す。
【0068】図5aを参照すると、実行可能ファイル2
14は、複数の動的リンク512および514によって
実行ルーチン218にリンクされている。動的リンク5
12は一般に、実行可能ファイル214での実行ルーチ
ン218の参照を表す。前述のように、このような参照
は、実行可能ファイル214に含まれる各抽象コード手
順に対応する機械コード化入力コードで行われる。動的
リンク514は一般に、実行ルーチンが実行可能ファイ
ル214に対して行う参照を表す。
【0069】実行時に抽象コード実行ルーチン218が
実行可能ファイル214にリンクされるので、どんなタ
イプの実行ルーチンを使用すべきかに関する決定をその
時間まで遅延させることができる。この決定を遅延させ
る能力によって、ユーザは、実行可能ファイル214を
作成するためにオブジェクト・ファイルが静的にリンク
される時点で知られていない因子に基づいてプロセス・
イメージ220の実行を調整することができる。たとえ
ば、計算活動量が比較的少ない時間中に実行可能ファイ
ル214を実行する場合、ユーザは、実行可能ファイル
214をコード生成ルーチンに動的にリンクさせること
ができる。コード生成プログラムは一般に、実行速度を
向上させるが、その代わりに、資源要件が増大する。こ
れに対して、計算活動量が多いとき、ユーザは実行可能
ファイル214を抽象コード解釈プログラムに動的にリ
ンクさせて資源要件を最小限に抑えることができる。
【0070】抽象コード実行ルーチン218はたとえば
即時コード生成プログラムでよい。したがって、実行可
能ファイル214内の抽象コード手順が呼び出されたと
き、抽象コード実行ルーチン218は、抽象コード手順
の抽象コードを読み取り、抽象コードに応答して機械コ
ードを生成し、その機械コードを実行できるようにただ
ちにプロセッサ102へ送る。代替実施形態によれば、
抽象コード実行ルーチン218は、抽象コード解釈プロ
グラムでよい。したがって、実行可能ファイル214内
の抽象コード手順が呼び出されたとき、抽象コード実行
ルーチン218は、抽象コード手順中の第1の抽象コー
ド命令を読み取り、第1の抽象コード命令に対応する事
前にコンパイルされた一連の機械コード命令にプロセッ
サ102をジャンプさせる。一連の機械コード命令の実
行が完了した後、抽象コード実行ルーチン218は、抽
象コード手順中の第2の命令を読み取り、第2の抽象コ
ード命令に対応する事前にコンパイルされた一連の機械
コード命令にプロセッサ102をジャンプさせる。この
解釈プロセスは、抽象コード手順が終了するまで継続す
る。
【0071】他の実施形態によれば抽象コード実行ルー
チン218は実行制御単位でよい。実行制御単位は、オ
ブジェクト・コードに基づいて機械コードを実行するこ
とはないが、それを実行する2つ以上のルーチンを選択
的に呼び出すように構成されたルーチンを実施する。
【0072】図5bは、実行制御ルーチン516にリン
クされた実行可能ファイル214を示す。実行制御ルー
チン516は、実行ルーチン218と同様に、プロセス
・イメージ220を作成するために実行可能ファイル2
14に動的にリンクされる。しかし、実行制御ルーチン
516は、即時コード生成プログラム524にも抽象コ
ード解釈プログラム522にもリンクされる。
【0073】実行可能ファイル214内の抽象コード手
順が呼び出されたとき、実行制御ルーチン516は、コ
ード生成プログラム524または解釈プログラム522
を呼び出す。どの実行単位を呼び出すかの選択は、各抽
象コード手順に関する実行制御ルーチン516によって
維持される統計に基づいて行うことができる。たとえ
ば、実行制御ルーチン516は、各抽象コード手順が何
度呼び出されたかを追跡することができる。ある抽象コ
ード手順が初めて呼び出されたとき、実行制御ルーチン
516は、解釈プログラム522を呼び出して、抽象コ
ード命令を解釈することができる。抽象コード手順が2
度目に呼び出されたとき、実行制御ルーチン516は、
抽象コード手順が即時コンパイルに必要な空間および時
間を正当化できるほど頻繁に呼び出されるという仮定に
基づいてコード生成プログラム524を呼び出す。生成
された機械コードは、その後に抽象コード手順を呼び出
せるように直接呼び出される。
【0074】実行制御ルーチン516は、コード生成プ
ログラム524と解釈プログラム522のどちらかでは
なく、2つのコード生成方法のうちの1つを選択するよ
うに構成することができる。抽象コード手順が初めて呼
び出されたとき、実行制御ルーチン516は、コード生
成プログラムに、生成されるコードの効率にそれほど留
意せずに迅速にコードを生成させることができる。抽象
コード手順が何度も呼び出されると、実行制御ルーチン
516は、抽象コード手順をより効率的に実施する新し
い一連の機械コードを生成させることができる。一般
に、より効率的なコードを生成するにはより長い時間が
かかる。しかし、手順が頻繁に呼び出される場合、比較
的効率的なコードを生成する際に費やされる追加時間
は、コードによって効率が向上し時間が節約されるため
に補償される。
【0075】呼出しの頻度は、実行制御ルーチン516
がコード実行方法のうちの1つを選択するうえで検討す
る因子の一例に過ぎないことを理解されたい。たとえ
ば、実行制御単位516は、プロセス・イメージのサイ
ズまたは実行時に利用可能な資源の量、あるいはその両
方に基づいて実行方法を選択することもできる。たとえ
ば、プロセス・イメージがすでに非常に大きなものであ
る場合、解釈方法を使用することができる。しかし、大
量のメモリが現在未使用である場合、機械コード生成方
法を選択することができる。
【0076】一実施形態によれば、実行制御単位は、抽
象コード手順が呼び出された頻度を示す履歴データを記
憶装置107上に記憶する。このような状況の下で、実
行制御単位は最初、前の実行時セッションからの統計に
基づいて実行方法を選択する。たとえば、あるセッショ
ン中に所与の抽象コード手順が頻繁に呼び出される場
合、実行制御ルーチン516は、所与の抽象コード手順
が頻繁に呼び出されることを示す履歴データを記憶する
ことができる。したがって、その後、実行可能なファイ
ル214が実行されるときに、実行制御ルーチン516
は、最初に呼び出されたときに、所与の抽象コード手順
に対して非常に効率的なソース・コードを生成させるこ
とができる。
【0077】図2aに示したプログラミング・ツール
を、本明細書では機能単位として説明している。このよ
うな機能単位は、様々な方法で実施することができる。
たとえば、各機能単位は、別々のハード配線回路で実施
することができる。すべての機能を単一の回路としてハ
ード配線することもできる。好ましい実施形態では、こ
れらの機能はハード配線されない。その代わり、これら
の機能単位は、前述の機能を実行する命令を含むソフト
ウェア・モジュールで実施される。図2bは、本発明の
ソフトウェア実施態様を示す。
【0078】図2bを参照すると、メイン・メモリ10
4は、バス101を介してプロセッサ102がアクセス
できる複数のソフトウェア・モジュールを記憶する。こ
れらのソフトウェア・モジュールは最初、大容量記憶装
置107上に記憶し、実行の前にバス101を介してメ
イン・メモリ104にロードされる。プロセッサ102
がソフトウェア・モジュールを実行する際、ソフトウェ
ア・モジュールに定義されている機能が実行される。
【0079】メイン・メモリ104は、プロセッサ10
2が命令の実行に応答して処理するデータ構造や値など
他の情報240用の記憶域も含む。たとえば、メイン・
メモリ104に記憶される他の情報240は、プロセッ
サ102がソース・コード変換プログラム命令230を
実行している間、ソース・コード200を含むことがで
きる。
【0080】たとえば、図2aに示したツールを実施す
るために、メイン・メモリ104は、実行されたとき
に、ソース・コード変換プログラム202の機能を実行
するソース・コード変換プログラム命令230と、実行
されたときに、リンク可能抽象コード変換プログラム2
06の機能を実行するリンク可能抽象コード変換プログ
ラム命令232と、実行されたときに、静的リンカ21
0の機能を実行する静的リンカ命令234と、実行され
たときに、動的リンカ216の機能を実行する動的リン
カ命令236を記憶することができる。通常、メイン・
メモリ104は、すべてのソフトウェア・モジュールを
同時に含むのではなく、プロセッサ102が現在実行し
ている命令を含むソフトウェア・モジュールしか記憶し
ない。
【0081】機能単位をハード配線回路によって実施す
るとき、各機能単位に対応する回路は、その回路が通信
する他の回路に導体によって物理的に接続される。ソフ
トウェアによって実施される実施形態では、同じ回路
(プロセッサ102内の回路)がすべてのソフトウェア
・モジュールの機能を実行する。しかし、ソフトウェア
によって実施される実施形態でも、2つの機能単位間で
情報が伝達されるとき、その2つの機能単位は「結合さ
れている」とみなされる。
【0082】図6は、ソース・コードに基づいてプロセ
ス・イメージを生成するプロセスのフローチャートを示
す。このプロセスは、ソース・コードに基づいて抽象コ
ードを作成するステップ(ステップ600)、抽象コー
ドに基づいて抽象コードPSOFを作成するステップ
(ステップ602)、抽象コードPSOFを含む実行可
能ファイルを作成するステップ(ステップ604)、実
行可能ファイルに基づいてプロセス・イメージを作成す
るステップ(ステップ606)の各一般ステップを含
む。
【0083】ソース・コードに応答して抽象コードを作
成するために、ステップ608で、ソース・コードが解
析され、抽象意味グラフが作成される。ステップ610
で、抽象意味グラフに基づいて抽象コードが生成され
る。前述のように、抽象コードは最初、リンク化ファイ
ル構造の形をとる。
【0084】抽象コードに基づいて抽象コードPSOF
を作成するために、グローバル変数定義セクションが生
成され(ステップ612)、外部変数及び手順参照セク
ションが生成され(ステップ614)、機械コード化入
力コードが生成され(ステップ616)、圧縮抽象コー
ド・セクションが生成される(ステップ622)。圧縮
抽象コード・セクションを生成するには、抽象コードを
圧縮するステップ620と、圧縮抽象コードを抽象コー
ドPSOFとして密閉するステップ622が含まれる。
これらのステップは、抽象コード・データ構造をメモリ
から直接読み取ることによって実行することも、あるい
は、前に記憶装置に書き込まれた機械独立ソフトウェア
・モジュールを読み取ることによって実行することもで
きる。
【0085】実行可能ファイルを作成するために、ステ
ップ604で、ステップ602で作成された抽象コード
PSOFが他のPSOFに静的にリンクされる。前述の
ように、このステップでは、あるPSOF中の手順から
他のPSOF中の手順への呼出しが処理され(ステップ
626)、あるPSOF中の手順が、他のPSOFに定
義されている変数に対して行う参照が処理される(ステ
ップ628)。
【0086】前述のステップは、実行時よりも前に実行
することが好ましい。実行時には、実行可能ファイルに
定義されているプロセスを実施するプロセス・イメージ
が作成される。プロセス・イメージは、実行可能ファイ
ルを実行ルーチンに動的にリンクすることによって作成
される(ステップ630)。実行ルーチンとは、抽象コ
ードに定義されている手順を実行する任意のルーチンで
ある。たとえば、実行ルーチンは、解釈プログラムで
も、即時コード生成プログラムでも、解釈プログラムま
たは即時コード生成プログラムを選択的に呼び出す実行
制御ルーチンでもよい。実行可能ファイルは、他の外部
参照手順にも動的にリンクされる(ステップ632)。
【0087】プロセス・イメージは、作成された後、そ
れに定義されているプロセスを実行するように実行され
る。プロセス・イメージの実行時に、イメージ内に抽象
コードで定義された手順を呼び出すことができる。抽象
コードを直接実行することはできないので、抽象コード
で定義された手順を機械コード化手順と同様に処理する
ことはできない。図7は、プロセス・イメージ中に圧縮
抽象コードで表された手順の呼出しを処理する方法のフ
ローチャートを示す。
【0088】ステップ700で、抽象コード・プロセス
に対応する機械コード化入力コードが実行される。ステ
ップ701で、機械コード化入力コードが実行ルーチン
を呼び出す。本発明の例で、実行ルーチンとは、抽象コ
ード・プロセッサが呼び出された回数に基づいて実行方
法を選択する実行制御単位である。したがってステップ
720で、実行制御単位は、特定の抽象コード手順が呼
び出された回数がN回よりも少ないかどうかを判定す
る。その特定の抽象コード手順が呼び出された回数がN
回よりも少ない場合、制御がステップ702に移る。そ
うでない場合、制御はステップ710に移る。
【0089】ステップ702で、実行制御単位は、その
特定の抽象コード手順が呼び出されたのがこれが初めて
であるかどうかを判定する。抽象コード手順が呼び出さ
れたのがこれが初めてである場合、制御ステップ703
に移り、そうでない場合、制御はステップ704に移
る。
【0090】抽象コード手順が呼び出されたのがこれが
初めてである場合、抽象コード・ルーチンを定義する抽
象コードが圧縮解除される。この点で、ステップ610
で形成されたリンク化抽象コード・データ構造が再作成
される。
【0091】ステップ704で、外部制御装置は、抽象
コード解釈プログラム・ルーチンを呼び出して、抽象コ
ード・データ構造を処理する。ステップ706で、解釈
プログラム・ルーチンは、抽象コード命令に応答して、
事前にコンパイルされたコードのブロックに実行をジャ
ンプさせることによって、抽象コードで定義されたプロ
セスを実行する。抽象コード手順が完全に実行された
後、制御は、抽象コード手順を呼び出した手順に戻る
(ステップ708)。
【0092】抽象コード手順がN回目に呼び出されると
きと、それ以後に呼び出されるすべてのときに、制御は
ステップ720からステップ710に移る。ステップ7
10で、実行制御単位は、抽象コード手順が呼び出され
るのがこれでN回目かどうかを判定する。この手順が呼
び出されるのがこれでN回目であると仮定すると、制御
はステップ711に移る。
【0093】ステップ711で、抽象コード手順に対応
する圧縮抽象コードが圧縮解除されてリンク化抽象コー
ド・データ構造が作成される。このステップ711が必
要なのは、この手順が初めて呼び出されたときにステッ
プ703で作成された抽象コード・データ構造がすでに
処理されている場合だけである。ステップ712で、実
行制御単位はコード生成ルーチンを呼び出す。ステップ
714で、コード生成ルーチンは、抽象コード手順に定
義されているプロセスを実施する機械コードを生成す
る。機械コードが生成された後、ステップ716で機械
コードが実行される。この手順に対応する機械コードの
実行が完了した後、制御は呼出し側手順に戻る(ステッ
プ708)。
【0094】抽象コード手順が呼び出された回数がN+
1回以上になったとき、この手順用の機械コードはすで
に生成されている。したがって、この手順が呼び出され
た回数がN回を超えたことが判定された(ステップ71
0)後、制御は直接、ステップ716に移り、対応する
機械コードが実行される。
【0095】図7に示したプロセスは例示的なものに過
ぎない。抽象コード手順を実行する実際のプロセスは、
処理系ごとに異なるものでよい。たとえば、実行ルーチ
ンは単なる解釈プログラムでもコード生成プログラムで
もよい。実行ルーチンは、抽象コード手順が初めて呼び
出されたときにより非効率的な機械コードを生成させ、
抽象コード手順が呼び出された回数が所定の回数を超え
たときにより効率的な機械コードを生成させる実行制御
単位でもよい。実行制御単位は、前のセッション中に記
憶された情報に基づいて抽象コード実行方法を選択する
ように構成することもできる。
【0096】本発明の特定の実施形態について説明した
が、本開示によって、当業者には様々な修正および代替
が明らかになろう。そのような修正および代替は、本発
明の範囲内のものであり、添付の請求の範囲によってカ
バーされるものである。
【図面の簡単な説明】
【図1】 本発明の好ましい実施形態を実施することが
できるコンピュータ・システムのブロック図である。
【図2】 本発明の実施形態によるソフトウェア開発を
示すデータ流れ図(a)と、メモリに記憶されたソフト
ウェア・モジュールとしての図2aのツールを示すブロ
ック図(b)である。
【図3】 図2aのソース・コード変換器をさらに詳し
く示すブロック図(a)と、図2aのリンク可能な抽象
コード変換器を示すブロック図(b)である。
【図4】 本発明の一実施形態による抽象コード・プラ
ットフォーム標準オブジェクト・ファイルの構造を示す
ブロック図(a)と、図4aの抽象コード・プラットフ
ォーム標準オブジェクト・ファイルを含む静的にリンク
された実行ファイルを示すブロック図(b)である。
【図5】 本発明の実施形態による抽象コード実行ルー
チンに動的にリンクされた実行ルーチンを示すブロック
図(a)と、本発明の代替実施形態による抽象コード実
行ルーチンに動的にリンクされた実行制御ルーチンを示
すブロック図(b)である。
【図6】 本発明の一実施形態によってソース・コード
から処理イメージを作成するステップを示すフローチャ
ートである。
【図7】 実行時に抽象コード手順を実行する方法を示
すフローチャートである。
【符号の説明】
100 コンピュータ・システム 101 バス 102 プロセッサ 104 動的記憶装置 107 データ記憶装置 121 表示装置 200 ソース・コード 204 機械独立コード(抽象コード) 206 リンク可能抽象コード変換プログラム 208 抽象コードPSOF 300 パーサ 302 抽象意味グラフ 304 抽象コード生成プログラム 310 グローバル変数処理装置 312 外部参照処理装置 314 呼出しルーチン生成装置 316 抽象コード密閉装置 402 グローバル変数定義セクション 404 変数及び手順参照セクション 406 機械コード化入力コード・セクション 408 圧縮抽象コード・セクション 410 機械コード化PSOF
───────────────────────────────────────────────────── フロントページの続き (72)発明者 セオドア・シイ・ゴールドスティン アメリカ合衆国 94306 カリフォルニア 州・パロ アルト・ラ パラ アヴェニ ュ・875

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 プラットフォーム標準オブジェクト・フ
    ァイルを生成する方法において、 a)少なくとも1つの手順を定義する機械独立ソフトウ
    ェア・モジュールを提供するステップと、 b)前記機械独立ソフトウェア・モジュールにグローバ
    ル変数が定義されているかどうかを判定するために前記
    抽象コードを分析するステップと、 c)前記機械独立ソフトウェア・モジュールにグローバ
    ル変数が定義されている場合に、 c1)前記グローバル変数の定義のリストを生成し、 c2)前記プラットフォーム標準オブジェクト・ファイ
    ルに前記定義リストを記憶するステップと、 d)前記少なくとも1つの手順が外部変数または外部手
    順を参照するかどうかを判定するために前記抽象コード
    を分析するステップと、 e)前記少なくとも1つの手順が外部変数または外部手
    順を参照する場合に、 e1)前記外部変数または外部手順を示す記号参照のリ
    ストを生成し、 e2)前記プラットフォーム標準オブジェクト・ファイ
    ルに前記記号参照リストを記憶するステップと、 f)クライアントが少なくとも1つの手順を呼び出した
    ときに実行ルーチンを呼び出す機械命令のシーケンスを
    生成するステップと、 g)前記プラットフォーム標準オブジェクト・ファイル
    に前記機械命令シーケンスを記憶するステップと、 h)前記プラットフォーム標準オブジェクト・ファイル
    に前記抽象コードを記憶するステップとを含むことを特
    徴とする方法。
  2. 【請求項2】 さらに、前記プラットフォーム標準オブ
    ジェクト・ファイルに前記抽象コードを記憶する前記ス
    テップよりも前に前記抽象コードを圧縮するステップを
    含むことを特徴とする請求項1に記載の方法。
  3. 【請求項3】 ソフトウェア・モジュールに定義されて
    いる第2の手順を呼び出す第1のプラットフォーム標準
    オブジェクト・ファイルで実施される第1の手順を含む
    コンピュータ・プログラムをプラットフォーム上で実行
    する方法において、 a)前記ソフトウェア・モジュールに基づいて、コード
    を含む第2のプラットフォーム標準オブジェクト・ファ
    イルを生成するステップと、 b)前記第1のプラットフォーム標準オブジェクト・フ
    ァイルを前記第2のプラットフォーム標準オブジェクト
    ・ファイルに静的にリンクするステップと、 c)前記プログラムの実行時に、前記第2のプラットフ
    ォーム標準オブジェクト・ファイルを実行ルーチンに動
    的にリンクするステップと、 d)前記第1の手順が前記第2の手順を呼び出したとき
    に前記実行ルーチンを呼び出すステップと、 e)前記実行ルーチンに、前記第2のプラットフォーム
    標準オブジェクト・ファイル中の前記コードに応答して
    前記第2の手順を実行させるステップとを含むことを特
    徴とする方法。
  4. 【請求項4】 記憶装置に記憶されている、少なくとも
    1つの手順を定義する抽象コードを備えた機械独立ソフ
    トウェア・モジュールからプラットフォーム標準オブジ
    ェクト・ファイルを生成する装置において、 前記機械独立ソフトウェア・モジュールにグローバル変
    数が定義されているかどうかを判定するために前記抽象
    コードを分析し、前記機械独立ソフトウェア・モジュー
    ルにグローバル変数が定義されている場合に、前記グロ
    ーバル変数の定義のリストを生成し、前記プラットフォ
    ーム標準オブジェクト・ファイルに前記定義リストを記
    憶するグローバル変数処理装置と、 前記少なくとも1つの手順が外部変数または外部手順を
    参照するかどうかを判定するために前記抽象コードを分
    析し、前記少なくとも1つの手順が外部変数または外部
    手順を参照する場合に、前記外部変数または外部手順を
    示す記号参照のリストを生成し、前記プラットフォーム
    標準オブジェクト・ファイルに前記記号参照リストを記
    憶する外部参照処理装置と、 クライアントが少なくとも1つの手順を呼び出したとき
    に実行ルーチンを呼び出す機械命令のシーケンスを生成
    し、前記プラットフォーム標準オブジェクト・ファイル
    に前記機械命令シーケンスを記憶する呼出しルーチン生
    成装置と、 前記プラットフォーム標準オブジェクト・ファイルに前
    記抽象コードを記憶する抽象コード密閉装置とを備える
    ことを特徴とする装置。
  5. 【請求項5】 さらに、 プロセッサと、 前記プロセッサに結合されたメモリとを備え、 前記グローバル変数処理装置、前記外部参照処理装置、
    前記呼出しルーチン生成装置、前記抽象コード密閉装置
    が、それぞれ前記メモリに記憶されている複数の命令を
    前記プロセッサに実行させることによって実施されるこ
    とを特徴とする請求項4に記載の装置。
JP7350069A 1994-12-23 1995-12-25 機械独立コードを含むプラットフォーム標準オブジェクト・ファイルを生成する方法および装置 Withdrawn JPH08339304A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/363743 1994-12-23
US08/363,743 US5590331A (en) 1994-12-23 1994-12-23 Method and apparatus for generating platform-standard object files containing machine-independent code

Publications (1)

Publication Number Publication Date
JPH08339304A true JPH08339304A (ja) 1996-12-24

Family

ID=23431532

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7350069A Withdrawn JPH08339304A (ja) 1994-12-23 1995-12-25 機械独立コードを含むプラットフォーム標準オブジェクト・ファイルを生成する方法および装置

Country Status (6)

Country Link
US (1) US5590331A (ja)
EP (1) EP0718760B1 (ja)
JP (1) JPH08339304A (ja)
CA (1) CA2165755A1 (ja)
DE (1) DE69525915T2 (ja)
DK (1) DK0718760T3 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145078A (en) * 1997-12-02 2000-11-07 Nec Corporation Data processing apparatus and method of starting-up extensions

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138140A (en) * 1995-07-14 2000-10-24 Sony Corporation Data processing method and device
JPH0934725A (ja) * 1995-07-15 1997-02-07 Nec Corp 言語処理装置及び言語処理方法
US5923882A (en) * 1995-08-29 1999-07-13 Silicon Graphics, Inc. Cross-module optimization for dynamically-shared programs and libraries
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
US6021272A (en) * 1995-10-04 2000-02-01 Platinum Technology, Inc. Transforming and manipulating program object code
US6151618A (en) * 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
GB9600823D0 (en) * 1996-01-16 1996-03-20 British Telecomm Distributed processing
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US5815720A (en) * 1996-03-15 1998-09-29 Institute For The Development Of Emerging Architectures, L.L.C. Use of dynamic translation to collect and exploit run-time information in an optimizing compilation system
US5835773A (en) * 1996-04-17 1998-11-10 Hewlett-Packard, Co. Method for achieving native performance across a set of incompatible architectures using a single binary file
US5794049A (en) * 1996-06-05 1998-08-11 Sun Microsystems, Inc. Computer system and method for executing architecture specific code with reduced run-time memory space requirements
US6014134A (en) * 1996-08-23 2000-01-11 U S West, Inc. Network-based intelligent tutoring system
EP0979449A4 (en) * 1996-08-28 2005-08-24 Wind River Systems Inc TOOL FOR DIAGNOSING SOFTWARE DISTRIBUTED BETWEEN SEVERAL PROCESSORS
JP2000514584A (ja) 1996-10-25 2000-10-31 シュルンベルジェ システーム 高級プログラミング言語を用いたマイクロコントローラ
US6047280A (en) 1996-10-25 2000-04-04 Navigation Technologies Corporation Interface layer for navigation system
US5923878A (en) * 1996-11-13 1999-07-13 Sun Microsystems, Inc. System, method and apparatus of directly executing an architecture-independent binary program
DE69728640T2 (de) * 1997-02-21 2005-04-21 Alcatel Sa Verfahren zur Erzeugung eines Rechnerprogrammes
US5966537A (en) * 1997-05-28 1999-10-12 Sun Microsystems, Inc. Method and apparatus for dynamically optimizing an executable computer program using input data
US6141697A (en) * 1997-06-25 2000-10-31 Unisys Corp. System and method for performing external procedure calls in heterogeneous computer systems utilizing program stacks
US5920725A (en) * 1997-07-02 1999-07-06 Adaptivity Inc. Run-time object-synthesis and transparent client/server updating of distributed objects using a meta server of all object descriptors
DE69726140T2 (de) 1997-09-09 2004-08-26 Motorola Semiconducteurs S.A. Verfahren und System zum Ausführen von Befehlen in einem Mikroprozessor
US5995754A (en) * 1997-10-06 1999-11-30 Sun Microsystems, Inc. Method and apparatus for dynamically optimizing byte-coded programs
US6317796B1 (en) 1997-10-06 2001-11-13 Sun Microsystems, Inc. Inline database for receiver types in object-oriented systems
JP3377419B2 (ja) * 1997-11-11 2003-02-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 命令列生成方法及び装置、変換方法、及びコンピュータ
US5911073A (en) * 1997-12-23 1999-06-08 Hewlett-Packard Company Method and apparatus for dynamic process monitoring through an ancillary control code system
JP3631896B2 (ja) * 1997-12-26 2005-03-23 富士通株式会社 オブジェクト変換装置及びオブジェクト変換方法及びプログラム記録媒体
US6654954B1 (en) * 1998-02-17 2003-11-25 International Business Machines Corporation Computer system, program product and method utilizing executable file with alternate program code attached as a file attribute
US6110226A (en) * 1998-02-19 2000-08-29 Cygnus Solutions Java development environment using optimizing ahead-of-time compiler
US6493870B1 (en) * 1998-03-20 2002-12-10 Sun Microsystems, Inc. Methods and apparatus for packaging a program for remote execution
US6199196B1 (en) * 1998-03-20 2001-03-06 Sun Microsystems, Inc. Methods and apparatus for linking a program for remote execution
US6148437A (en) * 1998-05-04 2000-11-14 Hewlett-Packard Company System and method for jump-evaluated trace designation
US6189141B1 (en) 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6164841A (en) * 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
US6289506B1 (en) * 1998-06-30 2001-09-11 Intel Corporation Method for optimizing Java performance using precompiled code
US6768996B1 (en) * 1998-10-08 2004-07-27 Hewlett-Packard Development Company, L.P. System and method for retrieving an abstracted portion of a file without regard to the operating system of the current host computer
JP4130713B2 (ja) * 1998-10-21 2008-08-06 松下電器産業株式会社 プログラム変換装置
US6282703B1 (en) * 1998-10-29 2001-08-28 International Business Machines Corporation Statically linking an application process with a wrapper library
US7181486B1 (en) 1998-12-07 2007-02-20 Network Ice Corporation Method and apparatus for remote installation of network drivers and software
EP1149339A1 (en) 1998-12-09 2001-10-31 Network Ice Corporation A method and apparatus for providing network and computer system security
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6820255B2 (en) * 1999-02-17 2004-11-16 Elbrus International Method for fast execution of translated binary code utilizing database cache for low-level code correspondence
US6601104B1 (en) 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6622300B1 (en) 1999-04-21 2003-09-16 Hewlett-Packard Development Company, L.P. Dynamic optimization of computer programs using code-rewriting kernal module
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
US7346929B1 (en) 1999-07-29 2008-03-18 International Business Machines Corporation Method and apparatus for auditing network security
AU7829400A (en) * 1999-10-13 2001-04-23 Conexant Systems, Inc. Compressed storage and transmission of high-level computer languages
US8006243B2 (en) 1999-12-07 2011-08-23 International Business Machines Corporation Method and apparatus for remote installation of network drivers and software
US7213247B1 (en) * 2000-01-10 2007-05-01 Wind River Systems, Inc. Protection domains for a computer operating system
WO2001084775A2 (en) 2000-04-28 2001-11-08 Internet Security Systems, Inc. System and method for managing security events on a network
EP1277326A2 (en) 2000-04-28 2003-01-22 Internet Security Systems, Inc. Method and system for managing computer security information
US7574740B1 (en) 2000-04-28 2009-08-11 International Business Machines Corporation Method and system for intrusion detection in a computer network
US6907531B1 (en) 2000-06-30 2005-06-14 Internet Security Systems, Inc. Method and system for identifying, fixing, and updating security vulnerabilities
US7162649B1 (en) 2000-06-30 2007-01-09 Internet Security Systems, Inc. Method and apparatus for network assessment and authentication
US7168069B1 (en) * 2000-07-12 2007-01-23 Stmicroelectronics, Inc. Dynamic generation of multimedia code for image processing
US7093239B1 (en) * 2000-07-14 2006-08-15 Internet Security Systems, Inc. Computer immune system and method for detecting unwanted code in a computer system
US7178166B1 (en) 2000-09-19 2007-02-13 Internet Security Systems, Inc. Vulnerability assessment and authentication of a computer by a local scanner
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US9027121B2 (en) 2000-10-10 2015-05-05 International Business Machines Corporation Method and system for creating a record for one or more computer security incidents
US7146305B2 (en) 2000-10-24 2006-12-05 Vcis, Inc. Analytical virtual machine
US8312429B2 (en) * 2000-11-10 2012-11-13 Oracle International Corporation Cell based data processing
JP2002169696A (ja) * 2000-12-04 2002-06-14 Mitsubishi Electric Corp データ処理装置
US6964039B2 (en) * 2000-12-13 2005-11-08 Esmertec Ag Method to create optimized machine code through combined verification and translation of JAVA™ bytecode
US7130466B2 (en) 2000-12-21 2006-10-31 Cobion Ag System and method for compiling images from a database and comparing the compiled images with known images
US20020147803A1 (en) 2001-01-31 2002-10-10 Dodd Timothy David Method and system for calculating risk in association with a security audit of a computer network
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US6978451B2 (en) * 2001-05-31 2005-12-20 Esmertec Ag Method for fast compilation of preverified JAVA bytecode to high quality native machine code
AU2002344308A1 (en) * 2001-05-31 2002-12-09 Internet Security Systems, Inc. Method and system for implementing security devices in a network
US7237264B1 (en) 2001-06-04 2007-06-26 Internet Security Systems, Inc. System and method for preventing network misuse
US7657419B2 (en) 2001-06-19 2010-02-02 International Business Machines Corporation Analytical virtual machine
US20030001894A1 (en) * 2001-06-29 2003-01-02 International Business Machines Corporation Method and apparatus for dynamically determining actions to perform for an object
US8156471B2 (en) * 2001-11-09 2012-04-10 Oracle International Corporation Multi-language execution method
EP1456752A1 (en) * 2001-11-14 2004-09-15 Exegesys, Inc. Method and system for software application development and customizable runtime environment
US7673137B2 (en) 2002-01-04 2010-03-02 International Business Machines Corporation System and method for the managed security control of processes on a computer system
US7296262B2 (en) * 2002-01-07 2007-11-13 International Business Machines Corporation Data processing system, method, and computer program product for generating a generic compilation interface from object-oriented code
US7117484B2 (en) * 2002-04-16 2006-10-03 International Business Machines Corporation Recursive use of model based test generation for middleware validation
US7370360B2 (en) 2002-05-13 2008-05-06 International Business Machines Corporation Computer immune system and method for detecting unwanted code in a P-code or partially compiled native-code program executing within a virtual machine
US7210132B2 (en) * 2002-05-30 2007-04-24 Microsoft Corporation Interoperability of objects between various platforms
US7065743B2 (en) * 2002-07-11 2006-06-20 International Business Machines Corporation Apparatus and method for caching analyzed program information
US7228529B2 (en) * 2002-08-27 2007-06-05 International Business Machines Corporation Restructuring computer programs
US7913303B1 (en) 2003-01-21 2011-03-22 International Business Machines Corporation Method and system for dynamically protecting a computer system from attack
US20050081218A1 (en) * 2003-08-26 2005-04-14 Acott Troy Steven Configurable simulation of virtual machine behavior
US7657938B2 (en) 2003-10-28 2010-02-02 International Business Machines Corporation Method and system for protecting computer networks by altering unwanted network data traffic
US6876314B1 (en) 2004-02-18 2005-04-05 Robocoder Corporation Self-generating automatic code generator
US20050198628A1 (en) * 2004-03-04 2005-09-08 Graham Christoph J. Creating a platform specific software image
US8383959B2 (en) * 2005-04-18 2013-02-26 Stephen Burns Kessler Metamaterial spheric alignment mechanism
US7707275B2 (en) * 2005-04-20 2010-04-27 Cisco Technology, Inc. Method and system for validating a CLI/configlet on a given image
US7496580B2 (en) * 2006-04-11 2009-02-24 Honeywell International Inc. Apparatus and method for procedural operations development and distribution
US8645938B2 (en) * 2006-11-17 2014-02-04 International Business Machines Corporation System and method for replacing code
US8656381B2 (en) * 2006-12-07 2014-02-18 International Business Machines Corporation Presenting machine instructions in a machine-independent tree form suitable for post-link optimizations
US20080235658A1 (en) * 2007-03-21 2008-09-25 Asaf Adi Code generation for real-time event processing
CN102016866B (zh) * 2008-03-04 2014-05-21 苹果公司 基于授予承载商的权利授权在设备上执行软件代码的系统和方法
US20100088686A1 (en) * 2008-10-06 2010-04-08 Microsoft Corporation Programming language with extensible syntax
US20140075411A1 (en) * 2012-09-07 2014-03-13 Newport Systems Corporation Meta-Languages For Creating Integrated Business Applications
US10055207B2 (en) * 2013-03-13 2018-08-21 Vmware, Inc. Persistent variables in programming languages
US11681508B2 (en) * 2020-08-24 2023-06-20 Cisco Technology, Inc. Source code analysis to map analysis perspectives to events
US11442708B2 (en) * 2020-09-17 2022-09-13 Cisco Technology, Inc. Compiler-generated alternate memory-mapped data access operations

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4672532A (en) * 1982-06-14 1987-06-09 Tektronix, Inc. Software/hardware integration control system
US4667290A (en) * 1984-09-10 1987-05-19 501 Philon, Inc. Compilers using a universal intermediate language
US5051893A (en) * 1988-07-11 1991-09-24 Digital Equipment Corporation System for processing data to facilitate the creation of executable images
DE68926956T2 (de) * 1988-09-20 1997-03-27 Digital Equipment Corp Anordnung zur teilung eines generischen kodes für ein digitales datenverarbeitungssystem
US5204960A (en) * 1990-01-08 1993-04-20 Microsoft Corporation Incremental compiler
US5339419A (en) * 1990-06-25 1994-08-16 Hewlett-Packard Company ANDF compiler using the HPcode-plus compiler intermediate language
JP3602857B2 (ja) * 1991-04-23 2004-12-15 株式会社日立製作所 多機種対応型情報処理システム、および、方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145078A (en) * 1997-12-02 2000-11-07 Nec Corporation Data processing apparatus and method of starting-up extensions

Also Published As

Publication number Publication date
DK0718760T3 (da) 2002-06-17
EP0718760A3 (en) 1997-04-02
EP0718760B1 (en) 2002-03-20
CA2165755A1 (en) 1996-06-24
EP0718760A2 (en) 1996-06-26
US5590331A (en) 1996-12-31
DE69525915D1 (de) 2002-04-25
DE69525915T2 (de) 2002-11-07

Similar Documents

Publication Publication Date Title
JPH08339304A (ja) 機械独立コードを含むプラットフォーム標準オブジェクト・ファイルを生成する方法および装置
US5586328A (en) Module dependency based incremental compiler and method
USRE38104E1 (en) Method and apparatus for resolving data references in generated code
US5854932A (en) Compiler and method for avoiding unnecessary recompilation
US6381737B1 (en) Automatic adapter/stub generator
US5247678A (en) Load time linker for software used with a multiprocessor system
US7877741B2 (en) Method and corresponding apparatus for compiling high-level languages into specific processor architectures
US6002874A (en) Method and system for translating goto-oriented procedural languages into goto-free object oriented languages
US5606697A (en) Compiler system for language processing program
EP1145120B1 (en) Generating compiled programs for interpretive runtime environments
US7823139B2 (en) Method and system for translating programming languages
EP0667573A1 (en) Incorporation of services written in one operating system environment into another operating system environment
US6986129B2 (en) System and method for java preprocessor
US7207036B2 (en) Preprocessing of interfaces to allow fast call through
US11429358B2 (en) Representing asynchronous state machine in intermediate code
Franz Run-time code generation as a central system service
US20020073133A1 (en) Register allocation method and software development method for various execution environments and LSI for executing developed software
MacLaren Inline routines in VAXELN Pascal
JPH11212807A (ja) プログラム実行方法
JP2977642B2 (ja) Fortranコンパイル処理装置
JP3424596B2 (ja) シンボル参照情報のキャッシュ方法ならびに装置
CN112162736A (zh) 一种在相同cpu指令集设备间实现软件跨平台二进制兼容的装置和方法
Cooper et al. Achieving Incremental Compilation through Fine‐grained Builds
Zhang et al. Interpreted Programming languages
Van UQBT: Adaptable Binary Translation at Low Cost

Legal Events

Date Code Title Description
A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20040901