JPH11232138A - エミュレーション方法 - Google Patents

エミュレーション方法

Info

Publication number
JPH11232138A
JPH11232138A JP10330725A JP33072598A JPH11232138A JP H11232138 A JPH11232138 A JP H11232138A JP 10330725 A JP10330725 A JP 10330725A JP 33072598 A JP33072598 A JP 33072598A JP H11232138 A JPH11232138 A JP H11232138A
Authority
JP
Japan
Prior art keywords
user process
code
user
execution
memory
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
JP10330725A
Other languages
English (en)
Other versions
JPH11232138A5 (ja
Inventor
Jr James S Mattson
ジェームズ・エス・マトソン・ジュニア
Lacky V Shah
ラッキー・ブイ・シャ
B Busby William
ウィリアム・ビー・バズビー
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH11232138A publication Critical patent/JPH11232138A/ja
Publication of JPH11232138A5 publication Critical patent/JPH11232138A5/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Programmable Controllers (AREA)

Abstract

(57)【要約】 【課題】動的なソフトウェア開発ツールによってソフト
ウェア開発のプロセスを改良するための方法と装置を提
供する。 【解決手段】オリジナルのユーザ・プロセスの制御の下
でエミュレーション・ツールの実行を生じさせ、ユーザ
・プロセス命令の実行を保持する。コンピュータメモリ
の中のエミュレーション・ツールの実行を管理し、エミ
ュレーション・ツールの実行を指示するためにユーザ・
プロセス・コードをデータとして使用する。モニタリン
グおよびプロフィールのツール、プログラム解析ツー
ル、シミュレーション・ツールおよびソフトウェア・デ
バッギング・ツールなどの他のソフトウェア開発ツール
の使用を可能にする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明はソフトウェア開発
ツールに関連し、より具体的には,コンピュータソフト
ウェアの開発と維持を助ける動的なインストルメンテー
ション、エミュレーション、プロフィール、およびモニ
タリングツールに関する。
【0002】
【従来の技術】コンピュータソフトウェアを開発し維持
することは難しく、エラーを生じやすい技術として認識
されている。アプリケーション・ソフトウェアの開発者
およびソフトウェアインテグレータは、それらのソフト
ウェアを最適化するための能力を提供するコンパイラ技
術ツールを探している。メモリアレイ境界条件を超えた
ときを判断したりCおよびC++プログラミング言語におい
てメモリが初期化されていないときを判断するような問
題が存在し続け、ソフトウェアプログラム・モニタリン
グツールの改良が求められている。
【0003】従来技術のソフトウェア開発ツールの1つ
の問題は、そのようなツールがインストルメンテーショ
ン(instrumentation)およびモニタリングのコード命
令を加えるために静的プロセスを使用することである。
静的プロセスの使用によってオブジェクトモジュールの
実行がオブジェクトモジュールが元々実行したであろう
方法から新たな実行フローに変えられた。静的インスト
ルメントまたはモニタリングのツールによって使用され
る他のプロセスは、デバッガによるインストルメンテー
ションの差込またはパッチしたコードを加えることによ
るソフトウェア・フィックスの差込みなどの方法によっ
てユーザのオリジナルのオブジェクトコードを拡張し
た。付加的なインストルメンテーションおよびモニタリ
ングのコードは、実行中のプログラムがメモリ境界条
件、キャッシュ・シミュレーション、およびソフトウェ
アプログラムフローのようなものを追跡するのを可能に
する。コード・プロフィールなどの目的のためのソフト
ウェア解析は、コードデバッギングと呼ばれることがあ
る。パッチされたコードは、ソフトウェア保守の変更を
オブジェクトコード・モジュールに挿入するような目的
に使用される。オリジナルのローダのプロセスがデバッ
ガまたはコード・パッチ機能を含むように増大するの
で、実行可能なメモリ・イメージは増大しているローデ
ィング・プロセス中に加えられたインストルメンテーシ
ョン・コードを含むことができる。
【0004】ここで、インストルメンテーションとは、
コンピュータ・システムの実行中にそのコンピュータ・
システムの振る舞いを理解する目的で測定データを得る
プロセスのことをいい、インストルメントするとは、イ
ンストルメンテーションの目的でソフトウェアに測定命
令を組み込むこと、またはインストルメンテーションを
実行することをいう。インストルトされたソフトウェア
は、実行中のコンピュータ・システムにおける動作を測
定する目的でソフトウェア・コードの特定の場所に挿入
された測定命令を含んでいる。例えば、インストルメン
トされたソフトウェア・コードは、1ブロックのソフト
ウェア・コードを実行するのに必要な時間を判断するた
め、ある演算が実行される回数を識別するため、または
1ブロックのソフトウェア・コードに入ったり出たりす
るコード・パスを判断するためなどに使用することがで
きる。
【0005】コンピュータ・インストルメンテーション
およびモニタリングのツールなどのような従来のタイプ
のソフトウェア開発ツールにおいては、オリジナルのコ
ードの翻訳(変換)はオリジナルの媒体イメージ上かロ
ーダが呼び出されるポイントで生じる。コンピュータ・
インストルメンテーションおよびモニタリングの後、も
はやユーザのオリジナル・コードの実行可能なイメージ
は存在しない。したがって、従来技術は、挿入されたイ
ンストルメントまたはモニタリングのコードでユーザの
実行可能なイメージを変更することによってソフトウェ
ア開発ツールの使用方法を制限し、プログラムカウンタ
が、ユーザのオリジナルのコード命令と挿入されたイン
ストルメンテーションまたはモニタリングのコード命令
の両方を縦断(トラバース)することを必要とした。
【0006】
【発明が解決しようとする課題】過去に存在した静的ソ
フトウェア開発ツールの使用のためのこれらのテクニッ
クのすべては問題をもち、効率が制限された。例えば、
静的インストルメンテーションまたはモニタリングのツ
ールは特別なリンクを必要とする。さらに、インストル
メンテーションの必要性のタイプと範囲が実行時の特定
のプログラムの挙動によって変わることがあるので、有
効に静的インストルメンテーションまたはモニタリング
のツールを使用するためには、ユーザは、定期的に止ま
り、最適化されたコードの状態を見、一連のコード・ス
ナップショットを使用して履歴を確立する必要があり、
これらは時間のかかる活動である。
【0007】また、静的なインストルメントされたオブ
ジェクトコード・モジュールはランタイム情報を含ま
ず、その結果、インストルメントまたはモニタリングの
コードは、多くのパスが実際の実行プロセスの一部にな
らなくても、ソフトウェア・コードのすべてのパスにつ
いて命令を挿入するであろう。ユーザのオブジェクトコ
ード・モジュールの実際の実行パスについての知識が不
足するために、C言語dllライブラリなどの動的にロード
可能なライブラリを備えた過去のソフトウェア開発ツー
ルを使用するプログラマの能力がさらに束縛される。ユ
ーザのコードの実行中にどの動的にロード可能なライブ
ラリが含められるかについて、ユーザはコンパイル時に
推測しなければならないず、これは不要なコード生成を
生じる。
【0008】上記からまだユーザ・コードのオリジナル
の実行フローを保持するソフトウェア開発ツールを作成
する必要があることが明らかである。既存のソフトウェ
ア開発ツールはランタイム情報を含まず、したがって実
際のユーザ・コード実行パスに焦点を合わせたインスト
ルメンテーション差込に関する効率が達成されないの
で、このような必要性が存在する。また、ユーザによっ
て選ばれた実行時オプションは過去の動的なツールにお
けるインストルメントされたコードに伝播することがで
きない。このため、コードをインストルメントする効率
が低くなる。より最近、モニタリング・コードを変更す
るいくつかのツールが開発されているがこれらの問題を
解決するものではない。
【0009】過去の静的および動的なソフトウェア開発
ツールについてのこれらの問題によって、ソフトウェア
開発テクニックの一層の発展が制限されている。
【0010】
【課題を解決するための手段】この発明において、ソフ
トウェア開発ツールは、動的なインストルメンテーショ
ンまたはモニタリングの形であり、インストルメントま
たはモニタされたユーザ・プロセスのものと同じ環境の
下で動作する。この発明は、動的なインストルメンテー
ションまたはモニタリングがランタイムで導入されるの
を可能にし、その結果、ユーザ・プロセスの実行につい
て最大量の情報を利用する環境を作成する。たとえば、
インストルメンテーションまたはモニタリングの変化が
ランタイムで起るので、ツールはソフトウェア開発者に
よる再編集または再リンクの必要性を軽減する。さら
に、ユーザ・プロセス環境の下でツールが実行するの
で、ユーザ・コードの実行フローが保持される。
【0011】エミュレーションはマシーン命令でユーザ
のオリジナルのマシーン命令を置き換えるプロセスであ
る。エミュレーション・プロセスはユーザが行っただろ
うものと同等な操作を実行し、また、所望のインストル
メンテーション操作を含む。
【0012】また、静的ソフトウェア開発ツールはプロ
グラムの命令実行をトレースするサポートを提供するこ
とができる。例えば、コードは、初期化されていないコ
ード・アクセスを検出するためにプロセス・メモリのト
レースをテストするよう書かれていてもよい。さらに、
メモリ参照バッファへのアクセスが作成されてもよく、
C言語ライブラリ環境におけるメモリ割当をサポートす
るマロック(malloc)などのメモリに敏感なプロシージャ
は、インストルメンテーションを通して置き換えられて
もよい。置き換えは、マシーン命令を取り替えるか、マ
シーン命令を加算することから成ってもよい。したがっ
て、静的ツールはメモリ・バッファをアクセスするシス
テムコールをそれらの実行前に捕らえその振る舞いを記
録することができる。このインストルメンテーションの
結果を表示するためにコードを加えることができる。
【0013】この発明は、オリジナルのユーザ・コード
のディスク・ベースのイメージを使用するソフトウェア
開発ツールであり、コンピュータ・システムのローダ、
ブートストラップ・ローダ、および状態値ローダによっ
て増強される。また、この発明は、同等な命令を実行す
ることによってユーザ・プロセス命令をエミュレート
し、命令を加えることによってエミュレートされたユー
ザ・プロセスをインストルメントする補助的な制御コー
ドを使用する。この発明は、コンピュータ・メモリにお
いてソフトウェア開発ツールとユーザ・プロセスを管理
し、ユーザ・プロセスの実行を中断および再開すること
ができるプロセス・コントローラを使用してもよい。
【0014】補助的な制御コードは、ツールが実行中で
あるときにユーザ・プロセスにつけられるオブジェクト
コード・モジュール、メモリのコンピュータシステム環
境情報を維持するオブジェクトコード・モジュール、お
よびユーザ実行可能コードの制御フローに従って実行す
るオブジェクトコード・モジュールであってもよい。実
行プログラムの状態のメモリ内コピーは、特にレジスタ
のマシーン状態、条件コードおよび ハードウェア特定
のパラメータを含む。この発明は、一時的なロケーショ
ンにロードし、ブートストラップ・コードおよび補助的
な制御コードによって使用されることができるプログラ
ム実行状態情報を後に再ロードするため、メモリ状態の
ローダを使用してもよい。
【0015】この発明で、インストルメントまたはモニ
タされた命令は、ユーザ・プロセスのために割り当てら
れた同じメモリスペースで実行し、オリジナルのユーザ
・プロセスと同じ実行フローを通してそのインストルメ
ントされた命令を導くための指令(directives)として、
オリジナルのコードをデータの形で使用する。したがっ
て、先行技術のツールがユーザの実行可能なイメージを
挿入されたインストルメントまたはモニタリングのコー
ドで変更するプラクティスによって制限されたのに対
し、この発明は、そのようには制限されない。従来技術
のプラクティスは、ユーザのオリジナルのコード命令と
挿入されたインストルメンテーションまたはモニタリン
グのコードの両方を縦断するためにプログラムカウンタ
を必要とするものであった。
【0016】補助的な制御コードは、ユーザ・プロセス
命令を置き換えユーザ・プロセスが作り出したであろう
コンピュータシステム環境情報を維持し、エミュレーシ
ョン・ツールが呼び出されなかったのと同じ結果を変更
されたユーザ・プロセスに生じさせ、そしてユーザ・プ
ロセス・コードをデータとして扱うエミュレータを含
む。補助的な制御コードは、ユーザ・プロセス内で実行
し、モニタリングやプロフィールなどの目的のためにユ
ーザ命令を増強する命令を付加するインストルメンタ(i
nstrumentor)を含む。最後に補助的な制御コードは、ユ
ーザ・プロセスの命令を使用し命令をデータとして扱う
ことによってエミュレータまたはインストルメンタを呼
び出すかどうか決定するエグゼキュータを含むことがで
きる。置換命令は、ユーザのコード命令と同等である
が、プロセスをモニタまたはインストルメントする付加
的なコード命令を含むことができる。補助的な制御コー
ドは、特定のコンピュータ・ハードウェアおよびその上
で実行する特定のコンピュータ・オペレーティングシス
テムに依存する。
【0017】この発明は、ソフトウェア開発と維持のた
めの多くの貴重なプログラム解析ツールの創作を容易に
するのに使用することができる。例えば、メモリリーク
検出は、マロックおよびフリーのようなプロシージャで
の問題のために重要な機能であり、ユーザがソフトウェ
ア開発および維持の効率を増加させることを可能にす
る。フリーは、メモリの割り当て解除をサポートする、
C言語ライブラリ環境に含まれるオペレーティングシス
テム・コマンドである。プログラム解析ツールは、限定
的ではなくソフトウェアデバッガ・ツール、ソフトウェ
ア・メモリリーク検出ツール、ソフトウェアの輪郭を描
くツール、およびソフトウェア実行適用範囲ツールを含
む。
【0018】この発明を使用する1つの新しい方法はユ
ーザが動的なインストルメンテーションのためのソフト
ウェア開発ツールを書くことである。この発明は、当業
者にとってよく知られている動的な割り当てなどの方法
によって、実行プロセス中にインストルメンテーション
・コードを簡単に挿入することを可能にする。インスト
ルメンテーション・コードの差込みはシステム支援要求
の捕捉を可能にし、これによりソフトウェア命令の実行
フローの新しいトレースおよび分析を容易に行うことが
可能になる。この発明は、ユーザが命令実行の洗練され
た分析のためにメモリ検査およびウオッチポイント(wat
chpoints:観察点)の挿入のような機能性を創作するこ
とを可能にする。ウオッチポイントは、ユーザ・アプリ
ケーション・ソフトウェアプログラムの特定のデータが
変化するときを示すソフトウェア構成体である。当業者
はこの発明の使用による命令の動的な割り当てのアプリ
ケーションを正しく評価するであろう。
【0019】この発明は動的なので、増強したたローダ
が呼び出されるとき、インストルメントされたオブジェ
クトコード・モジュールが実際の実行パスに関する情報
を含んでいる。実行パスが知られているので、インスト
ルメンテーション、プロフィール、またはモニタリング
のコードは、Cプログラミング言語dllライブラリのよう
な必要な動的にロード可能なライブラリにアクセスする
必要があるだけである。
【0020】この発明の他の面と利点は以下の詳細な説
明から明らかになるだろう。
【0021】
【発明の実施の形態】図面で例示の目的のために示され
るように、この発明はユーザ・プロセスの動的なインス
トルメンテーションまたはモニタリングのためのソフト
ウェア開発ツールであり、ユーザ・プロセスのものと同
じコンピュータ環境の下で実行し、ユーザ・コードの実
行フローを保持する。先行技術のソフトウェア開発ツー
ルはユーザ・プロセス実行可能イメージおよび挿入され
たインストルメンテーション・コードのコピーをコンピ
ュータのメモりに作成した。その結果、オリジナルのユ
ーザ・オブジェクトモジュールの実行フローを保持しな
い実行可能イメージが得られた。
【0022】この発明は、ソフトウェアプログラムのコ
ンパイルおよび実行のランタイム段階で導入される動的
なソフトウェア開発ツールである。この発明は、必要に
応じた実行のために変えられなければならない命令を認
識し、そしてインストルメンテーションまたはモニタリ
ングの命令で容易に強化することができる同等な命令で
それらを置き換えることによってソフトウェア命令をエ
ミュレートする。こうしてソフトウェア開発過程が改善
される。この発明はユーザ・コード・プロセスの実行を
中断および再開することができ、これによりインストル
メンテーションまたはモニタリングのコードをユーザ・
プロセスに挿入することができる。ランタイム段階中に
コンピュータ・マシーンコードが作成され、ハードウ
ェアレジスタを使用して実行される。この発明は、ユー
ザ・プロセス・コンピュータ環境の中で、またユーザ・
プロセス実行フローの下でユーザ・プロセスを動的にイ
ンストルメントまたはモニタすることによってソフトウ
ェア開発分析を改良する。
【0023】この発明はコンピュータメモリで作動し、
実行の動的な方式に加えて従来技術より速いエミュレー
ションを可能にする。
【0024】さらにユーザ・プロセス命令をデータとし
て扱うことにより、この発明は柔軟にさまざまなコード
シーケンスをエミュレートすることができる。先行技術
のエミュレーション・ツールはソフトウェア・プロシー
ジャなどの離散的なコード・ユニットで作動するよう制
約された。当業者は、この発明がユーザ・プロセス命令
フローの下で作動しユーザ・プロセス命令をデータとし
て扱うので、エミュレーション・ツールはユーザ・プロ
セス・コードのシーケンスを実行している間にプロシー
ジャ境界と交差することがあることを正しく評価するで
あろう。
【0025】ソフトウェア開発ツールはコンピュータシ
ステム・コンパイラ技術の一形態である。既存のコンパ
イラとエミュレーション・ツール技術の一般的な説明に
ついてはAlfred V. AhoとJeffrey D. UllmanによるPrin
ciples of Compiler Design(Addison-Wesley,1977)を参
照されたい。
【0026】エミュレーション エミュレーションは、 ソフトウェアにおいてコンピュ
ータをモデル化することを伴う。この発明は、ソフトウ
ェアにおいてオリジナルのコンピュータ環境をモデル化
するためにコードの一部をフェッチし、解読し、命令に
翻訳(変換)することによってオリジナルのアプリケー
ション・コードをエミュレートする。ユニックス(TM)な
どのいくつかのオペレーティングシステムにおける実行
中、プロセスは実行のフローを制御することができる新
プロセスを生じさせることができる。システムコールお
よび信号命令は、新プロセスを生じさせることができる
命令である。この発明は、システムコールおよび信号を
捕捉することができ、オリジナルのユーザ・プロセスの
中でエミュレートされた実行フローを維持するのに必要
とされるところに従ってそれらを翻訳する。
【0027】従来方式の実行中、真のハードウェア・レ
ジスタ・ロケーションがユーザ・プロセスによってアク
セスされる。例えば、2+3を加え、結果を格納するのは
従来のハードウェア・レジスタファイルにおいて"ADD r
7, r8, r31"で表されることがある。レジスタ7が値“2"
を含み、レジスタ8が値“3"を含み、そして合計“5"が
レジスタ31に格納されたならば、この表示は正確であろ
う。従来のハードウェア・レジスタファイルは「AND」
演算の結果以下のものを含むであろう。
【0028】
【表1】 ... r7 2 r8 3 ... r31 5
【0029】32個のハードウェア・レジスタがあるコン
ピュータのためのエミュレーション・レジスタファイル
は、アレイデータ構造"reg [32]"の宣言で表すことがで
きる。ここに、 アレイ"reg"は32の長さの整数値を含ん
でいる。「CPU」プログラムはエミュレーション・レジ
スタファイルを表す。cpu.reg[7]が2を含み、cpu.reg
[8]が3を含むと仮定すると、「ロード」、「ロード」、
「加算」、および「格納」コマンドは、cpu.reg[7]およ
びcpu.reg[8]の値をロードし、それらの値を加算し、そ
の和をcpu.reg[31]に格納する。"cpu"エミュレーション
・レジスタファイルのサンプルを次に示す。
【0030】
【表2】 Struct { 長い整数reg[32] ・ ・ } cpu cpu.reg[31]=cpu.reg[7]+ cup.reg[8] ロード ロード 加算 格納
【0031】この発明は、ユーザ・プロセスにおける命
令を置き換え、そしてメモリ中でランタイムで実行する
エミュレーションのためのソフトウェア開発ツールとし
てコンピュータに実現することができる。メモリは、ハ
ードウェア・レジスタの中身、実行の段階を指示する条
件コード、そして実行プロセスを指示するハードウェア
特定のパラメータを含むコンピュータ環境状態値を維持
することができる。
【0032】また、ユーザ・プロセスが実行を始める前
にこの発明は作動してもよい。この発明実行がユーザ・
プロセス実行に先行する場合、状態値のローダは、現状
レジスタ値をロードする代わりにブートストラップロー
ダのための初期状態レジスタ値をコンピュータメモリに
ロードする。状態値のローダはブートストラップローダ
が後でユーザ・プロセスのメモリに再ロードする初期状
態レジスタ値を維持する。
【0033】ユーザ・プロセスが実行し始めるとき使用
するためのこの発明の代替の実施例は、ブートストラッ
プローダおよびコンピュータシステム・オペレーティン
グシステム・ローダ内のブートストラップ・ソフトウェ
ア・コードを含むことができる。当業者は、コンピュー
タシステム・オペレーティングシステム・ローダがハー
ドウェア・レジスタとコンピュータメモリの両方につい
て初期のユーザ・プロセス状態値をセットアップするの
で、特定のコンピュータ実行がブートストラップ機能を
実行するよう統合されてもよいことを正しく評価するだ
ろう。
【0034】動的なソフトウェア開発ツール コンピュータソフトウェア開発ツールは、動的または静
的再コンパイル、ハードウエア・シミュレータ、および
ソフトウェア・デバッグを使用するフィードバック指向
の最適化を含むアプリケーションで使用されている。フ
ィードバック指向の最適化は、ソフトウェアプログラム
における臨界的実行パスに関する情報が、コンピュータ
・インストルメンテーション、プロフィールまたはモニ
タリングのツールに送られ、そのツールによる一層のイ
ンストルメンテーション技法に使用されるプロセスであ
る。フィードバック指向の情報は、ユーザのコードの動
的または静的再コンパイルを通して最適化プロセスに組
み入れることができる。すなわち、インストルメンテー
ション・コードは増加的に作り直されてもよく、オブジ
ェクトコード・モジュールの実行を最適化するための適
切な変更を加えて増加的態様で再実行されてもよい。再
生成は前の反復の結果に基づく。この発明では、インス
トルメントされたコードのプロフィール作成またはモニ
タリングは動的になされる、すなわちプログラムは増加
的に実行しており、特別な再コンパイルおよび再リンク
を必要としない。
【0035】ソフトウェア・デバッグは、ソフトウェア
・プログラミング・エラーに影響されやすいのが知られ
ている特定のマシーン命令に対するソフトウェア開発分
析で役に立つ情報をロギング(登録)する特定のインス
トルメンテーションまたはモニタリング・コードを挿入
するプロセスによって可能にされる。コンピュータメモ
リの使用を操るプロシージャは他の命令によって使用さ
れる記憶域をうっかり変えることがあり、そしてその結
果、割り当てられた記憶域の境界条件を超えることがあ
る。したがって、マロックまたはフリーのようなコンピ
ュータメモリの使用を操るプロシージャは特別なソフト
ウェア・デバッグ・モニタリングのための良い候補であ
る。
【0036】ハードウェア・シミュレーションは、イン
ストルメンテーションまたはモニタリングのツールのコ
ードを用いてソフトウェアプログラムを再コンパイル
し、コンピュータ・マシーン命令またはそのコードがオ
リジナルに開発されたのとは異なるコンピュータ環境の
フィーチャーに従って実行するユーザのコードのオブジ
ェクトモジュールを作成するプロセスである。この異な
るコンピュータ環境は典型的にはオリジナルのコンピュ
ータ環境と実質的に類似のものである。異なるコンピュ
ータで走ることを目標とするオブジェクトコードを生成
するプロセスによって、他のハードウェア・プラットホ
ーム上での実行のシミュレーションが可能になる。すな
わちコンピュータ特定のハードウェア特徴はインストル
メンテーションまたはモニタリングのツールのコードで
作成され、そして ユーザのアプリケーション・コード
に挿入される。この発明の好ましい実施例でハードウェ
ア・シミュレーション中、インストルメンタはエミュレ
ータによって作成された命令を変える。そして、増強さ
れたユーザ・プロセスは、異なるコンピュータ環境で実
行するであろう方法でオリジナル・マシーン上で、ユー
ザ・アプリケーション命令のフローを分析する目的のた
めに実行される。
【0037】ハードウェア・シミュレーション機能のい
くつかの例は、制限的ではなくバスおよびメモリ待ち時
間の分析、およびセットアソシアティブ、ダイレクト地
図、キャッシュの多重レベル、およびプロセッサ相互接
続ネットワーキングなどのキャッシュ・アーキテクチャ
の分析を含む。当業者はこれらの機能の分析のためのハ
ードウェア・シミュレーションの使用を正しく評価する
だろう。
【0038】以下の詳細な説明と図面において、同様の
構成要素は同様の参照番号数字で示される。
【0039】図1では、発明のソフトウェア環境はソー
スプログラム112を使用して描かれている。ソースプロ
グラムはプログラミング言語命令をマシーンコード命令
に翻訳するコンパイラ114によって操作される。結果と
して起こるマシーンコード命令はしばしばオブジェクト
コードと呼ばれ、ユーザ・プロセス・オブジェクトコー
ド113で描かれている。オブジェクトコードは特定のコ
ンピュータ・プロセッサ上で実行するための命令を含
む。したがって、ユーザ・プロセス・オブジェクトコー
ド113は、リンカ116によって翻訳することができるフォ
ーマットである。オブジェクトコードを実行するため
に、1つ以上のオブジェクトコード・モジュールと結合
して実行可能なマシーンコードを作成しなければなら
ず、ここでは、ユーザ・プロセス実行可能コード118で
描かれている。この結合プロセスはリンクと呼ばれる。
リンカ116がオブジェクトコードをプロセスするとき
に、それは相互接続参照を解消し 実行可能コードを作
成する。
【0040】図1に示すローダ120は、ユーザ・プロセス
実行可能コード118とソフトウェア開発実行可能コード1
15を使用することによってステップ122で示される実行
プロセスを呼び出す。ローダ20の活動は、コンパイルプ
ロセスからランタイム・プロセスへの移行を表す。この
発明の1つの実施例では、コンピュータ・マシーン・レ
ベルの情報を使用してソースプログラム実行パスを調整
するプロフィール・ツールがイネーブルされているかど
うか判断するためにランタイム中にテストを実行するこ
とができる(124)。この発明の別の実施例で、ユーザレ
ベル情報を使用してプログラム実行をモニタするプロセ
ス・モニタリング・ツールがイネーブルされているかど
うか判断するテストを行うことができる(126)。プロフ
ィール・ツールがイネーブルされているならば(124)、
実行のマシーン・レベルの結果は、後のプロセスのため
にロギングされ(129)、そして、ステップ128に示される
ように、実行がインクリメント式に続く。プロセス・モ
ニタリング・ツールがイネーブルされているならば(12
6)、実行のユーザレベルの結果が後のプロセスのために
ロギングされ(127)、ステップ128に示されるように実行
がインクリメント式に続く。インクリメント式実行プロ
セス128は、プロフィール・ツールとプロセス・モニタ
リング・ツールのロギングの結果からフィードバック情
報をとることを含む。どちらのツールもイネーブルされ
ていないならば、ソースプログラムの処理が続き(12
8)、コンピュータシステムを介して通常通り実行する。
【0041】図2には、変化するコンピュータ・メモリ
構成が描かれている。図2(A)において、エミュレーショ
ン・ツールの呼出しの前に、ユーザ・プロセス・ヘッダ
ー200、ユーザ・プロセス命令202、ユーザ・プロセスデ
ータ204、および残りの空きスペース206がユーザ・プロ
セスのメモリ構成を表す。図2(B)において、ブートスト
ラップローダ208が呼び出され空きスペース206の一部を
占める。ユーザ・プロセス・ヘッダー200、ユーザ・プ
ロセス命令202およびユーザ・プロセスデータ204は、ユ
ーザ・プロセス300・メモリをブートストラップローダ2
08と共有する。ブートストラップローダ208が実行を始
めた後に、図2(C)に示すようにブートストラップ・ソフ
トウェア・コード210が呼び出される。ユーザ・プロセ
ス・ヘッダ200、ユーザ・プロセス命令202およびユーザ
・プロセスデータ204は、ユーザ・プロセス300・メモリ
をブートストラップ・ソフトウェア・コード210と共有
し続ける。ブートストラップ・ソフトウェア・コード21
0は、補助的な制御コード212をロードするために残りの
空きスペース206のメモリの一部を占める。
【0042】最後に 図2(D)では、補助的な制御コード2
12が呼び出されている。補助的な制御コード212はエグ
ゼキュータ214、 エミュレータ216、 およびインストル
メンタ218を含む。エミュレータ216は、ソフトウェア開
発ツールを呼出すことなくユーザ・プロセスが作り出し
たであろうレジスタ状態値を維持する。また、エミュレ
ータ216は、ソフトウェア開発ツールを呼出すことなく
生じたであろうものと同じ結果を生成しながら、ユーザ
・プロセス300の命令を置き換え、ユーザ・プロセス・
コードをデータとして扱う。インストルメンタ218は、
ユーザ・プロセス300の中で実行し、モニタやプロフィ
ールなどの目的のためにユーザ命令を増強させる命令を
付加する。最後にエグゼキュータ214は、データとして
扱われるユーザ・プロセス202およびユーザ・プロセス
データ204の命令を使用してエミュレータ216またはイン
ストルメンタ218を呼び出すかどうか決定する。補助的
な制御コード212とその構成要素はユーザ・プロセス・
ヘッダー200を使用することによって作動する。補助的
な制御コード212およびその構成要素は残りの空きスペ
ース206のより多くの部分を占める。
【0043】また、この発明は、ユーザ・プロセスにつ
いての状態レジスタ値をコンピュータメモリにロード
し、ユーザ・プロセスについての状態レジスタ値を後に
ユーザ・プロセスのメモリに再ロードするために維持す
る状態値ローダを含むことができる。さらに、ユーザ・
プロセスが実行のために呼び出されるとき、状態値ロー
ダはローダのための状態レジスタ値をコンピュータメモ
リにロードし、ローダが後でユーザ・プロセスのメモリ
に再ロードするこのために状態レジスタ値を維持する。
【0044】図3には、 実行中ユーザ・プロセスの内容
が描かれている。図3(A)で、プロセス・コントローラ30
2はユーザ・プロセス300の実行を中断することによって
ユーザ・プロセス300に対する制御を確立する。状態値
ローダはユーザ・プロセスのために状態レジスタ値をコ
ンピュータメモリにロードする。次いでプロセス・コン
トローラ302がブートストラップローダ208を呼び出し、
状態値ローダがブートストラップローダ状態値304をユ
ーザ・プロセス300のメモリに再ロードする。ブートス
トラップローダ208とブートストラップローダ値304が図
3(A)のユーザ・プロセス300に挿入されるとき、それら
はユーザ・プロセス実行可能コードおよびデータ308と
ユーザ・プロセス300を共有する。
【0045】図3(B)では、呼び出されたブートストラッ
プローダ208は、ブートストラップ・ソフトウェア・コ
ード210をユーザ・プロセス300のメモリにロードし、ブ
ートストラップ・ソフトウェア・コード210を実行する
ためにブートストラップローダ状態値304を使用する。
プロセス・コントローラ302、およびユーザ・プロセス
実行可能のコードおよびデータ308はユーザ・プロセス3
00において実行し続ける。
【0046】図3(B)から図3(C)への遷移において、状態
値ローダはユーザ・プロセス310の状態レジスタ値をユ
ーザ・プロセス300のメモリに再ロードする。それで、
プロセス・コントローラ302がユーザ・プロセス300の制
御を解除し、そして ユーザ・プロセス300の実行が再開
される。ブートストラップ・ソフトウェア・コード210
はユーザ・プロセス300で実行し、補助的な制御コード2
12をユーザ・プロセス300に組み入れる。ユーザ・プロ
セス300の実行中のブートストラップ・ソフトウェア・
コード210は実行をユーザ・プロセス300の補助的な制御
コード212に移す。
【0047】図3(c)では、 補助的な制御コード212はユ
ーザ・プロセス300のメモリ内の状態値310を使用してユ
ーザ・プロセス内の命令を置き換える。補助的な制御コ
ード212の構成要素はエグゼキュータ214、エミュレータ
216、 およびインストルメンタ218を含む。補助的な制
御コード212は、ソフトウェア開発ツールの差込みなし
でユーザ・プロセス300が作り出したであろうレジスタ
状態値を維持するエミュレータ216を含む。また、エミ
ュレータ216は、データとして扱われるユーザ・プロセ
ス・コードとデータ308を使用して、置き換えられた命
令を実行し、ソフトウェア開発ツールが挿入されなかっ
たのと同じ結果を作り出す。また、補助的な制御コード
212は、ユーザ・プロセス300中で実行し命令を付け加え
るインストルメンタ218を含んでもよい。これによりモ
ニタやプロフィールなどの目的のためにユーザ命令を増
強させることができる。最後に、補助的な制御コード21
2は、データとして扱われるユーザ・プロセス308の命令
を使用してエミュレータ216またはインストルメンタ218
を呼び出すかどうか決定するエグゼキュータ214を含ん
でいてもよい。補助的な制御コード212は、ユーザ・プ
ロセス310の再ロードされた状態値で実行し、ユーザ・
プロセス実行可能コードおよびデータ308をデータとし
て使用する。
【0048】図4で、エミュレーションによっても使用
されるプロセスは、ユーザ・プロセス300を始めること
(ステップ400)およびエミュレーション・ツールを呼
び出すこと(ステップ402)を含む。ステップ404で、プ
ロセス・コントローラ302はユーザ・プロセス300を中断
させ、エミュレーション・ツールからの操作を開始す
る。ステップ406において、状態値ローダは、ユーザ・
プロセス300についてのレジスタ値のマシーン状態を、
後にユーザ・プロセス300のメモリに再ロードするため
に得る。ユーザ・プロセス300を中断させることによっ
てユーザ・プロセス300の制御を取得し、ステップ408に
おいてプロセス・コントローラ302はブートストラップ
ローダ208を呼び出し、そして状態値ローダがブートス
トラップ・ローダ状態値304をロードする。そして、ス
テップ410では、ブートストラップローダ208はブートス
トラップ・ソフトウェア・コード210をユーザ・プロセ
ス300のメモリの未使用の部分にロードする。ステップ4
12では、状態値ローダは、ユーザ・プロセス300の状態
値をユーザ・プロセス300のメモリに再ロード(310)す
る。ステップ414では、プロセス・コントローラ302はユ
ーザ・プロセス300の制御を解除する。ブートストラッ
プ・ソフトウェア・コード210はユーザ・プロセスで実
行し、補助的な制御コード212をユーザ・プロセス300に
組み込む。実行中のブートストラップ・ソフトウェア・
コード210は実行をユーザ・プロセス300の補助的な制御
コード212に移す。
【0049】解除されたユーザ・プロセス300が実行を
再開し、ステップ416では、補助的な制御コード212がユ
ーザ・プロセス300を変更したので、ユーザ・プロセス3
00は、ユーザ・プロセス・コードをデータとして使用し
ユーザ・プロセス状態値310を使用して補助的な制御コ
ード212における実行を続ける。ステップ418では、補助
的な制御コード212がユーザ・プロセス300内の命令を置
き換える。
【0050】ユーザ・プロセス300のメモリは、エミュ
レーション・ツールの実行中に変化を受ける。図5で
は、ユーザ・プロセス300のメモリにおける変化が描か
れている。ステップ426では、ブートストラップローダ2
08がユーザ・プロセス300のメモリの占有されていない
空きスペース206にロードされる。ステップ428では、ブ
ートストラップ・ソフトウェア・コード210がユーザ・
プロセス300のメモリの占有されていない空きスペース2
06にロードされる。ステップ430では、補助的な制御コ
ード212はユーザ・プロセス300のメモリの占有されてい
ない空きスペース206にロードされ、そして、ユーザ・
プロセス状態値がユーザ・プロセス300に再ロードされ
る(310)。
【0051】図6のファイル構造は、すべてのユーザ・
プロセス・オブジェクトモジュール420が補助的な制御
コード・オブジェクトのモジュール422と結合されてユ
ーザ・プロセス実行可能コード・イメージを作成するこ
とを示している。コンピュータ・ファイルはメモリで実
行し、実行のよりどころとなる状態レジスタ値、データ
およびコードを含む。結合した実行可能なイメージ424
は、ソフトウェア開発ツールがユーザ・プロセス300実
行フローの下で実行することを可能にする。結合した実
行可能なイメージ424はユーザ・プロセス・コードの状
態レジスタ値を使用することによって実行される。この
コードは、ユーザ・プロセスのメモリで補助的な制御コ
ード・モジュール422の実行を許容するように変更され
ている。補助的な制御コードのオブジェクトモジュール
422は、ユーザ・プロセス命令の代わりに命令を使い、
付属補助的な制御コード・モジュール422なしでユーザ
・プロセスが作り出したであろうコンピュータ状態レジ
スタ値を維持する。補助的な制御コードのオブジェクト
モジュール422は、さらに少なくとも1つの命令を実行
し、実行結果はソフトウェア開発ツールの差込みなしで
作り出されたであろうものと同じである。
【0052】発明の特定の実施例について記述したが、
発明は特定の形態または記述された部品の構成に制限さ
れるものではない。この発明は、例として次の実施形態
を包含する。
【0053】1.ランタイムでプログラム実行を変更し、
補助的な制御コードをコンピュータ・メモリにロードさ
れたユーザ・プロセスに付ける、ソフトウェアをエミュ
レートするためのコンピュータで実現される方法であっ
て、次のステップを含む方法: (a) コンピュータ・メモリにロードされたユーザ・プロ
セスから少なくとも1つのコード命令のための実行を呼
び出し、ユーザ・プロセスの実行を中断させるステップ
と、(b)中断したユーザ・プロセスの状態値をコンピュ
ータ・メモリにロードし、ユーザ・プロセスのためのロ
ードされた状態値をユーザ・プロセスのメモリの占有さ
れていない領域に動かすステップと、(c)ユーザ・プロ
セスのメモリの占有されていない領域に補助的な制御コ
ードをロードし、ユーザ・プロセスが再開される時に補
助的な制御コードを実行するためにユーザ・プロセス状
態値を変更するステップと、(d)ユーザ・プロセスのた
めに変更された状態値を復元し、ユーザ・プロセスの中
断を解除し、実行を補助的な制御コードに移すステップ
と、(e)、ユーザ・プロセスの変更された状態値を使用
しユーザ・プロセス命令をデータとして扱うことによっ
て少なくとも1つのユーザ・プロセス命令を置き換え実
行するエミュレーション環境を補助的な制御コードによ
って確立し、そして、補助的な制御コードを付けること
なくユーザ・プロセスが作り出したであろうレジスタ状
態値を維持するステップ。
【0054】2. 1に記載のコンピュータで実現される方
法であって、さらに次のステップを含む方法: (a)ユーザ・プロセス実行が中断されているとき、ユー
ザ・プロセスのメモリの占有されていない領域にブート
ストラップ・ソフトウェア・コードをロードし、そし
て、 ユーザ・プロセスが再開されるときの使用のため
に、ブートストラップ・ソフトウェア・コードを実行す
るようユーザ・プロセス状態値を変更するステップと、
b. 変更されたユーザ・プロセス実行が再開されるとき
ブートストラップ・ソフトウェア・コードを実行し、そ
の際ブートストラップ・ソフトウェア・コードは、ユー
ザ・プロセスに補助的な制御コードをさらにロードし、
ユーザ・プロセスの実行を補助的な制御コードに移すス
テップ。
【0055】3. 1に記載のコンピュータで実現され
る方法であって,さらに次のステップを含む方法: (a) ユーザ・プロセス・コード命令と一緒にで実行され
るプロセス・モニタリング・コード命令をユーザ・プロ
セスにロードし、共同実行が補助的な制御コードによっ
て呼び出されるようにするステップと、(b) ユーザ・プ
ロセス・コード命令およびプロセス・モニタリング・コ
ード命令の実行の結果を集めるステップ。
【0056】4. 1に記載のコンピュータで実現される方
法であって、補助的な制御コードが少なくとも1つのユ
ーザ・プロセス命令の置換と実行のためにエミュレーシ
ョン環境を確立し、そして、 少なくとも1つのユーザ・
プロセス命令が異なるコンピュータ・マシーン上で実行
されたかのように実行される方法。
【0057】5. 1に記載のコンピュータで実現される方
法であって、さらに次のステップを含む: (a)ユーザ・プロセスに実行プロフィール・コードをロ
ードし、そして、共同でユーザ・プロセスとプロフィー
ル・コードを実行し、その結果、共同実行が補助的な制
御コードによって呼び出されるステップと、(b)共同実
行の結果を使用して補助的な制御コードの別の実行を呼
び出すステップ。
【0058】6. 1に記載のコンピュータで実現される方
法であって、初期化されていないコード・アクセスを検
出するためにユーザ・プロセスのメモリ状態をテストす
ることを含む方法。
【0059】7. 1に記載のコンピュータで実現される
方法であって、メモリに敏感なプロシージャの呼出しに
対するメモリ状態を集めるためにユーザ・プロセスのメ
モリ状態をテストすることを含む方法。
【0060】8. ランタイムでメモリ内で実行するユー
ザ・プロセスの命令を置き換え、メモリが状態値を維持
すし、コンピュータシステムが状態レジスタ値を維持す
る、エミュレーションのために改良されたコンピュータ
実現されたソフトウェア開発ツールであり、次のものか
らなるソフトウェア開発ツール: (a) ユーザ・プロセスの命令をユーザ・プロセスのメモ
リの状態値を使用して置換する補助的な制御コードと、
(b) ユーザ・プロセスのメモリ状態を操りユーザ・プロ
セス内の補助的な制御コードの実行を可能にし、ユーザ
・プロセスに補助的な制御コードをロードするローダ
と、(c) 呼び出されるときユーザ・プロセスのための状
態レジスタ値をコンピュータメモリにロードし、ユーザ
・プロセスのために状態レジスタ値を後でユーザ・プロ
セスのメモリに再ロードするために維持する状態値のロ
ーダであって、ユーザ・プロセス実行が呼び出されると
きローダのための状態レジスタ値をコンピュータメモリ
にロードし、ローダのための状態レジスタ値を後にメモ
リに 再ロードするために維持するローダと、(d) ユー
ザ・プロセス上で制御を確立し、ユーザ・プロセスの制
御を解除し、そして、 プロセス・コントローラがユー
ザ・プロセスの実行中断によってユーザ・プロセスに対
する制御を確立するとき状態価値のローダはユーザ・プ
ロセスのための状態レジスタ値をコンピュータメモリに
ロードし、プロセス・コントローラがローダを呼び出
し、状態値ローダがローダの状態値を再ロードするプロ
セス・コントローラと、を備え、(e) プロセス・コント
ローラがユーザ・プロセスの制御を解除し、ユーザ・プ
ロセスの実行を再開するとき、状態値のローダはユーザ
・プロセスの状態レジスタ値をユーザ・プロセスのメモ
リに再ロードし、ローダは補助的な制御コードを実行し
てユーザ・プロセスに付け、そして、ローダはユーザ・
プロセスの実行を補助的な制御コードに移すようになっ
ており、(f) 補助的制御コードは、ソフトウェア開発ツ
ールの差込みなしでユーザ・プロセスが作り出したであ
ろうレジスタ状態値を維持し、少なくとも1つの命令を
実行し、ソフトウェア開発の差込みなしで作り出された
だろうものと同じ結果を作り出すエミュレータと、ユー
ザ・プロセス中で実行し、ユーザ・プロセスに命令を加
えるインストルメンタと、データとして扱われるユーザ
・プロセスの命令を使用してエミュレータかインストル
メンタを呼び出すかどうか決定する。エグゼクティブを
さらに含む。
【0061】9. 補助的な制御コードをコンピュータ・
メモリにロードされ実行中のユーザ・プロセスに添付す
るためのコンピュータ製品製造物であって、プログラム
格納媒体を備え、(a) コンピュータ可読プログラム・コ
ードはコンピュータ・メモリにロードされたユーザ・プ
ロセスから少なくとも1つのコード命令に対する実行を
呼び出し、(b) コンピュータ可読プログラム・コードは
ユーザ・プロセスの実行を中断させ、(c) コンピュータ
可読プログラム・コードはユーザ・プロセスの状態値を
コンピュータメモリにロードし、ユーザ・プロセスの状
態値をユーザ・プロセスのメモリの占有されていない領
域に動かし、(d) コンピュータ可読プログラム・コード
は、補助的な制御コードをユーザ・プロセスのメモリの
占有されていない領域にロードし、ユーザ・プロセスが
再開されるとき補助的な制御コードを実行するためにユ
ーザ・プロセス状態値を変更し、(e) コンピュータ可読
プログラム・コードは変更されたユーザ・プロセスの実
行を再開し、 ユーザ・プロセス実行制御を補助的な制
御コードにパスし、(f) コンピュータ可読プログラム・
コードは、補助的な制御コードによって、ユーザ・プロ
セスのメモリの占有されていない領域にロードされた状
態値を使用し、置換命令を作成するためにユーザ・プロ
セス命令データとして使用し、補助的な制御コードを付
けることなくユーザ・プロセスが作り出しただろうレジ
スタ状態値をロギングして、少なくとも1つのユーザ・
プロセス命令を置換し実行するエミュレーション環境を
確立する。
【0062】
【発明の効果】この発明によると、ユーザ・コードのオ
リジナルの実行フローを保持するソフトウェア開発ツー
ルが得られ、動的なソフトウェア開発ツールによってソ
フトウェア開発プロセスの効率が向上する。
【図面の簡単な説明】
【図1】コンパイル時およびランタイムのコンピュータ
実行プロセスを示すブロック図。
【図2】実行中に構成することができる計算機メモリの
ブロック図。
【図3】変更されたユーザ・プロセスおよびプロセス・
コントローラのブロック図。
【図4】エミュレーション・ツールをユーザ・プロセス
に挿入するのに使用されるプロセスのフローチャート。
【図5】結合してユーザ・プロセス実行可能コードを形
成するデータ構造のブロック図。
【図6】実行中のユーザ・プロセス・メモリへの変化を
示すブロック図。
【符号の説明】
404 ユーザ・プロセスの実行を中断させるステッ
プ、 406 ユーザ・プロセスの状態値を捕捉するステッ
プ、 416 ユーザ・プロセス状態値を変更するステップ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ラッキー・ブイ・シャ アメリカ合衆国94089カリフォルニア州サ ニーベイル、モース・アベニュー 1063、 ナンバー 2−101 (72)発明者 ウィリアム・ビー・バズビー アメリカ合衆国94019カリフォルニア州ハ ーフ・ムーン・ベイ、カサ・デル・マー ル・ドライブ 404

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】ランタイムでプログラム実行を変更し、補
    助的な制御コードをコンピュータ・メモリにロードされ
    たユーザ・プロセスに組み入れる、ソフトウェアをエミ
    ュレートするためのコンピュータで実現される方法であ
    って、 (a) コンピュータ・メモリにロードされたユーザ・プロ
    セスから少なくとも1つのコード命令のための実行を呼
    び出し、ユーザ・プロセスの実行を中断させるステップ
    と、 (b)中断したユーザ・プロセスの状態値をコンピュータ
    ・メモリにロードし、該状態値をユーザ・プロセスのメ
    モリの占有されていない領域に移動するステップと、 (c)ユーザ・プロセスのメモリの占有されていない領域
    に補助的な制御コードをロードし、ユーザ・プロセスが
    再開される時に補助的な制御コードを実行するためにユ
    ーザ・プロセス状態値を変更するステップと、 (d)ユーザ・プロセスのために変更された状態値を復元
    し、ユーザ・プロセスの中断を解除し、実行を補助的な
    制御コードに移すステップと、 (e)、ユーザ・プロセスの変更された状態値を使用しユ
    ーザ・プロセス命令をデータとして扱うことによって少
    なくとも1つのユーザ・プロセス命令を置き換え実行す
    るエミュレーション環境を補助的な制御コードによって
    確立し、補助的な制御コードを組み込むことなくユーザ
    ・プロセスが作り出したであろうレジスタ状態値を維持
    するステップと、 を含むエミュレーション方法。
JP10330725A 1997-12-23 1998-11-20 エミュレーション方法 Withdrawn JPH11232138A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/996,963 US5911073A (en) 1997-12-23 1997-12-23 Method and apparatus for dynamic process monitoring through an ancillary control code system
US996963 1997-12-23

Publications (2)

Publication Number Publication Date
JPH11232138A true JPH11232138A (ja) 1999-08-27
JPH11232138A5 JPH11232138A5 (ja) 2006-01-12

Family

ID=25543484

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10330725A Withdrawn JPH11232138A (ja) 1997-12-23 1998-11-20 エミュレーション方法

Country Status (4)

Country Link
US (1) US5911073A (ja)
EP (1) EP0926592B1 (ja)
JP (1) JPH11232138A (ja)
DE (1) DE69823153T2 (ja)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
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
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
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US7013456B1 (en) * 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US7254806B1 (en) 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6820258B1 (en) * 2000-08-28 2004-11-16 International Business Machines Corporation System and method for dynamically optimizing executing activations
JP2003173262A (ja) * 2001-12-06 2003-06-20 Hitachi Ltd プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体
US7415698B2 (en) * 2002-12-09 2008-08-19 International Business Machines Corporation Testing and debugging framework for application builders
US20040117782A1 (en) * 2002-12-16 2004-06-17 Tse-Win Lo Construction method of external links for software execution environment
US8225293B2 (en) * 2003-02-13 2012-07-17 Accurate Technologies Inc. Method for supporting calibration parameters in an ECU
US20040163078A1 (en) * 2003-02-13 2004-08-19 Correa Colt R. Method for rapidly prototyping, testing and verifying application software
US7650596B2 (en) 2003-02-13 2010-01-19 Accurate Technologies Inc. Method for ECU calibration and diagnostics development
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
RU2262737C1 (ru) * 2004-02-09 2005-10-20 Муратов Юрий Викторович Система моделирования и анализа динамических процессов
US20050251790A1 (en) * 2004-04-14 2005-11-10 Robert Hundt Systems and methods for instrumenting loops of an executable program
US20050251791A1 (en) * 2004-04-14 2005-11-10 Robert Hundt Systems and methods for branch profiling loops of an executable program
US7487321B2 (en) * 2004-04-19 2009-02-03 Cisco Technology, Inc. Method and system for memory leak detection
US7293142B1 (en) 2004-04-19 2007-11-06 Cisco Technology, Inc. Memory leak detection system and method using contingency analysis
US7930491B1 (en) 2004-04-19 2011-04-19 Cisco Technology, Inc. Memory corruption detection system and method using contingency analysis regulation
US7716031B2 (en) * 2005-02-25 2010-05-11 Coware, Inc. Interface converter for unified view of multiple computer system simulations
US7742905B2 (en) * 2005-02-25 2010-06-22 Coware, Inc. Method and system for dynamically adjusting speed versus accuracy of computer platform simulation
WO2006091785A1 (en) * 2005-02-25 2006-08-31 Coware, Inc. Interface converter for unified view of multiple computer system simulations
US7899661B2 (en) 2006-02-16 2011-03-01 Synopsys, Inc. Run-time switching for simulation with dynamic run-time accuracy adjustment
US8543367B1 (en) 2006-02-16 2013-09-24 Synopsys, Inc. Simulation with dynamic run-time accuracy adjustment
US8464209B2 (en) * 2007-03-19 2013-06-11 Microsoft Corporation Using collaborative development information in a team environment
US8136103B2 (en) * 2008-03-28 2012-03-13 International Business Machines Corporation Combining static and dynamic compilation to remove delinquent loads
US20090259994A1 (en) * 2008-04-15 2009-10-15 Nokia Corporation Apparatus, Method, and Computer Program Product for Analyzing Program Memory Operations
US8516229B2 (en) 2010-02-05 2013-08-20 International Business Machines Corporation Two pass test case generation using self-modifying instruction replacement
US20160019133A1 (en) * 2014-07-15 2016-01-21 4D Soft Kft. Method for tracing a computer software
CN104461503B (zh) * 2014-11-06 2018-09-11 华自科技股份有限公司 动态组成软件界面的方法与系统
US11182272B2 (en) * 2018-04-17 2021-11-23 International Business Machines Corporation Application state monitoring
CN113127251B (zh) * 2021-04-30 2023-07-18 北京奇艺世纪科技有限公司 代码管理方法、装置、设备及存储介质

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4071744A (en) * 1976-05-13 1978-01-31 Pollock Eugene J Loop integration control system
US5581695A (en) * 1990-05-09 1996-12-03 Applied Microsystems Corporation Source-level run-time software code debugging instrument
EP0540680A4 (en) * 1990-07-20 1993-11-18 Temple University Of The Commonwealth System Of Higher Education System for high-level virtual computer with heterogeneous operating systems
US5522072A (en) * 1990-09-04 1996-05-28 At&T Corp. Arrangement for efficiently transferring program execution between subprograms
US5313616A (en) * 1990-09-18 1994-05-17 88Open Consortium, Ltd. Method for analyzing calls of application program by inserting monitoring routines into the executable version and redirecting calls to the monitoring routines
US5680584A (en) * 1991-03-07 1997-10-21 Digital Equipment Corporation Simulator system for code execution and debugging within a multi-architecture environment
CA2109799A1 (en) * 1991-05-24 1992-12-10 Daniel Mark Nosenchuck Optimizing compiler for computers
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
US5339430A (en) * 1992-07-01 1994-08-16 Telefonaktiebolaget L M Ericsson System for dynamic run-time binding of software modules in a computer system
US5410703A (en) * 1992-07-01 1995-04-25 Telefonaktiebolaget L M Ericsson System for changing software during computer operation
EP0582738A1 (en) * 1992-08-12 1994-02-16 International Business Machines Corporation Language compiler
FR2695460B1 (fr) * 1992-09-09 1994-10-21 Snecma Chambre de combustion de turbomachine à plusieurs injecteurs.
US5367685A (en) * 1992-12-22 1994-11-22 Firstperson, Inc. Method and apparatus for resolving data references in generated code
US5452457A (en) * 1993-01-29 1995-09-19 International Business Machines Corporation Program construct and methods/systems for optimizing assembled code for execution
US5369766A (en) * 1993-03-25 1994-11-29 Taligent, Inc. Object-oriented loader system with support for different load formats
US5487158A (en) * 1993-04-06 1996-01-23 International Business Machines Corporation Method and procedure call mechanism for calling 16-bit functions from 32-bit functions
DE69432974T2 (de) * 1993-05-10 2004-05-27 Thinking Software, Inc., Cupertino Verfahren und vorrichtung zur automatischen analyse eines zielprogramms
US5504914A (en) * 1993-06-23 1996-04-02 National Science Council Multi-level instruction boosting method using plurality of ordinary registers forming plurality of conjugate register pairs that are shadow registers to each other with different only in MSB
US5519866A (en) * 1993-06-28 1996-05-21 Taligent, Inc. Method and apparatus of incrementally linking components of a modeled computer program
JP3190773B2 (ja) * 1993-09-30 2001-07-23 日本電気株式会社 言語処理プログラムのコンパイル処理方法
US5581697A (en) * 1994-01-28 1996-12-03 Sun Microsystems, Inc. Method and apparatus for run-time error checking using dynamic patching
JP2590045B2 (ja) * 1994-02-16 1997-03-12 日本アイ・ビー・エム株式会社 分散処理制御方法及び分散処理システム
US5583988A (en) * 1994-03-09 1996-12-10 National Instruments Corporation Method and apparatus for providing runtime checking features in a compiled programming development environment
EP0679995B1 (en) * 1994-04-26 2000-10-04 Sun Microsystems, Inc. Method and apparatus for encoding data to be self-describing
US5628016A (en) * 1994-06-15 1997-05-06 Borland International, Inc. Systems and methods and implementing exception handling using exception registration records stored in stack memory
US5627981A (en) * 1994-07-01 1997-05-06 Digital Equipment Corporation Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
US5652884A (en) * 1994-11-14 1997-07-29 Object Technology Licensing Corp. Method and apparatus for dynamic update of an existing object in an object editor
US5548794A (en) * 1994-12-05 1996-08-20 Motorola, Inc. Data processor and method for providing show cycles on a fast multiplexed bus
US5590331A (en) * 1994-12-23 1996-12-31 Sun Microsystems, Inc. Method and apparatus for generating platform-standard object files containing machine-independent code
US5740440A (en) * 1995-01-06 1998-04-14 Objective Software Technology Dynamic object visualization and browsing system
US5701488A (en) * 1995-06-07 1997-12-23 Motorola, Inc. Method and apparatus for restoring a target MCU debug session to a prior state

Also Published As

Publication number Publication date
DE69823153T2 (de) 2004-10-14
US5911073A (en) 1999-06-08
EP0926592A2 (en) 1999-06-30
EP0926592A3 (en) 2000-08-16
DE69823153D1 (de) 2004-05-19
EP0926592B1 (en) 2004-04-14

Similar Documents

Publication Publication Date Title
JPH11232138A (ja) エミュレーション方法
US6164841A (en) Method, apparatus, and product for dynamic software code translation system
Chow et al. Decoupling dynamic program analysis from execution in virtual environments
US8621279B1 (en) System and method for generating emulation-based scenarios for Error Handling
US6247172B1 (en) Method for a translation system that aggressively optimizes and preserves full synchronous exception state
US8930912B2 (en) Method and system for performing software verification
US5960198A (en) Software profiler with runtime control to enable and disable instrumented executable
US8887141B2 (en) Automatically modifying a native code module accessed from virtual machine bytecode to determine execution information
US9003367B2 (en) Specific debug trace collecting
JP2000181725A (ja) 実行可能なコ―ドを改変し、追加機能を付与するための方法およびシステム
US20050050528A1 (en) Method and apparatus to guarantee type and initialization safety in multithreaded programs
US20110029819A1 (en) System and method for providing program tracking information
Mera et al. {SHiFT}: Semi-hosted Fuzz Testing for Embedded Applications
Honarmand et al. Replay debugging: Leveraging record and replay for program debugging
US20100275185A1 (en) System and Method for High Performance Coverage Analysis
Ročkai et al. DiVM: model checking with LLVM and graph memory
US20070234307A1 (en) Methods and apparatus to inline conditional software instrumentation
Hazelwood Dynamic binary modification: Tools, techniques, and applications
CN109144849B (zh) 一种嵌入式软件调测方法
US20030070117A1 (en) Simulation apparatus and simulation method
US20080127118A1 (en) Method and system for dynamic patching of software
Gao et al. A fast and generic hybrid simulation approach using C virtual machine
Yan et al. Fast PokeEMU: Scaling generated instruction tests using aggregation and state chaining
JPH11110256A (ja) プログラムデバッグ装置、プログラムデバッグ方法及びその方法を記録したコンピュータ読取り可能な記録媒体
Demetrescu et al. A portable virtual machine for program debugging and directing

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051115

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051115

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20060317