JPH08147173A - エミュレーション装置 - Google Patents
エミュレーション装置Info
- Publication number
- JPH08147173A JPH08147173A JP6309813A JP30981394A JPH08147173A JP H08147173 A JPH08147173 A JP H08147173A JP 6309813 A JP6309813 A JP 6309813A JP 30981394 A JP30981394 A JP 30981394A JP H08147173 A JPH08147173 A JP H08147173A
- Authority
- JP
- Japan
- Prior art keywords
- emulation
- machine
- execution
- group
- processing
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【目的】 ターゲットマシンの動作を実行マシン上でエ
ミュレートするエミュレーション装置において、BIO
Sのようにジャンプテーブルを介して呼ばれる処理をエ
ミュレーションする。 【構成】 BIOSを呼び出す手続を直接トラップする
のではなく、ジャンプテーブルJTを介して呼ばれた場
所に特権命令(例えばHLT命令)を置き、特権命令の
実行によりトラップを起こしてエミュレーションモジュ
ールに処理を移行する。HLT命令に引き続いて識別子
を書いておき、この識別子によりディスパッチャDPか
ら必要なBIOSエミュレーションモジュールを呼び出
す。従って、ジャンプテーブルを書き直す常駐プログラ
ムが存在しても正常に動作する。
ミュレートするエミュレーション装置において、BIO
Sのようにジャンプテーブルを介して呼ばれる処理をエ
ミュレーションする。 【構成】 BIOSを呼び出す手続を直接トラップする
のではなく、ジャンプテーブルJTを介して呼ばれた場
所に特権命令(例えばHLT命令)を置き、特権命令の
実行によりトラップを起こしてエミュレーションモジュ
ールに処理を移行する。HLT命令に引き続いて識別子
を書いておき、この識別子によりディスパッチャDPか
ら必要なBIOSエミュレーションモジュールを呼び出
す。従って、ジャンプテーブルを書き直す常駐プログラ
ムが存在しても正常に動作する。
Description
【0001】
【産業上の利用分野】本発明は、エミュレーション装置
に関し、詳しくは少なくとも演算処理部、記憶部、入出
力部を備えたコンピュータである実行マシン上で、実行
マシンのアーキテクチャとは異なるアーキテクチャを備
えたコンピュータであるターゲットマシン用のプログラ
ムを実行させるエミュレーション装置に関する。
に関し、詳しくは少なくとも演算処理部、記憶部、入出
力部を備えたコンピュータである実行マシン上で、実行
マシンのアーキテクチャとは異なるアーキテクチャを備
えたコンピュータであるターゲットマシン用のプログラ
ムを実行させるエミュレーション装置に関する。
【0002】
【従来の技術】従来、この種のエミュレーション装置と
しては、特開平5−46406号に開示されているよう
に、ターゲットマシンのOSファンクションコール、B
IOSファンクションコールやI/O命令、さらには割
り込みテーブルなどを、個々にエミュレーションするこ
とで、ターゲットマシン用に作られたアプリケーション
プログラムを実行マシン上で実行可能とする仮想計算機
エミュレーション装置が知られている。
しては、特開平5−46406号に開示されているよう
に、ターゲットマシンのOSファンクションコール、B
IOSファンクションコールやI/O命令、さらには割
り込みテーブルなどを、個々にエミュレーションするこ
とで、ターゲットマシン用に作られたアプリケーション
プログラムを実行マシン上で実行可能とする仮想計算機
エミュレーション装置が知られている。
【0003】こうしたエミュレーション装置では、特定
の中央演算処理部(以下、CPUという)に備えられた
機能を用い、エミュレーションを行なうべき命令が実行
されたり、エミュレーションを行なうべきアドレスやI
/Oがアクセスされた時、これをトラップして、ターゲ
ットマシン上でいかなる処理を実行しようとしているか
を解析し、同様の結果が実行マシン上で得られるよう、
予め用意した代替処理を実行するのである。
の中央演算処理部(以下、CPUという)に備えられた
機能を用い、エミュレーションを行なうべき命令が実行
されたり、エミュレーションを行なうべきアドレスやI
/Oがアクセスされた時、これをトラップして、ターゲ
ットマシン上でいかなる処理を実行しようとしているか
を解析し、同様の結果が実行マシン上で得られるよう、
予め用意した代替処理を実行するのである。
【0004】近年、各マシンには特定のオペレーティン
グシステムが用意されることが多く、この場合には、B
IOS(Basic Input/Output Sy
stem)やBDOS(Basic Disk Ope
rating System)が用意されるのが通常で
ある。このうち、BIOSは、マシンのハードウェアに
近い部分で、特定のハードウェアに結びついた一群の処
理を用意し、オペレーティングシステム上で動作するア
プリケーションプログラムからはハードウェアの相違を
気にしないで、特定の入出力処理を実行可能とするもの
である。例えば、コンソールから一文字入力する場合、
実際のハードウェアには種々の相違が有り得るが、BI
OSの特定のアドレスをコールすると、文字入力があれ
ば、入力された文字を返り値として持ってサブルーチン
から戻ってくるよう所定のプログラムが用意されている
のである。ハードウェアに関わるこれらの処理は、例え
ばキーボード,CRT,シリアル通信ポート,フロッピ
ディスク,ハードディスク,カレンダ時計,タイマなど
があり、対応するBIOSがROMで用意されるのが一
般的である。
グシステムが用意されることが多く、この場合には、B
IOS(Basic Input/Output Sy
stem)やBDOS(Basic Disk Ope
rating System)が用意されるのが通常で
ある。このうち、BIOSは、マシンのハードウェアに
近い部分で、特定のハードウェアに結びついた一群の処
理を用意し、オペレーティングシステム上で動作するア
プリケーションプログラムからはハードウェアの相違を
気にしないで、特定の入出力処理を実行可能とするもの
である。例えば、コンソールから一文字入力する場合、
実際のハードウェアには種々の相違が有り得るが、BI
OSの特定のアドレスをコールすると、文字入力があれ
ば、入力された文字を返り値として持ってサブルーチン
から戻ってくるよう所定のプログラムが用意されている
のである。ハードウェアに関わるこれらの処理は、例え
ばキーボード,CRT,シリアル通信ポート,フロッピ
ディスク,ハードディスク,カレンダ時計,タイマなど
があり、対応するBIOSがROMで用意されるのが一
般的である。
【0005】これらBIOSは、アプリケーションプロ
グラムから直接呼ばれることもあるが、デバイスドライ
バを介して呼ばれることも多い。この様子を図19に示
す。ハードウェアに対応して各機能毎に用意されたこれ
らBIOSは、ソフトウェア割込を利用して、あるいは
ジャンプテーブルを参照して直接呼び出される。従っ
て、ターゲットマシン用のBIOSの機能をエミュレー
トしようとすれば、このジャンプテーブルを書き直した
り、ソフトウェア割込自体を特権命令としてトラップ
し、実行マシン上に用意した等価な処理に置き換えてい
た。なお、実行マシンのBIOSに等価なものがあれ
ば、そのまま置き換えても良い。
グラムから直接呼ばれることもあるが、デバイスドライ
バを介して呼ばれることも多い。この様子を図19に示
す。ハードウェアに対応して各機能毎に用意されたこれ
らBIOSは、ソフトウェア割込を利用して、あるいは
ジャンプテーブルを参照して直接呼び出される。従っ
て、ターゲットマシン用のBIOSの機能をエミュレー
トしようとすれば、このジャンプテーブルを書き直した
り、ソフトウェア割込自体を特権命令としてトラップ
し、実行マシン上に用意した等価な処理に置き換えてい
た。なお、実行マシンのBIOSに等価なものがあれ
ば、そのまま置き換えても良い。
【0006】
【発明が解決しようとする課題】しかしながら、BIO
Sのような一群の処理を、その呼出の処理の段階でトラ
ップし置き換えてしまうと、ターゲットマシンでは正常
に動作したソフトウェアがエミュレートを行なっている
実行マシン上では正常に動作しないということがあっ
た。例えば、常駐型プログラムの一部には、BIOSの
ジャンプテーブルを書き換えて、オペレーティングシス
テムの機能の一部を拡張するものが存在するが、エミュ
レーション装置が呼出の処理自体をトラップしてしまう
と、こうしたプログラムを呼び出すことができなくなっ
て、正常に動作しなくなってしまう。
Sのような一群の処理を、その呼出の処理の段階でトラ
ップし置き換えてしまうと、ターゲットマシンでは正常
に動作したソフトウェアがエミュレートを行なっている
実行マシン上では正常に動作しないということがあっ
た。例えば、常駐型プログラムの一部には、BIOSの
ジャンプテーブルを書き換えて、オペレーティングシス
テムの機能の一部を拡張するものが存在するが、エミュ
レーション装置が呼出の処理自体をトラップしてしまう
と、こうしたプログラムを呼び出すことができなくなっ
て、正常に動作しなくなってしまう。
【0007】また、ソフトウェア割込をトラップするだ
けでは、BIOSのジャンプテーブルを自分で参照し
て、あるいは予め公開されたBIOSのエントリポイン
トを用いて直接、BIOSを呼び出すものには対応する
ことができない。こうした問題は、BIOSに限られた
ものではなく、ジャンプテーブルを介して呼び出される
一群の処理、あるいは予め知られたエントリポイントを
利用した直接呼び出される一群の処理においては共通の
ものである。
けでは、BIOSのジャンプテーブルを自分で参照し
て、あるいは予め公開されたBIOSのエントリポイン
トを用いて直接、BIOSを呼び出すものには対応する
ことができない。こうした問題は、BIOSに限られた
ものではなく、ジャンプテーブルを介して呼び出される
一群の処理、あるいは予め知られたエントリポイントを
利用した直接呼び出される一群の処理においては共通の
ものである。
【0008】本発明のエミュレーション装置は、こうし
た問題を解決し、ターゲットマシン上のジャンプテーブ
ルを介して呼出可能な一群の処理を、他の実行マシン上
でエミュレートすることを目的としてなされ、次の構成
を採った。
た問題を解決し、ターゲットマシン上のジャンプテーブ
ルを介して呼出可能な一群の処理を、他の実行マシン上
でエミュレートすることを目的としてなされ、次の構成
を採った。
【0009】
【課題を解決するための手段および作用】本発明のエミ
ュレーション装置(請求項1に対応)は、少なくとも演
算処理部、記憶部、入出力部を備えたコンピュータであ
る実行マシン上で、該実行マシンのアーキテクチャとは
異なるアーキテクチャを備えたコンピュータであるター
ゲットマシン用のプログラムを実行させるエミュレーシ
ョン装置であって、前記ターゲットマシンにおいてジャ
ンプテーブルを介して呼び出し可能な一群の各処理と等
価な処理を前記実行マシンに実行させる一群の機能モジ
ュールと、前記ターゲットマシンにおける前記一群の処
理の一つが前記ジャンプテーブルを介して呼び出された
後、実質的な処理の開始前に、該処理を前記実行マシン
上の一群の機能モジュールの対応する一つに移行する処
理移行手段とを備えたことを要旨とする。
ュレーション装置(請求項1に対応)は、少なくとも演
算処理部、記憶部、入出力部を備えたコンピュータであ
る実行マシン上で、該実行マシンのアーキテクチャとは
異なるアーキテクチャを備えたコンピュータであるター
ゲットマシン用のプログラムを実行させるエミュレーシ
ョン装置であって、前記ターゲットマシンにおいてジャ
ンプテーブルを介して呼び出し可能な一群の各処理と等
価な処理を前記実行マシンに実行させる一群の機能モジ
ュールと、前記ターゲットマシンにおける前記一群の処
理の一つが前記ジャンプテーブルを介して呼び出された
後、実質的な処理の開始前に、該処理を前記実行マシン
上の一群の機能モジュールの対応する一つに移行する処
理移行手段とを備えたことを要旨とする。
【0010】また、請求項2のエミュレーション装置
は、少なくとも演算処理部、記憶部、入出力部を備えた
コンピュータである実行マシン上で、該実行マシンのア
ーキテクチャとは異なるアーキテクチャを備えたコンピ
ュータであるターゲットマシン用のプログラムを実行さ
せるエミュレーション装置であって、前記ターゲットマ
シンにおいて予め定められたアドレスにより呼び出し可
能な一群の各処理と等価な処理を前記実行マシンに実行
させる一群の機能モジュールと、前記ターゲットマシン
における前記一群の処理の一つが前記ジャンプテーブル
を介して呼び出された後、実質的な処理の開始前に、該
処理を前記実行マシン上の一群の機能モジュールの対応
する一つに移行する処理移行手段とを備えたことを要旨
とする。
は、少なくとも演算処理部、記憶部、入出力部を備えた
コンピュータである実行マシン上で、該実行マシンのア
ーキテクチャとは異なるアーキテクチャを備えたコンピ
ュータであるターゲットマシン用のプログラムを実行さ
せるエミュレーション装置であって、前記ターゲットマ
シンにおいて予め定められたアドレスにより呼び出し可
能な一群の各処理と等価な処理を前記実行マシンに実行
させる一群の機能モジュールと、前記ターゲットマシン
における前記一群の処理の一つが前記ジャンプテーブル
を介して呼び出された後、実質的な処理の開始前に、該
処理を前記実行マシン上の一群の機能モジュールの対応
する一つに移行する処理移行手段とを備えたことを要旨
とする。
【0011】即ち、これら請求項1または2のエミュレ
ーション装置は、例えばBIOSのような一群の処理に
関し、これが呼び出された後であって実質的な処理の開
始前に、これと等価な処理を実行マシン上で実現する一
群の機能モジュールに処理を移行する。従って、処理を
呼び出す以前に代替処理に移してしまうことがなく、こ
の処理の開始を検出して処理を開始する他の処理が存在
しても、その処理の開始を含めてエミュレーションを行
なう。
ーション装置は、例えばBIOSのような一群の処理に
関し、これが呼び出された後であって実質的な処理の開
始前に、これと等価な処理を実行マシン上で実現する一
群の機能モジュールに処理を移行する。従って、処理を
呼び出す以前に代替処理に移してしまうことがなく、こ
の処理の開始を検出して処理を開始する他の処理が存在
しても、その処理の開始を含めてエミュレーションを行
なう。
【0012】また、請求項3のエミュレーション装置
は、請求項1または2の処理移行手段が、一群の処理の
一つが呼び出されたアドレスにおかれた特権命令の実行
を検出する検出手段と、特権命令の検出に従って、処理
を前記一群の機能モジュールの対応する一つに移行する
手段とからなることを要旨とする。従って、かかる処理
が呼び出されたことを確実かつ容易に検出することがで
きる。
は、請求項1または2の処理移行手段が、一群の処理の
一つが呼び出されたアドレスにおかれた特権命令の実行
を検出する検出手段と、特権命令の検出に従って、処理
を前記一群の機能モジュールの対応する一つに移行する
手段とからなることを要旨とする。従って、かかる処理
が呼び出されたことを確実かつ容易に検出することがで
きる。
【0013】請求項4のエミュレーション装置は、請求
項1または2の一群の処理が、ターゲットマシンに用意
されたBIOSであることを要旨とする。
項1または2の一群の処理が、ターゲットマシンに用意
されたBIOSであることを要旨とする。
【0014】請求項5のエミュレーション装置は、請求
項3の特権命令が、実行マシンの演算処理部を停止する
命令であることを要旨とする。通常、実行マシンの演算
処理部を停止する命令は、その実行サイクルが他の命令
と比較して短いので、効率良くエミュレーションの処理
に移行することができる。
項3の特権命令が、実行マシンの演算処理部を停止する
命令であることを要旨とする。通常、実行マシンの演算
処理部を停止する命令は、その実行サイクルが他の命令
と比較して短いので、効率良くエミュレーションの処理
に移行することができる。
【0015】請求項6のエミュレーション装置は、請求
項1の処理移行手段が、エミュレーションの開始前に、
所定のメモリ領域に、特権命令を配置する特権命令配置
手段と、エミュレーションの開始前に、ジャンプテーブ
ルの内容をこの特権命令が配置されたアドレスに置き換
える置換手段と、一群の処理の一つが呼び出されたアド
レスにおかれた特権命令の実行を検出する検出手段と、
特権命令の検出に従って、処理を前記一群の機能モジュ
ールの対応する一つに移行する手段とを備えることを要
旨とする。従って、かかる処理以降、各手段の働きを自
動的に実現することができる。
項1の処理移行手段が、エミュレーションの開始前に、
所定のメモリ領域に、特権命令を配置する特権命令配置
手段と、エミュレーションの開始前に、ジャンプテーブ
ルの内容をこの特権命令が配置されたアドレスに置き換
える置換手段と、一群の処理の一つが呼び出されたアド
レスにおかれた特権命令の実行を検出する検出手段と、
特権命令の検出に従って、処理を前記一群の機能モジュ
ールの対応する一つに移行する手段とを備えることを要
旨とする。従って、かかる処理以降、各手段の働きを自
動的に実現することができる。
【0016】請求項7のエミュレーション装置は、請求
項6の特権命令配置手段が、所定のメモリ領域内に、特
権命令を配置可能な箇所を検索する検索手段と、検索し
た箇所に、この特権命令と共に、対応する一群の処理の
一つを示す識別子を配置する識別子配置手段とを備えた
ことを要旨とする。従って、このエミュレーション装置
は、特権命令を配置する箇所を自ら検索して配置でき、
かつ複数存在する場合には、その識別子を配置すること
で、特権命令が実行されたとき、その原因の特定を容易
として、必要なエミュレーションの起動を容易とする。
項6の特権命令配置手段が、所定のメモリ領域内に、特
権命令を配置可能な箇所を検索する検索手段と、検索し
た箇所に、この特権命令と共に、対応する一群の処理の
一つを示す識別子を配置する識別子配置手段とを備えた
ことを要旨とする。従って、このエミュレーション装置
は、特権命令を配置する箇所を自ら検索して配置でき、
かつ複数存在する場合には、その識別子を配置すること
で、特権命令が実行されたとき、その原因の特定を容易
として、必要なエミュレーションの起動を容易とする。
【0017】
【実施例】以上説明した本発明の構成・作用を一層明ら
かにするために、以下本発明の好適な実施例について説
明する。図1は、本実施例のエミュレーション装置の構
成を概念的に示すブロック図である。このエミュレーシ
ョン装置は、実際には、PC−AT機と互換性を有する
DOS/V機(PC−ATおよびDOS/Vは、IBM
社の商標)を実行マシンとし、その上で、ターゲットマ
シンであるPC−9800シリーズ(PC−9800は
日本電気株式会社の商標)のアーキテクチャを実現する
ものである。図2は、DOS/V機の概略構成を示すブ
ロック図、図3は、そのメモリおよびI/Oマップを示
す説明図である。
かにするために、以下本発明の好適な実施例について説
明する。図1は、本実施例のエミュレーション装置の構
成を概念的に示すブロック図である。このエミュレーシ
ョン装置は、実際には、PC−AT機と互換性を有する
DOS/V機(PC−ATおよびDOS/Vは、IBM
社の商標)を実行マシンとし、その上で、ターゲットマ
シンであるPC−9800シリーズ(PC−9800は
日本電気株式会社の商標)のアーキテクチャを実現する
ものである。図2は、DOS/V機の概略構成を示すブ
ロック図、図3は、そのメモリおよびI/Oマップを示
す説明図である。
【0018】説明の便宜上、まず図2に従い、実行マシ
ンであるDOS/V機の構成について説明する。このD
OS/V機は、図示するように、ローカルバス22に接
続された演算処理部20、ローカルバス22を外部バス
の一つであるPCIバス32に接続するPCIブリッジ
30、PCIバス32を介して演算処理部20のCPU
21等によりアクセスを受けるコントローラ部40、各
種のI/O装置等を制御する機器が低速の外部バスであ
るISAバス42に接続されたI/O部60、および周
辺機器であるキーボード72,スピーカ74,CRT7
6などから構成されている。
ンであるDOS/V機の構成について説明する。このD
OS/V機は、図示するように、ローカルバス22に接
続された演算処理部20、ローカルバス22を外部バス
の一つであるPCIバス32に接続するPCIブリッジ
30、PCIバス32を介して演算処理部20のCPU
21等によりアクセスを受けるコントローラ部40、各
種のI/O装置等を制御する機器が低速の外部バスであ
るISAバス42に接続されたI/O部60、および周
辺機器であるキーボード72,スピーカ74,CRT7
6などから構成されている。
【0019】演算処理部20は、中央演算処理装置とし
てのCPU21(本実施例ではインテル社製Penti
umを使用)、キャッシュメモリ23,そのキャッシュ
コントローラ24およびメインメモリ25から構成され
ている。PCIブリッジ30は、高速のPCIバス32
を制御する機能を備えたコントローラである。CPU2
1が扱うメモリ空間は、CPU21の内部に用意された
各種レジスタにより、実際の物理アドレスより広い論理
アドレスに拡張されている。
てのCPU21(本実施例ではインテル社製Penti
umを使用)、キャッシュメモリ23,そのキャッシュ
コントローラ24およびメインメモリ25から構成され
ている。PCIブリッジ30は、高速のPCIバス32
を制御する機能を備えたコントローラである。CPU2
1が扱うメモリ空間は、CPU21の内部に用意された
各種レジスタにより、実際の物理アドレスより広い論理
アドレスに拡張されている。
【0020】コントローラ部40は、モニタ(CRT)
76への画像の表示を司るグラフィックスコントローラ
(以下、VGAと呼ぶ)44、接続されるSCSI機器
とのデータ転送を司るSCSIコントローラ46、PC
Iバス32と下位のISAバスとのインタフェースを司
るPCI−ISAブリッジ48から構成されている。V
GA44は、CRT76に対して、640×480ドッ
ト、16色表示が可能である。なお、表示用のフォント
を記憶したキャラクタジェネレータや所定のコマンドを
受け取って所定の図形を描画するグラフィックコントロ
ーラ、さらには描画画像を記憶するビデオメモリ等は、
このVGA44に実装されているが、これらの構成は周
知のものなので、必要に応じて後述するものとし、図2
では省略した。
76への画像の表示を司るグラフィックスコントローラ
(以下、VGAと呼ぶ)44、接続されるSCSI機器
とのデータ転送を司るSCSIコントローラ46、PC
Iバス32と下位のISAバスとのインタフェースを司
るPCI−ISAブリッジ48から構成されている。V
GA44は、CRT76に対して、640×480ドッ
ト、16色表示が可能である。なお、表示用のフォント
を記憶したキャラクタジェネレータや所定のコマンドを
受け取って所定の図形を描画するグラフィックコントロ
ーラ、さらには描画画像を記憶するビデオメモリ等は、
このVGA44に実装されているが、これらの構成は周
知のものなので、必要に応じて後述するものとし、図2
では省略した。
【0021】PCI−ISAブリッジ48を介して接続
されたISAバス42は、各種のI/O機器が接続され
る入出力制御用のバスであり、DMAコントローラ(以
下単にDMAと呼ぶ)50、リアルタイムクロック(R
TC)52、複合I/Oポート54、サウンドI/O5
6、キーボード72およびマウス73とのインタフェー
スを司るキーボードインタフェース(以下KEYと呼
ぶ)64、優先順位を有する割り込み制御を行なう割り
込みコントローラ(以下PICと呼ぶ)66、各種の時
間カウントやビープ音を発生するタイマ68等から構成
されている。なお、ISAバス42には、拡張ボードが
実装可能なISAスロット62が接続されている。
されたISAバス42は、各種のI/O機器が接続され
る入出力制御用のバスであり、DMAコントローラ(以
下単にDMAと呼ぶ)50、リアルタイムクロック(R
TC)52、複合I/Oポート54、サウンドI/O5
6、キーボード72およびマウス73とのインタフェー
スを司るキーボードインタフェース(以下KEYと呼
ぶ)64、優先順位を有する割り込み制御を行なう割り
込みコントローラ(以下PICと呼ぶ)66、各種の時
間カウントやビープ音を発生するタイマ68等から構成
されている。なお、ISAバス42には、拡張ボードが
実装可能なISAスロット62が接続されている。
【0022】複合I/Oポート54には、パラレル出
力,シリアル出力の他、フロッピディスク装置82やハ
ードディスク84を制御する信号を入出力するポートが
用意されている。また、パラレル入出力には、パラレル
ポート86を介してプリンタ88が、シリアル入出力に
は、シリアルポート90を介してモデム92が、各々接
続されている。また、サウンドI/O56には、上述し
たスピーカ74の他、マイクロフォン96が接続可能と
されている。これらの構成の他、DOS/V機では、標
準化されたI/Oチャンネルが用意されることも多い
が、本実施例では図示および説明は省略する。
力,シリアル出力の他、フロッピディスク装置82やハ
ードディスク84を制御する信号を入出力するポートが
用意されている。また、パラレル入出力には、パラレル
ポート86を介してプリンタ88が、シリアル入出力に
は、シリアルポート90を介してモデム92が、各々接
続されている。また、サウンドI/O56には、上述し
たスピーカ74の他、マイクロフォン96が接続可能と
されている。これらの構成の他、DOS/V機では、標
準化されたI/Oチャンネルが用意されることも多い
が、本実施例では図示および説明は省略する。
【0023】かかる構成を有するDOS/V機におい
て、PC−9800機のアーキテクチャを実現する手法
について、以下説明する。まず最初に、本実施例の実行
マシンであるDOS/V機のCPU21が有するメモリ
管理機能と、実行モードについて説明する。図3は、タ
スクが管理するアドレス空間と物理アドレスとの関係を
示す説明図である。また、図4は、リアルモード、保護
(プロテクト)モード、仮想8086モード間の関係を
示す説明図である。i80386(インテル社製)以上
のCPUでは、タスクが管理するアドレスを所定の物理
アドレスに割り当てタスク内では所定の論理アドレスで
処理を行なうことができる機能が備えられている。従っ
て、各々のタスクに処理が移行した場合には、そのタス
ク内で所定のアドレスをアクセスしても、他のタスクに
とっての同一アドレスには、何の影響も与えないのであ
る。
て、PC−9800機のアーキテクチャを実現する手法
について、以下説明する。まず最初に、本実施例の実行
マシンであるDOS/V機のCPU21が有するメモリ
管理機能と、実行モードについて説明する。図3は、タ
スクが管理するアドレス空間と物理アドレスとの関係を
示す説明図である。また、図4は、リアルモード、保護
(プロテクト)モード、仮想8086モード間の関係を
示す説明図である。i80386(インテル社製)以上
のCPUでは、タスクが管理するアドレスを所定の物理
アドレスに割り当てタスク内では所定の論理アドレスで
処理を行なうことができる機能が備えられている。従っ
て、各々のタスクに処理が移行した場合には、そのタス
ク内で所定のアドレスをアクセスしても、他のタスクに
とっての同一アドレスには、何の影響も与えないのであ
る。
【0024】また、このCPU21は、リアルモード,
保護モード,仮想86モードの3つの動作モードを有す
る。リアルモードとは、このCPU21を高速の808
6として動作させるモードあり、MS−DOS(マイク
ロソフト社の商標)等を立ち上げる場合には、通常この
リアルモードで処理を開始する。また、保護モードは、
特権レベルを設定したリング保護の機能を用いた動作モ
ードであり、セグメント単位で特権レベルを設定するこ
とにより、特定の処理による直接アクセスからの保護を
実現する。例えば、アプリケーションプログラムの特権
レベルを最下位にしておくことで、システムとして規定
されたアドレス範囲やI/Oを直接アクセスできないも
のとすることが容易にでき、直接のアクセスが生じた場
合には、例外処理が起動されていわゆるトラップが生
じ、処理が特定のアドレスに移行するものとすることが
できる。更に仮想8086モードは、保護モードのまま
で8086のコードを直接実行可能とするモードであ
り、CPU21は、保護モードと同様に動作するが、ア
プリケーションプログラムにより指定されている論理番
地を8086と同様に解釈して実行する。
保護モード,仮想86モードの3つの動作モードを有す
る。リアルモードとは、このCPU21を高速の808
6として動作させるモードあり、MS−DOS(マイク
ロソフト社の商標)等を立ち上げる場合には、通常この
リアルモードで処理を開始する。また、保護モードは、
特権レベルを設定したリング保護の機能を用いた動作モ
ードであり、セグメント単位で特権レベルを設定するこ
とにより、特定の処理による直接アクセスからの保護を
実現する。例えば、アプリケーションプログラムの特権
レベルを最下位にしておくことで、システムとして規定
されたアドレス範囲やI/Oを直接アクセスできないも
のとすることが容易にでき、直接のアクセスが生じた場
合には、例外処理が起動されていわゆるトラップが生
じ、処理が特定のアドレスに移行するものとすることが
できる。更に仮想8086モードは、保護モードのまま
で8086のコードを直接実行可能とするモードであ
り、CPU21は、保護モードと同様に動作するが、ア
プリケーションプログラムにより指定されている論理番
地を8086と同様に解釈して実行する。
【0025】本実施例のDOS/V機に電源が投入され
ると、このDOS/V機は、ハードディスクのブートブ
ロックを読み出し、ハードディスク上のOS等を読み込
み可能とする。また、ROMで提供されているDOS/
V機のとしてのBIOSを主記憶上でアクセス可能な状
態とする(後述する図7符号A1)。DOS/V機のメ
モリマップおよびI/Oマップを図5に示す。その後、
本実施例における初期化手段である初期化処理ルーチン
が実行される。この処理ルーチンを図6に示す。また、
図6の初期化処理ルーチンの実行の様子を図7の説明図
に示す。以下、図6のフローチャートと図7の説明図を
参照しつつ、エミュレーション装置が初期化される様子
を説明する。
ると、このDOS/V機は、ハードディスクのブートブ
ロックを読み出し、ハードディスク上のOS等を読み込
み可能とする。また、ROMで提供されているDOS/
V機のとしてのBIOSを主記憶上でアクセス可能な状
態とする(後述する図7符号A1)。DOS/V機のメ
モリマップおよびI/Oマップを図5に示す。その後、
本実施例における初期化手段である初期化処理ルーチン
が実行される。この処理ルーチンを図6に示す。また、
図6の初期化処理ルーチンの実行の様子を図7の説明図
に示す。以下、図6のフローチャートと図7の説明図を
参照しつつ、エミュレーション装置が初期化される様子
を説明する。
【0026】図6に示した初期化処理ルーチンが起動さ
れると、まず、エミュレーションプログラムのカーネル
をハードディスク58からロードする処理を行なう(ス
テップS100、図7符号A2)。カーネルとは、エミ
ュレーションを行なう処理の内、例外処理が起動された
際、その原因の解析を行ない、ディスパッチャと呼ばれ
る処理を介して実際にエミュレーションを行なう実行モ
ジュールを呼び出す一連の手続(検出手段および判別手
段に相当する処理)を言う。また、ディスパッチャと
は、エミュレーションを行なう処理のうち、呼出手段に
相当し、カーネルによる分析に基づいて実際にエミュレ
ーションを行なう実行モジュールを呼び出す一連の手続
をいう。このカーネルのロードに引き続き、カーネルを
その実行位置に転送し(ステップS110、図7符号A
3)、カーネルに処理を移行する(ステップS12
0)。従って、図6では一連の処理として示している
が、ステップS130以下は、カーネル自身の処理とな
る。
れると、まず、エミュレーションプログラムのカーネル
をハードディスク58からロードする処理を行なう(ス
テップS100、図7符号A2)。カーネルとは、エミ
ュレーションを行なう処理の内、例外処理が起動された
際、その原因の解析を行ない、ディスパッチャと呼ばれ
る処理を介して実際にエミュレーションを行なう実行モ
ジュールを呼び出す一連の手続(検出手段および判別手
段に相当する処理)を言う。また、ディスパッチャと
は、エミュレーションを行なう処理のうち、呼出手段に
相当し、カーネルによる分析に基づいて実際にエミュレ
ーションを行なう実行モジュールを呼び出す一連の手続
をいう。このカーネルのロードに引き続き、カーネルを
その実行位置に転送し(ステップS110、図7符号A
3)、カーネルに処理を移行する(ステップS12
0)。従って、図6では一連の処理として示している
が、ステップS130以下は、カーネル自身の処理とな
る。
【0027】カーネルは、プロテクトモード用のいくつ
かのプログラムを転送し、CPU21の動作モードをプ
ロテクトモードに切り換えて、DOS/V用のメモリ空
間およびPC−9800用のメモリ空間を、それぞれ上
位のアドレスに確保する処理を行なう(ステップS13
0、図7符号A4)。このメモリ空間は、仮想的なDO
S/V用のタスクおよびPC−9800用のタスクに対
応しており、このメモリ空間を論理的には、00000
0Hから始まる1Mの主記憶として割り当てるのであ
る。次に、カーネルと共に動作するディスパッチャ(図
7符号A5)、更にエミュレーションを行なう各種の実
行モジュールを順次転送する処理を行なう(ステップS
140、図7符号A6)。この結果、物理的なメモリ上
では、000000Hから100000Hまでの空間に
は、カーネルの機能の一部と仮想DOS/VのBIOS
関係のルーチンが配置され、その上位には、エミュレー
ションのための実行モジュールが配置される。
かのプログラムを転送し、CPU21の動作モードをプ
ロテクトモードに切り換えて、DOS/V用のメモリ空
間およびPC−9800用のメモリ空間を、それぞれ上
位のアドレスに確保する処理を行なう(ステップS13
0、図7符号A4)。このメモリ空間は、仮想的なDO
S/V用のタスクおよびPC−9800用のタスクに対
応しており、このメモリ空間を論理的には、00000
0Hから始まる1Mの主記憶として割り当てるのであ
る。次に、カーネルと共に動作するディスパッチャ(図
7符号A5)、更にエミュレーションを行なう各種の実
行モジュールを順次転送する処理を行なう(ステップS
140、図7符号A6)。この結果、物理的なメモリ上
では、000000Hから100000Hまでの空間に
は、カーネルの機能の一部と仮想DOS/VのBIOS
関係のルーチンが配置され、その上位には、エミュレー
ションのための実行モジュールが配置される。
【0028】ステップS140で、メモリ上に順次ロー
ドされる実行モジュールは、所定の名称のファイルにテ
キストデータの形で書かれたリストに従って、ハードデ
ィスク84から読み出される。以下、実行モジュールの
配置に伴う初期化の処理について説明するが、先に実行
モジュールがすべてロードされた後の全体構成につい
て、図1を用いて説明する。カーネルKR,ディスパッ
チャDPおよび各実行モジュールがロードされ初期化さ
れると、図1に示すように、実施例のエミュレータ装置
が、このDOS/V機の上に実現されることになる。即
ち、このエミュレーション装置は、DOS/V機の上に
仮想的に用意されたPC−9800機と同一の環境上
(仮想PC上という)で実行されるプログラムAPPが
特権命令などを実行した場合、例外の発生とみなして呼
び出されるカーネルKR、カーネルKRにより特定され
た例外原因に基づいて呼び出され、この例外原因に基づ
いて、機能毎に用意された各実行モジュールを呼び出す
ディスパッチャDP、ディスパッチャDPから呼び出さ
れて各機能のエミュレーションを行なう各種実行モジュ
ールから構成されている。
ドされる実行モジュールは、所定の名称のファイルにテ
キストデータの形で書かれたリストに従って、ハードデ
ィスク84から読み出される。以下、実行モジュールの
配置に伴う初期化の処理について説明するが、先に実行
モジュールがすべてロードされた後の全体構成につい
て、図1を用いて説明する。カーネルKR,ディスパッ
チャDPおよび各実行モジュールがロードされ初期化さ
れると、図1に示すように、実施例のエミュレータ装置
が、このDOS/V機の上に実現されることになる。即
ち、このエミュレーション装置は、DOS/V機の上に
仮想的に用意されたPC−9800機と同一の環境上
(仮想PC上という)で実行されるプログラムAPPが
特権命令などを実行した場合、例外の発生とみなして呼
び出されるカーネルKR、カーネルKRにより特定され
た例外原因に基づいて呼び出され、この例外原因に基づ
いて、機能毎に用意された各実行モジュールを呼び出す
ディスパッチャDP、ディスパッチャDPから呼び出さ
れて各機能のエミュレーションを行なう各種実行モジュ
ールから構成されている。
【0029】実際にエミュレートを行なう実行モジュー
ルは、PC−9800機のハードウェアをその機能に基
づいて大まかに分割し、機能毎に用意されている。図1
には、主要なモジュールのみ示した。メモリエミュレー
タMEMは、主記憶やEMSの状態をエミュレートする
モジュールである。マウスエミュレータMUMは、DO
S/V機のマウス73の動きをPC−9800機のマウ
スとしてエミュレートするモジュールである。グラフィ
ックエミュレータGEMは、PC−9800機のグラフ
ィック画面をエミュレートするモジュールである。一
方、テキストエミュレータTEMは、文字コードにより
指定された文字の画像の取得をエミュレートする文字フ
ォントエミュレータCFMと一体となって動作するモジ
ュールであり、PC−9800機のテキスト画面をエミ
ュレートするものである。テキストエミュレータTEM
およびグラフィックエミュレータGEMによりエミュレ
ートされ、仮想的なPC−9800機の画像が作られた
後は、表示エミュレータDEMにより実際のCRT76
への画像の表示がエミュレートされる。
ルは、PC−9800機のハードウェアをその機能に基
づいて大まかに分割し、機能毎に用意されている。図1
には、主要なモジュールのみ示した。メモリエミュレー
タMEMは、主記憶やEMSの状態をエミュレートする
モジュールである。マウスエミュレータMUMは、DO
S/V機のマウス73の動きをPC−9800機のマウ
スとしてエミュレートするモジュールである。グラフィ
ックエミュレータGEMは、PC−9800機のグラフ
ィック画面をエミュレートするモジュールである。一
方、テキストエミュレータTEMは、文字コードにより
指定された文字の画像の取得をエミュレートする文字フ
ォントエミュレータCFMと一体となって動作するモジ
ュールであり、PC−9800機のテキスト画面をエミ
ュレートするものである。テキストエミュレータTEM
およびグラフィックエミュレータGEMによりエミュレ
ートされ、仮想的なPC−9800機の画像が作られた
後は、表示エミュレータDEMにより実際のCRT76
への画像の表示がエミュレートされる。
【0030】タイマエミュレータTIMは、DOS/V
機に内蔵されたタイマ68によりPC−9800機上の
タイマ関係の処理をエミュレートするモジュールであ
る。また、キーボードエミュレータKEMは、DOS/
V機のキーボード72およびKEY64により、PC−
9800機のキーボードからのキー入力をエミュレート
するモジュールである。
機に内蔵されたタイマ68によりPC−9800機上の
タイマ関係の処理をエミュレートするモジュールであ
る。また、キーボードエミュレータKEMは、DOS/
V機のキーボード72およびKEY64により、PC−
9800機のキーボードからのキー入力をエミュレート
するモジュールである。
【0031】更に、割り込みコントローラエミュレータ
IRMは、DOS/V機の割り込み機能を用いて、PC
−9800機の割り込みをエミュレートするモジュール
である。この割り込みコントローラエミュレータIRM
は、割り込みという行為を介して多くのモジュールから
呼び出される関係にある。DOS/V機における割り込
み処理の回路を図8に示す。PC−9800機でも同様
であるが、割り込み要求は、多数のデバイスからPIC
66に出されるので、これをエミュレートする実行モジ
ュールにおいても、モジュール間で何らかのやりとりが
必要となる。なお、図8では図示の都合上、インタフェ
ース回路の一部を省略したが、専用のインタフェース回
路を介して割り込み要求が出されることは当然である。
例えばマウス73からの割り込み要求は、直接出力され
ている訳ではなく、インタフェース回路であるKEY6
4を介して出力されている。
IRMは、DOS/V機の割り込み機能を用いて、PC
−9800機の割り込みをエミュレートするモジュール
である。この割り込みコントローラエミュレータIRM
は、割り込みという行為を介して多くのモジュールから
呼び出される関係にある。DOS/V機における割り込
み処理の回路を図8に示す。PC−9800機でも同様
であるが、割り込み要求は、多数のデバイスからPIC
66に出されるので、これをエミュレートする実行モジ
ュールにおいても、モジュール間で何らかのやりとりが
必要となる。なお、図8では図示の都合上、インタフェ
ース回路の一部を省略したが、専用のインタフェース回
路を介して割り込み要求が出されることは当然である。
例えばマウス73からの割り込み要求は、直接出力され
ている訳ではなく、インタフェース回路であるKEY6
4を介して出力されている。
【0032】DOS/V機における現実のハードウェア
割り込みは、特権命令の実行や書込保護が指定された範
囲の書込等と共に、カーネルKRに処理を移す例外処理
の一つとして扱われている。また、ハードウェア割り込
みに起因して、あるいは各モジュール内部の処理に起因
して割り込みコントローラエミュレータIRMがPC−
9800機の動作をエミュレートするために起こす割り
込みは、仮想割り込みの発生としてカーネルKRを呼び
出す要因とされている。
割り込みは、特権命令の実行や書込保護が指定された範
囲の書込等と共に、カーネルKRに処理を移す例外処理
の一つとして扱われている。また、ハードウェア割り込
みに起因して、あるいは各モジュール内部の処理に起因
して割り込みコントローラエミュレータIRMがPC−
9800機の動作をエミュレートするために起こす割り
込みは、仮想割り込みの発生としてカーネルKRを呼び
出す要因とされている。
【0033】これらの各種実行モジュールは、初期化の
処理において、カーネルKRにより、ハードディスク8
4から読み出され、メモリ上に配置される。各実行モジ
ュールは、初期化の処理においてメモリ上に配置される
度に、実行モジュールに予め用意した組み込み処理を一
度実行する。このとき実行モジュールが行なう処理の一
例を図9ないし図11のフローチャートに示した。ま
た、図9の処理が行なわれる様子を図12の説明図に示
した。以下、これの図面を用いて、実行モジュールの組
み込み時の処理について説明する。
処理において、カーネルKRにより、ハードディスク8
4から読み出され、メモリ上に配置される。各実行モジ
ュールは、初期化の処理においてメモリ上に配置される
度に、実行モジュールに予め用意した組み込み処理を一
度実行する。このとき実行モジュールが行なう処理の一
例を図9ないし図11のフローチャートに示した。ま
た、図9の処理が行なわれる様子を図12の説明図に示
した。以下、これの図面を用いて、実行モジュールの組
み込み時の処理について説明する。
【0034】実行モジュール(例えば図12実行モジュ
ールDM1)の組み込み処理に移行すると、まず、ディ
スパッチャDPが所定のメモリエリアに用意したディス
パッチャテーブルDTを検索し(ステップS200)、
その空き領域にモジュール名(英数字8文字)TM1と
その呼出アドレスA1を登録する処理を行なう(ステッ
プS210)。なお、これらの検索および登録の処理
は、実際には、図12に示したように、カーネルKRお
よびディスパッチャDPの機能を利用して行なわれる。
即ち、カーネルKRが各実行モジュールDMからのサー
ビスを受け付けるアドレスAAは、固定アドレスとして
用意されており、各実行モジュールDMは、このアドレ
スAAを呼んで、モジュール名(文字列)TMとその呼
出アドレスAの登録を依頼する(図12、符号B1)。
すると、カーネルKRは、ディスパッチャDPの呼出ア
ドレスを、予めディスパッチャDP自身が登録したテー
ブルを参照して取得し、このアドレスADを利用して、
ディスパッチャDPに登録のサービスを要求する。この
要求を受けて、ディスパッチャDPがディスパッチャテ
ーブルDTに、そのモジュールの名称(文字列)TMと
呼出アドレスAとを登録するのである(図12、符号B
2)。
ールDM1)の組み込み処理に移行すると、まず、ディ
スパッチャDPが所定のメモリエリアに用意したディス
パッチャテーブルDTを検索し(ステップS200)、
その空き領域にモジュール名(英数字8文字)TM1と
その呼出アドレスA1を登録する処理を行なう(ステッ
プS210)。なお、これらの検索および登録の処理
は、実際には、図12に示したように、カーネルKRお
よびディスパッチャDPの機能を利用して行なわれる。
即ち、カーネルKRが各実行モジュールDMからのサー
ビスを受け付けるアドレスAAは、固定アドレスとして
用意されており、各実行モジュールDMは、このアドレ
スAAを呼んで、モジュール名(文字列)TMとその呼
出アドレスAの登録を依頼する(図12、符号B1)。
すると、カーネルKRは、ディスパッチャDPの呼出ア
ドレスを、予めディスパッチャDP自身が登録したテー
ブルを参照して取得し、このアドレスADを利用して、
ディスパッチャDPに登録のサービスを要求する。この
要求を受けて、ディスパッチャDPがディスパッチャテ
ーブルDTに、そのモジュールの名称(文字列)TMと
呼出アドレスAとを登録するのである(図12、符号B
2)。
【0035】カーネルKRの固定アドレスAAを介して
ディスパッチャDPに各種のサービスを要求する上記手
法は、実行モジュールの一つが他のモジュールを呼び出
す場合や後述する直接呼出のエントリポイントEPを通
信相手のモジュールとの間で登録し合う場合などにも用
いられる。例えば、一つの実行モジュールが他の実行モ
ジュールを呼び出す場合には、実行モジュールの呼び出
しというサービスを、カーネルKRの固定アドレスAA
を介してディスパッチャDPに依頼する。ディスパッチ
ャDPは、ディスパッチャテーブルDTを参照して呼び
出そうとするモジュールの呼び出しアドレスを容易に取
得し、そのモジュールを呼び出すことができるのである
(図12、符号B3)。従って、カーネルKR,ディス
パッチャテーブルDTおよび各種実行モジュールを通じ
て予め固定的に管理する必要があるのは、カーネルKR
の固定アドレスAAのみであり、管理が極めて容易とな
るという利点がある。
ディスパッチャDPに各種のサービスを要求する上記手
法は、実行モジュールの一つが他のモジュールを呼び出
す場合や後述する直接呼出のエントリポイントEPを通
信相手のモジュールとの間で登録し合う場合などにも用
いられる。例えば、一つの実行モジュールが他の実行モ
ジュールを呼び出す場合には、実行モジュールの呼び出
しというサービスを、カーネルKRの固定アドレスAA
を介してディスパッチャDPに依頼する。ディスパッチ
ャDPは、ディスパッチャテーブルDTを参照して呼び
出そうとするモジュールの呼び出しアドレスを容易に取
得し、そのモジュールを呼び出すことができるのである
(図12、符号B3)。従って、カーネルKR,ディス
パッチャテーブルDTおよび各種実行モジュールを通じ
て予め固定的に管理する必要があるのは、カーネルKR
の固定アドレスAAのみであり、管理が極めて容易とな
るという利点がある。
【0036】次に、その実行モジュールDM1にモジュ
ール間通信を行なうとの登録がなされているか否かを判
断する(ステップS220)。実行モジュールは、登録
ファイルの内容に従って順次登録されるが、例えば第n
番目の実行モジュールDMnが同様に起動され、自己の
モジュール名TMnの登録と呼出アドレスAnの登録を
済ませた後(図12符号B2)、モジュール間通信が有
るとの判断がなされると(ステップS220)、実行モ
ジュールDMn内に用意されている直接呼出用のエント
リポイントEPをパラメータとして用意する処理を行な
う(ステップS230)。このエントリポイントEP
は、モジュール間通信の対象となる実行モジュールに教
える直接呼出用のアドレスであり、教えるエントリポイ
ントがなければ0個のエントリポイントEPを用意し、
複数個あればその数のエントリポイントEPを用意する
のである。エミュレーションの高速性を確保しようとす
ると、緊密な関係を有するモジュール間では、呼出アド
レスAnを利用したモジュール全体の呼出に代えて、そ
のモジュールが実現する機能の一部をなす処理そのもの
を直接呼び出したい場合が存在する。こうした場合に
は、各実行モジュールが対象となるモジュールにエント
リポイントEPを教えておく必要がある。
ール間通信を行なうとの登録がなされているか否かを判
断する(ステップS220)。実行モジュールは、登録
ファイルの内容に従って順次登録されるが、例えば第n
番目の実行モジュールDMnが同様に起動され、自己の
モジュール名TMnの登録と呼出アドレスAnの登録を
済ませた後(図12符号B2)、モジュール間通信が有
るとの判断がなされると(ステップS220)、実行モ
ジュールDMn内に用意されている直接呼出用のエント
リポイントEPをパラメータとして用意する処理を行な
う(ステップS230)。このエントリポイントEP
は、モジュール間通信の対象となる実行モジュールに教
える直接呼出用のアドレスであり、教えるエントリポイ
ントがなければ0個のエントリポイントEPを用意し、
複数個あればその数のエントリポイントEPを用意する
のである。エミュレーションの高速性を確保しようとす
ると、緊密な関係を有するモジュール間では、呼出アド
レスAnを利用したモジュール全体の呼出に代えて、そ
のモジュールが実現する機能の一部をなす処理そのもの
を直接呼び出したい場合が存在する。こうした場合に
は、各実行モジュールが対象となるモジュールにエント
リポイントEPを教えておく必要がある。
【0037】エントリポイントEPを用意した後、次に
割り込みの登録が有るか否かを判断し(ステップS24
0)、割り込みの登録がある場合には、登録する割り込
み番号を用意する処理を行なう(ステップS250)。
組み込み中の実行モジュールが割り込みを利用するもの
である場合には、その割り込みの番号を割り込みをエミ
ュレートするモジュールである割り込みコントローラエ
ミュレータIRMに予め登録しておく必要があるため、
その番号を用意するのである。以上の処理の後、通信対
象となる実行モジュールの呼び出しを、カーネルKRを
介してディスパッチャDPに依頼する(ステップS26
0、図13符号C1)。この時、実行モジュールは、呼
出先のモジュールをその名称(文字列)で指定し、用意
した直接呼出用のエントリポイントEPや割り込みの登
録番号等をディスパッチャDPにパラメータとして引き
渡す。
割り込みの登録が有るか否かを判断し(ステップS24
0)、割り込みの登録がある場合には、登録する割り込
み番号を用意する処理を行なう(ステップS250)。
組み込み中の実行モジュールが割り込みを利用するもの
である場合には、その割り込みの番号を割り込みをエミ
ュレートするモジュールである割り込みコントローラエ
ミュレータIRMに予め登録しておく必要があるため、
その番号を用意するのである。以上の処理の後、通信対
象となる実行モジュールの呼び出しを、カーネルKRを
介してディスパッチャDPに依頼する(ステップS26
0、図13符号C1)。この時、実行モジュールは、呼
出先のモジュールをその名称(文字列)で指定し、用意
した直接呼出用のエントリポイントEPや割り込みの登
録番号等をディスパッチャDPにパラメータとして引き
渡す。
【0038】この依頼を受けたディスパッチャDPは、
図10に示すディスパッチャ呼出ルーチンを実行する。
ディスパッチャDPは、呼び出すべきモジュールの名称
(文字列)を受け取っているから、ディスパッチャテー
ブルDTをこの文字列で検索し(ステップS300、図
13符号C2)、呼出アドレスを取得してそのモジュー
ルを呼び出す処理を行なう(ステップS310、図13
符号C3)。この時、ディスパッチャDPは、呼出元の
モジュールから受け取ったパラメータを呼び出したモジ
ュールに引き渡す。
図10に示すディスパッチャ呼出ルーチンを実行する。
ディスパッチャDPは、呼び出すべきモジュールの名称
(文字列)を受け取っているから、ディスパッチャテー
ブルDTをこの文字列で検索し(ステップS300、図
13符号C2)、呼出アドレスを取得してそのモジュー
ルを呼び出す処理を行なう(ステップS310、図13
符号C3)。この時、ディスパッチャDPは、呼出元の
モジュールから受け取ったパラメータを呼び出したモジ
ュールに引き渡す。
【0039】こうしてディスパッチャDPから呼ばれる
ことにより、通信対象となるべき実行モジュールが呼び
出され、その実行モジュールは、図11に示したエント
リポイントを取得する処理を実行する。この処理が開始
されると、まず呼び出したモジュールが何であるかの判
別を行なう(ステップS320)。呼び出した実行モジ
ュールがパラメータとして直接呼出のためのエントリポ
イントEPを用意している場合には、これを判別し(ス
テップS330)、直接呼出用のエントリポイントEP
を登録する処理を行なう(ステップS340)。
ことにより、通信対象となるべき実行モジュールが呼び
出され、その実行モジュールは、図11に示したエント
リポイントを取得する処理を実行する。この処理が開始
されると、まず呼び出したモジュールが何であるかの判
別を行なう(ステップS320)。呼び出した実行モジ
ュールがパラメータとして直接呼出のためのエントリポ
イントEPを用意している場合には、これを判別し(ス
テップS330)、直接呼出用のエントリポイントEP
を登録する処理を行なう(ステップS340)。
【0040】次に、図11の処理を実行するモジュール
が割り込みコントローラエミュレータIRMの場合に
は、割込の登録があるかを判別する(ステップS35
0)。割込番号の登録がある場合には、パラメータの一
部として受け取った割込番号を登録すると共に、割込に
よる直接呼び出しを行なう場合のエントリポイントEP
を割り込む側のモジュールに教えるために準備する処理
を行なう(ステップS360)。なお、割込番号の登録
の処理を行なうモジュールは、割り込みコントローラエ
ミュレータIRMに限られるから、それ以外のモジュー
ルで図11の処理がなされる場合には、ステップS35
0,S360の処理は行なわれない。
が割り込みコントローラエミュレータIRMの場合に
は、割込の登録があるかを判別する(ステップS35
0)。割込番号の登録がある場合には、パラメータの一
部として受け取った割込番号を登録すると共に、割込に
よる直接呼び出しを行なう場合のエントリポイントEP
を割り込む側のモジュールに教えるために準備する処理
を行なう(ステップS360)。なお、割込番号の登録
の処理を行なうモジュールは、割り込みコントローラエ
ミュレータIRMに限られるから、それ以外のモジュー
ルで図11の処理がなされる場合には、ステップS35
0,S360の処理は行なわれない。
【0041】割込の登録に関する処理に続いて、呼び出
した側のモジュールが、割込の呼出のためのエントリポ
イントEP以外に直接呼出の教示を行なうべきエントリ
ポイントEPが存在するモジュールであるか否かの判別
を行なう(ステップS370)。直接呼出のエントリポ
イントEPを呼び出した側のモジュールに教える必要が
あると判断された場合には、教示する直接呼出のエント
リポイントEPを、返し値のパラメータとして用意する
処理を行なう(ステップS380)。以上の処理の後、
「RTN」に抜けて本ルーチンを終了する。この結果、
処理は、いったんディスパッチャDPを介して(図13
符号C4)、呼び出した側の実行モジュールに戻る(図
13符号C5)。この際、呼び出された側の実行モジュ
ールが返し値として用意したパラメータが存在すれば、
このパラメータは、呼び出した側の実行モジュールに渡
され、呼び出した側の実行モジュールは、これをエント
リポイントEPとして登録する。
した側のモジュールが、割込の呼出のためのエントリポ
イントEP以外に直接呼出の教示を行なうべきエントリ
ポイントEPが存在するモジュールであるか否かの判別
を行なう(ステップS370)。直接呼出のエントリポ
イントEPを呼び出した側のモジュールに教える必要が
あると判断された場合には、教示する直接呼出のエント
リポイントEPを、返し値のパラメータとして用意する
処理を行なう(ステップS380)。以上の処理の後、
「RTN」に抜けて本ルーチンを終了する。この結果、
処理は、いったんディスパッチャDPを介して(図13
符号C4)、呼び出した側の実行モジュールに戻る(図
13符号C5)。この際、呼び出された側の実行モジュ
ールが返し値として用意したパラメータが存在すれば、
このパラメータは、呼び出した側の実行モジュールに渡
され、呼び出した側の実行モジュールは、これをエント
リポイントEPとして登録する。
【0042】次にBIOSのエミュレーションに関する
モジュールの登録について説明する。図14は、BIO
Sエミュレーションの機能を登録する処理を示すフロー
チャートである。この処理の開始前に、PC−9800
機用のBIOSは、論理的に確保されたPC−9800
機用のメモリ空間の最上位に配置されている。図14の
処理が開始されると、まずエミュレーションを行なう機
器のメモリ情報やプロテクトメモリ領域の情報など、環
境条件を取得する処理を行なう(ステップS400)。
これらの情報は、このモジュールの登録以前に登録され
たメモリエミュレータMEMなどが登録しているので、
カーネルKRを介してこれらの情報を取得するのであ
る。
モジュールの登録について説明する。図14は、BIO
Sエミュレーションの機能を登録する処理を示すフロー
チャートである。この処理の開始前に、PC−9800
機用のBIOSは、論理的に確保されたPC−9800
機用のメモリ空間の最上位に配置されている。図14の
処理が開始されると、まずエミュレーションを行なう機
器のメモリ情報やプロテクトメモリ領域の情報など、環
境条件を取得する処理を行なう(ステップS400)。
これらの情報は、このモジュールの登録以前に登録され
たメモリエミュレータMEMなどが登録しているので、
カーネルKRを介してこれらの情報を取得するのであ
る。
【0043】次に、BIOSの割込ベクタの設定用テー
ブルJTの内容を取得し内容を保存する処理を行なう
(ステップS410)。一群の処理を用意したBIOS
は、その開始アドレスをジャンプテーブルJTとして用
意しており、所定のBIOSを呼び出そうとするアプリ
ケーションプログラムAPPは、予め定めたソフトウェ
ア割込(INT xx)を起動するか、直接BIOSを
コールする。ソフトウェア割込を起動すると、これに対
応して用意された割込ルーチンで、このジャンプテーブ
ルを参照してBIOSをコールするのである。そこで、
現在設定しようとしているBIOSエミュレータモジュ
ールに対応するジャンプテーブルJTの内容、即ち飛び
先のアドレスを取得し、これを所定の領域に保存する。
このアドレスを予め保存しておくのは、同じソフトウェ
ア割込を用いた要求であっても、レジスタの値により実
行すべき処理は様々であって、以下に説明するBIOS
エミュレーションを行なわないような処理が要求された
場合、そのまま既存の飛び先に処理を移すためである。
ブルJTの内容を取得し内容を保存する処理を行なう
(ステップS410)。一群の処理を用意したBIOS
は、その開始アドレスをジャンプテーブルJTとして用
意しており、所定のBIOSを呼び出そうとするアプリ
ケーションプログラムAPPは、予め定めたソフトウェ
ア割込(INT xx)を起動するか、直接BIOSを
コールする。ソフトウェア割込を起動すると、これに対
応して用意された割込ルーチンで、このジャンプテーブ
ルを参照してBIOSをコールするのである。そこで、
現在設定しようとしているBIOSエミュレータモジュ
ールに対応するジャンプテーブルJTの内容、即ち飛び
先のアドレスを取得し、これを所定の領域に保存する。
このアドレスを予め保存しておくのは、同じソフトウェ
ア割込を用いた要求であっても、レジスタの値により実
行すべき処理は様々であって、以下に説明するBIOS
エミュレーションを行なわないような処理が要求された
場合、そのまま既存の飛び先に処理を移すためである。
【0044】次に、特権命令であるCPU21を停止す
るHLT命令を埋め込む先のアドレスを決定する処理を
行なう(ステップS420)。HLT命令を埋め込むア
ドレスとしては、エミュレートしているマシンのメモリ
エリアの内、上位の所定の範囲で、11バイト程度連続
して空き領域となっているところである。こうした領域
は、アドレスのデータが00hまたはFFhであるよう
な連続した領域として特定できる。こうしたデータが連
続するようなプログラムコードはありえないからであ
る。また、最初からHLT命令を置く領域を固定的に決
めておかないのは、BIOSエミュレーションを行なう
モジュールの数を制限せず、登録時に他のモジュールと
メモリの使用領域が競合したりすることがないようにす
るためである。HLT命令の埋め込みアドレスを、この
モジュールの組み込み時に自ら決定するので、予め確保
しておく必要がない。
るHLT命令を埋め込む先のアドレスを決定する処理を
行なう(ステップS420)。HLT命令を埋め込むア
ドレスとしては、エミュレートしているマシンのメモリ
エリアの内、上位の所定の範囲で、11バイト程度連続
して空き領域となっているところである。こうした領域
は、アドレスのデータが00hまたはFFhであるよう
な連続した領域として特定できる。こうしたデータが連
続するようなプログラムコードはありえないからであ
る。また、最初からHLT命令を置く領域を固定的に決
めておかないのは、BIOSエミュレーションを行なう
モジュールの数を制限せず、登録時に他のモジュールと
メモリの使用領域が競合したりすることがないようにす
るためである。HLT命令の埋め込みアドレスを、この
モジュールの組み込み時に自ら決定するので、予め確保
しておく必要がない。
【0045】次に、いま登録しようとしているBIOS
の本来の処理プログラム中に「IRET」命令が存在す
るかをチェックする処理を行なう(ステップS43
0)。この命令は、BIOSルーチンの終了時に、これ
を呼び出したプログラムに戻るためのもので、この命令
が見いだされない場合には、BIOSプログラム自体の
ロードが正しく行なわれていない可能性があるので、こ
れをチェックするのである。「IRET」命令が見いだ
されなかった場合には、処理はエラーメッセージをロー
ダに出力して、そのまま終了する。
の本来の処理プログラム中に「IRET」命令が存在す
るかをチェックする処理を行なう(ステップS43
0)。この命令は、BIOSルーチンの終了時に、これ
を呼び出したプログラムに戻るためのもので、この命令
が見いだされない場合には、BIOSプログラム自体の
ロードが正しく行なわれていない可能性があるので、こ
れをチェックするのである。「IRET」命令が見いだ
されなかった場合には、処理はエラーメッセージをロー
ダに出力して、そのまま終了する。
【0046】「IRET」命令が存在すれば、次にこの
HLTトラップルーチンをディスパッチャDPに登録す
る処理を行なう(ステップS440)。ディスパッチャ
DPへの登録は、既に説明したように、8文字の文字列
により行なわれる。ディスパッチャDPに登録した後、
このHLT命令を先に決定したアドレスに埋め込む処理
を行なう(ステップS450)。ステップS420で検
索した連続11バイトの空き領域に、先頭から3バイト
のHLT命令を置き、これに続く8バイトにディスパッ
チャDPに登録したトラップルーチンの名称を書き込
む。
HLTトラップルーチンをディスパッチャDPに登録す
る処理を行なう(ステップS440)。ディスパッチャ
DPへの登録は、既に説明したように、8文字の文字列
により行なわれる。ディスパッチャDPに登録した後、
このHLT命令を先に決定したアドレスに埋め込む処理
を行なう(ステップS450)。ステップS420で検
索した連続11バイトの空き領域に、先頭から3バイト
のHLT命令を置き、これに続く8バイトにディスパッ
チャDPに登録したトラップルーチンの名称を書き込
む。
【0047】その後、対応する割込ベクタの設定用テー
ブルJTを書き直す処理を行なう(ステップS46
0)。設定用テーブルJTを、ステップS450で埋め
込んだHLT命令のアドレスを指し示す値に書き換える
のである。以上の処理の後、本ルーチンを終了する。
ブルJTを書き直す処理を行なう(ステップS46
0)。設定用テーブルJTを、ステップS450で埋め
込んだHLT命令のアドレスを指し示す値に書き換える
のである。以上の処理の後、本ルーチンを終了する。
【0048】図15は、このBIOSエミュレーション
の様子を模式的に示した図である。本来のBIOS1
が、アプリケーションプログラムAPPからジャンプテ
ーブルJT1を参照して呼ばれるのに対して、BIOS
エミュレーションを行なう場合には、このジャンプテー
ブルJT1を、HLT命令が埋め込まれた番地を示すア
ドレスに書き直すのである。
の様子を模式的に示した図である。本来のBIOS1
が、アプリケーションプログラムAPPからジャンプテ
ーブルJT1を参照して呼ばれるのに対して、BIOS
エミュレーションを行なう場合には、このジャンプテー
ブルJT1を、HLT命令が埋め込まれた番地を示すア
ドレスに書き直すのである。
【0049】以上説明した実行モジュールやBIOSエ
ミュレーションモジュールの組み込み処理を最後まで繰
り返すことにより、初期化の処理は完了する。その後、
仮想86モードに実行モードを切り換え、PC−980
0機としてそのOSであるMS−DOSをブートする処
理を開始する。具体的には、MSDOS.SYS、I
O.SYS等のシステムファイルを読み込む処理や、C
OMMAND.COMを組み込む処理、更にはCONF
IG.SYSに登録されているデバイスドライバを組み
込む処理などを行なう。これらの処理は、通常のMS−
DOSの組み込み処理と同一であり、CPUは仮想86
モードに切り換えられているので、PC−9800機が
MS−DOSを組み込む処理と何等相違しない。なお、
DOS/V機がそのオリジナルな状態でMS−DOSを
立ち上げるときも、MSDOS.SYS等同一名称のフ
ァイルを読み込むが、これらのファイルはその内容が当
然異なる。これらのファイルは一般にルートディレクト
リに置くことが決められているので、異なる内容で同一
名称のファイルを複数個置くことはできない。従って、
エミュレーションを開始する以前に専用のアプリケーシ
ョンプログラムを実行させ、一方のマシン用のMSDO
S.SYS等のファイルの名称を変更しておくのであ
る。
ミュレーションモジュールの組み込み処理を最後まで繰
り返すことにより、初期化の処理は完了する。その後、
仮想86モードに実行モードを切り換え、PC−980
0機としてそのOSであるMS−DOSをブートする処
理を開始する。具体的には、MSDOS.SYS、I
O.SYS等のシステムファイルを読み込む処理や、C
OMMAND.COMを組み込む処理、更にはCONF
IG.SYSに登録されているデバイスドライバを組み
込む処理などを行なう。これらの処理は、通常のMS−
DOSの組み込み処理と同一であり、CPUは仮想86
モードに切り換えられているので、PC−9800機が
MS−DOSを組み込む処理と何等相違しない。なお、
DOS/V機がそのオリジナルな状態でMS−DOSを
立ち上げるときも、MSDOS.SYS等同一名称のフ
ァイルを読み込むが、これらのファイルはその内容が当
然異なる。これらのファイルは一般にルートディレクト
リに置くことが決められているので、異なる内容で同一
名称のファイルを複数個置くことはできない。従って、
エミュレーションを開始する以前に専用のアプリケーシ
ョンプログラムを実行させ、一方のマシン用のMSDO
S.SYS等のファイルの名称を変更しておくのであ
る。
【0050】BIOSエミュレーションモジュールを含
む各実行モジュールは、その組み込み時に少なくとも自
己のモジュール名(文字列)TMと呼出アドレスAをデ
ィスパッチャテーブルDTに登録することが必要である
が、メモリを使用する実行モジュールの場合には、更に
必要な実メモリをPC−9800機用に確保した仮想メ
モリ(98用メモリ空間)に割り当てる処理を行なう。
む各実行モジュールは、その組み込み時に少なくとも自
己のモジュール名(文字列)TMと呼出アドレスAをデ
ィスパッチャテーブルDTに登録することが必要である
が、メモリを使用する実行モジュールの場合には、更に
必要な実メモリをPC−9800機用に確保した仮想メ
モリ(98用メモリ空間)に割り当てる処理を行なう。
【0051】以上の処理により、実行マシン(実施例で
はDOS/V機)上でターゲットマシン(実施例ではP
C−9800機)をエミュレートする環境が整えられ
た。そこで、次に図1を参照しつつ、実際にエミュレー
ションが行なわれる様子を大まかに説明し、更にBIO
Sエミュレーションモジュールがどのように処理を行な
うかについて、例を挙げて詳述する。
はDOS/V機)上でターゲットマシン(実施例ではP
C−9800機)をエミュレートする環境が整えられ
た。そこで、次に図1を参照しつつ、実際にエミュレー
ションが行なわれる様子を大まかに説明し、更にBIO
Sエミュレーションモジュールがどのように処理を行な
うかについて、例を挙げて詳述する。
【0052】初期化の処理が終了してPC−9800用
の各種システムファイルが読み込まれ、MS−DOSが
起動されると、CRT76には、「A:」などのプロン
プトが表示された状態となる。この状態では、MS−D
OSが動作していることになるが、所定のアプリケーシ
ョンを起動しようとして、その実行ファイル名をキーボ
ード72から入力する際にも、キーボードのエミュレー
ションが実行されるのである。即ち、図1に示した「仮
想PC上のプログラム」とは、アプリケーションプログ
ラムのみならずDOSを含めたあらゆるプログラムであ
る。この時、DOS/V機は、プロテクトモードで動作
しており、CPU21に備わったリング保護機能は、特
権レベル3とされている。この状態で、仮想的に用意さ
れた98用メモリ空間にアプリケーションプログラムA
PPがロードされ、仮想PC上でアプリケーションプロ
グラムが実行されている状態を取り上げてエミュレーシ
ョン装置の働きについて説明する。
の各種システムファイルが読み込まれ、MS−DOSが
起動されると、CRT76には、「A:」などのプロン
プトが表示された状態となる。この状態では、MS−D
OSが動作していることになるが、所定のアプリケーシ
ョンを起動しようとして、その実行ファイル名をキーボ
ード72から入力する際にも、キーボードのエミュレー
ションが実行されるのである。即ち、図1に示した「仮
想PC上のプログラム」とは、アプリケーションプログ
ラムのみならずDOSを含めたあらゆるプログラムであ
る。この時、DOS/V機は、プロテクトモードで動作
しており、CPU21に備わったリング保護機能は、特
権レベル3とされている。この状態で、仮想的に用意さ
れた98用メモリ空間にアプリケーションプログラムA
PPがロードされ、仮想PC上でアプリケーションプロ
グラムが実行されている状態を取り上げてエミュレーシ
ョン装置の働きについて説明する。
【0053】エミュレーションの処理が起動されるには
次の4つの要因がある。 ページフォールト(メモリが割り当てられていない領
域に対するアクセス) 一般保護例外(特権命令の実行、I/Oの読み書き、
書込保護されたメモリに対する書込命令の実行、設定さ
れたアドレス範囲外に対するアクセスなど) エラー(0除算など) ハード割り込み これらの要因が生じると、カーネルKRが起動される。
この時、各レジスタの値などはすべて保存されているか
ら、カーネルKRは、自己が起動された原因を調べるこ
とができる。その結果、アクセスされたアドレスやI/
Oが何か、あるいは生じたハード割り込みがいかなる機
能に対応しているかを判断し、ディスパッチャDPを呼
び出す。ディスパッチャDPを呼び出すアドレスは、図
12に示したように、初期化の処理において登録されて
いるから、カーネルKRは、この呼出アドレスADによ
りディスパッチャDPを呼び出すことができる。なお、
カーネルKRに処理が渡った以降は、特権レベルは0に
設定される。
次の4つの要因がある。 ページフォールト(メモリが割り当てられていない領
域に対するアクセス) 一般保護例外(特権命令の実行、I/Oの読み書き、
書込保護されたメモリに対する書込命令の実行、設定さ
れたアドレス範囲外に対するアクセスなど) エラー(0除算など) ハード割り込み これらの要因が生じると、カーネルKRが起動される。
この時、各レジスタの値などはすべて保存されているか
ら、カーネルKRは、自己が起動された原因を調べるこ
とができる。その結果、アクセスされたアドレスやI/
Oが何か、あるいは生じたハード割り込みがいかなる機
能に対応しているかを判断し、ディスパッチャDPを呼
び出す。ディスパッチャDPを呼び出すアドレスは、図
12に示したように、初期化の処理において登録されて
いるから、カーネルKRは、この呼出アドレスADによ
りディスパッチャDPを呼び出すことができる。なお、
カーネルKRに処理が渡った以降は、特権レベルは0に
設定される。
【0054】ディスパッチャDPは、カーネルKRから
受け取った情報を元にして呼び出す実行モジュールを特
定し、その呼出アドレスをディスパッチャテーブルDT
から取得する。ディスパッチャDPは、この呼出アドレ
スを用いて、各実行モジュールを呼び出すのである。図
1には、実行モジュールとして、既述したように、 ・メモリエミュレータMEM ・マウスエミュレータMUM ・グラフィックエミュレータGEM ・テキストエミュレータTEM ・文字フォントエミュレータCFM ・表示エミュレータDEM ・タイマエミュレータTIM ・キーボードエミュレータKEM ・割り込みコントローラエミュレータIRM を示したが、これ以外にも、プリンタやRS−232C
によるシリアル通信を司るのエミュレータなど、各種の
実行モジュールが存在する。
受け取った情報を元にして呼び出す実行モジュールを特
定し、その呼出アドレスをディスパッチャテーブルDT
から取得する。ディスパッチャDPは、この呼出アドレ
スを用いて、各実行モジュールを呼び出すのである。図
1には、実行モジュールとして、既述したように、 ・メモリエミュレータMEM ・マウスエミュレータMUM ・グラフィックエミュレータGEM ・テキストエミュレータTEM ・文字フォントエミュレータCFM ・表示エミュレータDEM ・タイマエミュレータTIM ・キーボードエミュレータKEM ・割り込みコントローラエミュレータIRM を示したが、これ以外にも、プリンタやRS−232C
によるシリアル通信を司るのエミュレータなど、各種の
実行モジュールが存在する。
【0055】ハードウェア割り込みが発生したり、アプ
リケーションプログラムAPPが特権命令を実行したり
すると、カーネルKRに処理が移行し、カーネルKR
は、特権命令の中身やハードウェア割り込みの詳細を検
討し、ディスパッチャDPを呼び出す。ディスパッチャ
DPは、エミュレートすべき内容をカーネルKRからに
受け取り、ディスパッチャテーブルDTを参照して必要
な実行モジュールをその呼出アドレスAを用いて呼び出
す。呼び出された実行モジュールは、自分だけで総ての
処理が実行できる場合には、そのまま実行し、他の実行
モジュールの処理を必要とする場合は、初期化の処理に
おいて予め得ておいたエントリポイントEPを用いて、
実行モジュールを直接呼び出す。これをモジュール間通
信と呼ぶ。
リケーションプログラムAPPが特権命令を実行したり
すると、カーネルKRに処理が移行し、カーネルKR
は、特権命令の中身やハードウェア割り込みの詳細を検
討し、ディスパッチャDPを呼び出す。ディスパッチャ
DPは、エミュレートすべき内容をカーネルKRからに
受け取り、ディスパッチャテーブルDTを参照して必要
な実行モジュールをその呼出アドレスAを用いて呼び出
す。呼び出された実行モジュールは、自分だけで総ての
処理が実行できる場合には、そのまま実行し、他の実行
モジュールの処理を必要とする場合は、初期化の処理に
おいて予め得ておいたエントリポイントEPを用いて、
実行モジュールを直接呼び出す。これをモジュール間通
信と呼ぶ。
【0056】図16は、通常の実行モジュールの呼び出
しとモジュール間通信とを例示した説明図である。図1
6に示した例では、実行モジュールDM2,DM3,D
M5の間でモジュール間通信が行なわれるものとした。
図示するように、ディスパッチャDPから呼び出される
場合には、その呼出アドレスA2,A3,A5など、モ
ジュール全体の開始アドレスが呼ばれることになるが、
モジュール間通信の場合には、初期化の処理において一
方的にあるいは相互に教示・取得したエントリポイント
EPを利用して、各実行モジュール内の処理から必要に
応じて、直接他のモジュールの内部処理を呼ぶことにな
る。例えば、実行モジュールDM5の内部処理におい
て、実行モジュールDM2の内部処理を直接実行する必
要が生じた場合には、エントリポイントEP21を参照
し、直接実行モジュールDM2内部の処理が呼び出さ
れ、実行される(符号C21)。ディスパッチャDPを
介して他の実行モジュールを呼び出す手法でも、呼び出
すモジュールが必要とするサービスを示すパラメータを
渡すことができれば、他の実行モジュールが用意してい
る処理を個々に利用すること自体は可能であるが、ディ
スパッチャDPに対するサービスの要求、ディスパッチ
ャDPによるディスパッチャテーブルDTの検索、呼出
アドレスAによる呼び出しといった手続が必要になって
しまう。これに較べて、モジュール間通信は、必要な処
理を直接呼び出すから、極めて高速に必要な処理を実行
できるという利点がある。
しとモジュール間通信とを例示した説明図である。図1
6に示した例では、実行モジュールDM2,DM3,D
M5の間でモジュール間通信が行なわれるものとした。
図示するように、ディスパッチャDPから呼び出される
場合には、その呼出アドレスA2,A3,A5など、モ
ジュール全体の開始アドレスが呼ばれることになるが、
モジュール間通信の場合には、初期化の処理において一
方的にあるいは相互に教示・取得したエントリポイント
EPを利用して、各実行モジュール内の処理から必要に
応じて、直接他のモジュールの内部処理を呼ぶことにな
る。例えば、実行モジュールDM5の内部処理におい
て、実行モジュールDM2の内部処理を直接実行する必
要が生じた場合には、エントリポイントEP21を参照
し、直接実行モジュールDM2内部の処理が呼び出さ
れ、実行される(符号C21)。ディスパッチャDPを
介して他の実行モジュールを呼び出す手法でも、呼び出
すモジュールが必要とするサービスを示すパラメータを
渡すことができれば、他の実行モジュールが用意してい
る処理を個々に利用すること自体は可能であるが、ディ
スパッチャDPに対するサービスの要求、ディスパッチ
ャDPによるディスパッチャテーブルDTの検索、呼出
アドレスAによる呼び出しといった手続が必要になって
しまう。これに較べて、モジュール間通信は、必要な処
理を直接呼び出すから、極めて高速に必要な処理を実行
できるという利点がある。
【0057】各実行モジュールDMにより、アプリケー
ションプログラムAPPが実行しようとした処理をエミ
ュレートした後、順次処理を復帰し、カーネルKRから
アプリケーションプログラムAPPに復帰する。なお、
ハードウェア割り込みにより割り込みコントローラエミ
ュレータIRMが呼ばれた場合や、他の実行モジュール
の処理から割り込みコントローラエミュレータIRMが
呼ばれた場合には、割り込みコントローラエミュレータ
IRMは、PC−9800機における割込の発生をエミ
ュレートするため、カーネルKRに対して仮想割り込み
を発生する。この仮想割り込みによりカーネルKRが呼
び出され、カーネルKRは、この仮想割り込みを判断し
て必要な実行モジュールを再度呼び出したり、場合によ
ってはアプリケーションプログラムAPPに復帰する。
ションプログラムAPPが実行しようとした処理をエミ
ュレートした後、順次処理を復帰し、カーネルKRから
アプリケーションプログラムAPPに復帰する。なお、
ハードウェア割り込みにより割り込みコントローラエミ
ュレータIRMが呼ばれた場合や、他の実行モジュール
の処理から割り込みコントローラエミュレータIRMが
呼ばれた場合には、割り込みコントローラエミュレータ
IRMは、PC−9800機における割込の発生をエミ
ュレートするため、カーネルKRに対して仮想割り込み
を発生する。この仮想割り込みによりカーネルKRが呼
び出され、カーネルKRは、この仮想割り込みを判断し
て必要な実行モジュールを再度呼び出したり、場合によ
ってはアプリケーションプログラムAPPに復帰する。
【0058】次に、実際にDOS/V機上で行なわれる
PC−9800機の各機能のエミュレーションの一例と
して、アプリケーションプログラムAPPがPC−98
00機のBIOSの機能を利用しようとした場合の動作
について説明する。図17は、アプリケーションプログ
ラムAPPからBIOSをコールする際の処理の流れを
模式的に示した図である。
PC−9800機の各機能のエミュレーションの一例と
して、アプリケーションプログラムAPPがPC−98
00機のBIOSの機能を利用しようとした場合の動作
について説明する。図17は、アプリケーションプログ
ラムAPPからBIOSをコールする際の処理の流れを
模式的に示した図である。
【0059】一例として、アプリケーションプログラム
APPが、フロッピディスクから1セクタ分のデータを
読み出すために用意されたBIOSを利用する場合を取
り上げる。アプリケーションプログラムAPPがこのB
IOSを利用しようとしてこれをコールすると、ジャン
プテーブルJTの対応するベクトル1を参照し、PC−
9800機用に用意されたBIOSを呼び出そうとする
(図17符号E1)。BIOSの呼び出しは、予め定め
たソフトウェア割込(INT xx)によっても良い
し、ジャンプテーブルを参照して直接呼び出すものであ
っても差し支えない。ジャンプテーブルJTのベクトル
1は、初期化の処理においてこのBIOSエミュレーシ
ョンモジュールが登録された際、HLT命令と識別子が
埋め込まれたアドレスに書き換えられているから(図1
4参照)、実際には、BIOSプログラムではなく、H
LT命令が実行される(符号E2)。
APPが、フロッピディスクから1セクタ分のデータを
読み出すために用意されたBIOSを利用する場合を取
り上げる。アプリケーションプログラムAPPがこのB
IOSを利用しようとしてこれをコールすると、ジャン
プテーブルJTの対応するベクトル1を参照し、PC−
9800機用に用意されたBIOSを呼び出そうとする
(図17符号E1)。BIOSの呼び出しは、予め定め
たソフトウェア割込(INT xx)によっても良い
し、ジャンプテーブルを参照して直接呼び出すものであ
っても差し支えない。ジャンプテーブルJTのベクトル
1は、初期化の処理においてこのBIOSエミュレーシ
ョンモジュールが登録された際、HLT命令と識別子が
埋め込まれたアドレスに書き換えられているから(図1
4参照)、実際には、BIOSプログラムではなく、H
LT命令が実行される(符号E2)。
【0060】この時、仮にこのBIOSの処理を横取り
して起動する常駐プログラムTRSが、MS−DOSの
起動時に組み込まれたとすると、常駐プログラムTRS
が組み込まれるタイミングは、実行モジュールの組み込
みの後だから、ジャンプテーブルJTのベクトル1は、
常駐プログラムTRSにより書き換えられている。従っ
て、ジャンプテーブルJTを参照した時点で常駐プログ
ラムTRSが起動される(図17符号E3)。常駐プロ
グラムTRSは、ジャンプテーブルJTのベクトル1を
書き直す際、そこに書かれたアドレスを保存し、自己の
処理の終了後、本来のベクトル1を用いて処理をBIO
Sプログラムの先頭に移行しようとする従って、この場
合は、置き換えられたHLT命令が呼ばれることになる
(符号E4)。即ち、常駐プログラムTRSは、BIO
Sエミュレーションモジュールの存在によらず、正しく
動作する。
して起動する常駐プログラムTRSが、MS−DOSの
起動時に組み込まれたとすると、常駐プログラムTRS
が組み込まれるタイミングは、実行モジュールの組み込
みの後だから、ジャンプテーブルJTのベクトル1は、
常駐プログラムTRSにより書き換えられている。従っ
て、ジャンプテーブルJTを参照した時点で常駐プログ
ラムTRSが起動される(図17符号E3)。常駐プロ
グラムTRSは、ジャンプテーブルJTのベクトル1を
書き直す際、そこに書かれたアドレスを保存し、自己の
処理の終了後、本来のベクトル1を用いて処理をBIO
Sプログラムの先頭に移行しようとする従って、この場
合は、置き換えられたHLT命令が呼ばれることになる
(符号E4)。即ち、常駐プログラムTRSは、BIO
Sエミュレーションモジュールの存在によらず、正しく
動作する。
【0061】HLT命令が実行されると、この命令は特
権命令なので、トラップが生じ、処理はカーネルKRに
移行する(符号E5)。カーネルKRは、トラップが生
じると、その原因を解析する。トラップの原因がHLT
命令の実行であることを認識すると、そのHLT命令に
続く8バイト、即ち識別子を読み取る。識別子を得る
と、カーネルKRは、これを用いてディスパッチャDP
に対してBIOSエミュレーションモジュールの呼び出
しを依頼する(符号E6)。ディスパッチャDPは、こ
の依頼を受けて、登録してあるディスパッチャテーブル
DTを参照し、エミュレーションモジュールとして用意
したBIOSをコールする(符号E7)。
権命令なので、トラップが生じ、処理はカーネルKRに
移行する(符号E5)。カーネルKRは、トラップが生
じると、その原因を解析する。トラップの原因がHLT
命令の実行であることを認識すると、そのHLT命令に
続く8バイト、即ち識別子を読み取る。識別子を得る
と、カーネルKRは、これを用いてディスパッチャDP
に対してBIOSエミュレーションモジュールの呼び出
しを依頼する(符号E6)。ディスパッチャDPは、こ
の依頼を受けて、登録してあるディスパッチャテーブル
DTを参照し、エミュレーションモジュールとして用意
したBIOSをコールする(符号E7)。
【0062】エミュレーションモジュールとして用意さ
れたBIOSは、例えばフロッピディスク装置をアクセ
スするものであるとすると、DOS/V機のハードウェ
アとして用意された複合I/Oポート54およびフロッ
ピディスク装置82を制御する。図17では、フロッピ
ディスク装置82からデータを読み出す場合を示した
が、BIOSエミュレーションモジュールは、フロッピ
ディスク装置82から256バイトのデータを読み出
し、これをバッファ領域FBFに保存する(符号F1,
F2)。バッファ領域FBFに読み出されたデータは、
BIOSエミュレーションモジュールの中で、システム
が用意するディスクバッファFBに転送される。
れたBIOSは、例えばフロッピディスク装置をアクセ
スするものであるとすると、DOS/V機のハードウェ
アとして用意された複合I/Oポート54およびフロッ
ピディスク装置82を制御する。図17では、フロッピ
ディスク装置82からデータを読み出す場合を示した
が、BIOSエミュレーションモジュールは、フロッピ
ディスク装置82から256バイトのデータを読み出
し、これをバッファ領域FBFに保存する(符号F1,
F2)。バッファ領域FBFに読み出されたデータは、
BIOSエミュレーションモジュールの中で、システム
が用意するディスクバッファFBに転送される。
【0063】これらの処理の後、BIOSエミュレーシ
ョンモジュールの処理は終了し、処理はアプリケーショ
ンプログラムAPPのBIOSコールの次の命令に戻る
(符号E8)。アプリケーションプログラムAPPへ
は、ディスパッチャDPを介して戻っても良いし、サブ
ルーチンコールのためのスタックを操作することで、直
接戻ることも可能である。アプリケーションプログラム
APPでは、その後、システムのバッファFBに転送さ
れたデータを読み取ることで、フロッピディスク装置8
2からのデータの読み出し処理を完了する(符号E
9)。
ョンモジュールの処理は終了し、処理はアプリケーショ
ンプログラムAPPのBIOSコールの次の命令に戻る
(符号E8)。アプリケーションプログラムAPPへ
は、ディスパッチャDPを介して戻っても良いし、サブ
ルーチンコールのためのスタックを操作することで、直
接戻ることも可能である。アプリケーションプログラム
APPでは、その後、システムのバッファFBに転送さ
れたデータを読み取ることで、フロッピディスク装置8
2からのデータの読み出し処理を完了する(符号E
9)。
【0064】以上説明した本実施例のエミュレーション
装置によれば、BIOSをコールした時、BIOSの呼
び出し自体をトラップしてエミュレーションを開始する
のではなく、ジャンプテーブルJTを介して一旦BIO
Sを呼び出す手続自体は行ない、その呼び出し先で特権
命令(実施例ではHLT命令)を実行することにより処
理をBIOSエミュレーションモジュールに移してい
る。従って、BIOSをソフトウェア割込によって呼び
出すものだけでなく、ジャンプテーブルを参照すること
でそのエントリポイントを取得し直接これをコールする
場合でも、確実に検出してBIOSエミュレーションモ
ジュールを起動することができる。しかも、BIOSの
コールを横取りして動作するタイプの常駐プログラムが
組み込まれた場合でも、常駐プログラムもBIOSエミ
ュレーションモジュールも共に正常に動作させることが
できる。
装置によれば、BIOSをコールした時、BIOSの呼
び出し自体をトラップしてエミュレーションを開始する
のではなく、ジャンプテーブルJTを介して一旦BIO
Sを呼び出す手続自体は行ない、その呼び出し先で特権
命令(実施例ではHLT命令)を実行することにより処
理をBIOSエミュレーションモジュールに移してい
る。従って、BIOSをソフトウェア割込によって呼び
出すものだけでなく、ジャンプテーブルを参照すること
でそのエントリポイントを取得し直接これをコールする
場合でも、確実に検出してBIOSエミュレーションモ
ジュールを起動することができる。しかも、BIOSの
コールを横取りして動作するタイプの常駐プログラムが
組み込まれた場合でも、常駐プログラムもBIOSエミ
ュレーションモジュールも共に正常に動作させることが
できる。
【0065】また、本実施例のエミュレーション装置に
よれば、実行マシン上でターゲットマシンをエミュレー
ションするプログラムが、カーネルKR、ディスパッチ
ャDP、各実行モジュールと階層化されており、極めて
見通しの良い構成となっている。従って、膨大な機能を
エミュレートする膨大なプログラムを効率よく開発する
ことができる。しかも、各実行モジュールは、BIOS
エミュレーションモジュールも含めて、ハードウェアの
機能に近いところでモジュール化されているので、ハー
ドウェアに直接アクセスするようなアプリケーションプ
ログラムAPPであっても、エミュレーションを正しく
行なうことができる。
よれば、実行マシン上でターゲットマシンをエミュレー
ションするプログラムが、カーネルKR、ディスパッチ
ャDP、各実行モジュールと階層化されており、極めて
見通しの良い構成となっている。従って、膨大な機能を
エミュレートする膨大なプログラムを効率よく開発する
ことができる。しかも、各実行モジュールは、BIOS
エミュレーションモジュールも含めて、ハードウェアの
機能に近いところでモジュール化されているので、ハー
ドウェアに直接アクセスするようなアプリケーションプ
ログラムAPPであっても、エミュレーションを正しく
行なうことができる。
【0066】かかるモジュール構造を採用すると、通常
は、モジュールの数が増えて、その管理が煩雑となって
しまうが、本実施例では、初期化の処理の中で、実行モ
ジュール自身がその組み込みの時点で自己のモジュール
名と呼出アドレスをディスパッチャテーブルDTに登録
するので、多数のモジュールの管理、変更や更新が極め
て容易となっている。ディスパッチャテーブルの割当も
固定的なものではなく、登録順に適宜登録して行くの
で、新たな実行モジュールが用意されたり、登録の順序
を変更した場合も何等特別な処置を行なう必要がない。
は、モジュールの数が増えて、その管理が煩雑となって
しまうが、本実施例では、初期化の処理の中で、実行モ
ジュール自身がその組み込みの時点で自己のモジュール
名と呼出アドレスをディスパッチャテーブルDTに登録
するので、多数のモジュールの管理、変更や更新が極め
て容易となっている。ディスパッチャテーブルの割当も
固定的なものではなく、登録順に適宜登録して行くの
で、新たな実行モジュールが用意されたり、登録の順序
を変更した場合も何等特別な処置を行なう必要がない。
【0067】次に本発明の第2の実施例について説明す
る。第2実施例のエミュレーション装置は、第1実施例
と同一のハードウェア構成を有する。この実施例では、
図18に示すように、アプリケーションプログラムAP
Pは、BIOSのエントリポイントを直接コールする
(符号G1)。BIOSの中には、仕様が公開されてお
り、あるいは標準的なデバイス用のBIOSであってそ
のエントリポイントが固定的であるために直接呼ばれる
ことがあるものが存在する。こうした場合、ジャンプテ
ーブルを書き直しておくという対応では対応することが
できない。そこで、本実施例では、このBIOSのエン
トリポイント自体にHLT命令を置いておく。
る。第2実施例のエミュレーション装置は、第1実施例
と同一のハードウェア構成を有する。この実施例では、
図18に示すように、アプリケーションプログラムAP
Pは、BIOSのエントリポイントを直接コールする
(符号G1)。BIOSの中には、仕様が公開されてお
り、あるいは標準的なデバイス用のBIOSであってそ
のエントリポイントが固定的であるために直接呼ばれる
ことがあるものが存在する。こうした場合、ジャンプテ
ーブルを書き直しておくという対応では対応することが
できない。そこで、本実施例では、このBIOSのエン
トリポイント自体にHLT命令を置いておく。
【0068】この結果、アプリケーションプログラムA
PPがBIOSが呼ばれると、直ちにカーネルKRが起
動してディスパッチャDPを介してBIOSエミュレー
ションモジュールに処理を移行する。従って、第2実施
例のエミュレーション装置でも、第1実施例と同様、B
IOSコールを確実に検出して、その処理をエミュレー
ションすることができる。
PPがBIOSが呼ばれると、直ちにカーネルKRが起
動してディスパッチャDPを介してBIOSエミュレー
ションモジュールに処理を移行する。従って、第2実施
例のエミュレーション装置でも、第1実施例と同様、B
IOSコールを確実に検出して、その処理をエミュレー
ションすることができる。
【0069】以上本発明の実施例について説明したが、
本発明はこうした実施例に何等限定されるものではな
く、本発明の要旨を逸脱しない範囲内において、種々な
る態様で実施し得ることは勿論である。例えば、第1実
施例の手法と第2実施例の手法を一つのエミュレーショ
ン装置の中で併用した構成をとり、BIOSの性格や用
いられ方などに基づいて最適な対応を取ることも現実的
である。本発明は、BIOSとしてハードディスク84
をアクセスするもの、タイマ68をアクセスするもの、
拡張されたBIOSの機能を司るものなどであっても同
様に適用できることは当然である。また、BIOS以外
の一群の処理、例えばライブラリとして用意された関数
や手続にも適用することができる。
本発明はこうした実施例に何等限定されるものではな
く、本発明の要旨を逸脱しない範囲内において、種々な
る態様で実施し得ることは勿論である。例えば、第1実
施例の手法と第2実施例の手法を一つのエミュレーショ
ン装置の中で併用した構成をとり、BIOSの性格や用
いられ方などに基づいて最適な対応を取ることも現実的
である。本発明は、BIOSとしてハードディスク84
をアクセスするもの、タイマ68をアクセスするもの、
拡張されたBIOSの機能を司るものなどであっても同
様に適用できることは当然である。また、BIOS以外
の一群の処理、例えばライブラリとして用意された関数
や手続にも適用することができる。
【0070】上記実施例では、DOS/V機上でPC−
9800機を実現する構成を例に挙げて説明したが、P
C−9800機上でDOS/V機を実現することも容易
である。更に、他のアーキテクチャに適用することも可
能である。
9800機を実現する構成を例に挙げて説明したが、P
C−9800機上でDOS/V機を実現することも容易
である。更に、他のアーキテクチャに適用することも可
能である。
【0071】
【発明の効果】以上説明したように請求項1または請求
項2のエミュレーション装置では、例えばBIOSのよ
うな一群の処理に関し、これが呼び出された後であって
実質的な処理の開始前に、これと等価な処理を実行マシ
ン上で実現する一群の機能モジュールに処理を移行する
から、処理を呼び出す以前に代替処理に移してしまうこ
とがなく、この処理の開始を検出して処理を開始する他
の処理が存在しても、その処理の開始を含めてエミュレ
ーションを行なうことができるという優れた効果を奏す
る。
項2のエミュレーション装置では、例えばBIOSのよ
うな一群の処理に関し、これが呼び出された後であって
実質的な処理の開始前に、これと等価な処理を実行マシ
ン上で実現する一群の機能モジュールに処理を移行する
から、処理を呼び出す以前に代替処理に移してしまうこ
とがなく、この処理の開始を検出して処理を開始する他
の処理が存在しても、その処理の開始を含めてエミュレ
ーションを行なうことができるという優れた効果を奏す
る。
【0072】また、請求項3のエミュレーション装置
は、処理移行手段の検出手段が、一群の処理の一つが呼
び出されたアドレスにおかれた特権命令の実行を検出
し、この特権命令の検出に従って、処理を一群の機能モ
ジュールの対応する一つに移行する。従って、かかる処
理が呼び出されたことを確実かつ容易に検出することが
できる。
は、処理移行手段の検出手段が、一群の処理の一つが呼
び出されたアドレスにおかれた特権命令の実行を検出
し、この特権命令の検出に従って、処理を一群の機能モ
ジュールの対応する一つに移行する。従って、かかる処
理が呼び出されたことを確実かつ容易に検出することが
できる。
【0073】請求項4のエミュレーション装置は、この
一群の処理が、ターゲットマシンに用意されたBIOS
なので、BIOSの処理を的確にエミュレートすること
ができるという効果を奏する。
一群の処理が、ターゲットマシンに用意されたBIOS
なので、BIOSの処理を的確にエミュレートすること
ができるという効果を奏する。
【0074】請求項5のエミュレーション装置は、特権
命令が、実行マシンの演算処理部を停止する命令なの
で、余分な処理を行なってしまうことがなく、効率良く
エミュレーションの処理に移行することができるという
効果を奏する。
命令が、実行マシンの演算処理部を停止する命令なの
で、余分な処理を行なってしまうことがなく、効率良く
エミュレーションの処理に移行することができるという
効果を奏する。
【0075】請求項6のエミュレーション装置は、エミ
ュレーションの開始前に、所定のメモリ領域に、特権命
令を配置し、エミュレーションの開始前に、ジャンプテ
ーブルの内容をこの特権命令が配置されたアドレスに置
き換え、一群の処理の一つが呼び出されたアドレスにお
かれた特権命令の実行を検出して、この特権命令の検出
に従って、処理を前記一群の機能モジュールの対応する
一つに移行するから、かかる処理移行手段の働きを自動
的に実現することができる。
ュレーションの開始前に、所定のメモリ領域に、特権命
令を配置し、エミュレーションの開始前に、ジャンプテ
ーブルの内容をこの特権命令が配置されたアドレスに置
き換え、一群の処理の一つが呼び出されたアドレスにお
かれた特権命令の実行を検出して、この特権命令の検出
に従って、処理を前記一群の機能モジュールの対応する
一つに移行するから、かかる処理移行手段の働きを自動
的に実現することができる。
【0076】請求項7のエミュレーション装置は、所定
のメモリ領域内に、特権命令を配置可能な箇所を検索
し、検索した箇所に、この特権命令と共に、対応する一
群の処理の一つを示す識別子を配置するから、特権命令
を配置する箇所を自ら検索して配置でき、かつ複数存在
する場合には、その識別子を配置することで、特権命令
が実行されたとき、その原因の特定を容易として、必要
なエミュレーションの起動を容易とするという効果を奏
する。
のメモリ領域内に、特権命令を配置可能な箇所を検索
し、検索した箇所に、この特権命令と共に、対応する一
群の処理の一つを示す識別子を配置するから、特権命令
を配置する箇所を自ら検索して配置でき、かつ複数存在
する場合には、その識別子を配置することで、特権命令
が実行されたとき、その原因の特定を容易として、必要
なエミュレーションの起動を容易とするという効果を奏
する。
【図1】本発明の一実施例であるエミュレーション装置
の概略構成を示すブロック図である。
の概略構成を示すブロック図である。
【図2】実行マシンであるDOS/V機の概略構成図で
ある。
ある。
【図3】タスクアドレスと物理メモリとの関係を示す説
明図である。
明図である。
【図4】実行モードとその切り換えの関係を示す説明図
である。
である。
【図5】DOS/V機が立ち上がった直後のメモリマッ
プおよびI/Oマップを示す説明図である。
プおよびI/Oマップを示す説明図である。
【図6】エミュレータ装置の初期化処理ルーチンを示す
フローチャートである。
フローチャートである。
【図7】初期化の処理の様子を示す説明図である。
【図8】DOS/V機の割込関係の回路を示すブロック
図である。
図である。
【図9】実行モジュールを組み込む際の処理ルーチンを
示すフローチャートである。
示すフローチャートである。
【図10】ディスパッチャ呼出ルーチンを示すフローチ
ャートである。
ャートである。
【図11】エントリポイント取得ルーチンを示すフロー
チャートである。
チャートである。
【図12】実行モジュールの組み込み時における呼出ア
ドレスの登録の様子を示す説明図である。
ドレスの登録の様子を示す説明図である。
【図13】実行モジュールがその登録時に他の実行モジ
ュールを呼び出す様子を示す説明図である。
ュールを呼び出す様子を示す説明図である。
【図14】BIOSエミュレータ登録処理ルーチンを示
すフローチャートである。
すフローチャートである。
【図15】ジャンプテーブルJTを用いたBIOSの呼
び出しの一例を概念的に示す説明図である。
び出しの一例を概念的に示す説明図である。
【図16】実行モジュール間の直接呼出(モジュール間
通信)の様子を示す説明図である。
通信)の様子を示す説明図である。
【図17】実施例のエミュレーション装置において、B
IOSの呼び出しをエミュレートする様子を示す説明図
である。
IOSの呼び出しをエミュレートする様子を示す説明図
である。
【図18】本発明の第2の実施例であるエミュレーショ
ン装置の動作の様子を示す説明図である。
ン装置の動作の様子を示す説明図である。
【図19】アプリケーションプログラムAPPからのB
IOSの呼び出しの様子を説明する模式図である。
IOSの呼び出しの様子を説明する模式図である。
20…演算処理部 21…CPU 22…ローカルバス 23…キャッシュメモリ 24…キャッシュコントローラ 25…メインメモリ 30…PCIブリッジ 32…PCIバス 40…コントローラ部 42…ISAバス 44…VGA 46…SCSIコントローラ 48…PCI−ISAブリッジ 54…複合I/Oポート 56…サウンドI/O 58…ハードディスク 60…I/O部 62…拡張スロット 64…KEY 66…PIC 68…タイマ 72…キーボード 73…マウス 74…スピーカ 76…CRT 82…フロッピディスク装置 84…ハードディスク 86…パラレルポート 88…プリンタ 90…シリアルポート 92…モデム 96…マイクロフォン APP…アプリケーションプログラム An…呼出アドレス CFM…文字フォントエミュレータ DEM…表示エミュレータ DMn…実行モジュール DP…ディスパッチャ DT…ディスパッチャテーブル EP…エントリポイント GEM…グラフィックエミュレータ IRM…割込コントローラエミュレータ KEM…キーボードエミュレータ KR…カーネル MEM…メモリエミュレータ MUM…マウスエミュレータ TEM…テキストエミュレータ TIM…タイマエミュレータ
フロントページの続き (72)発明者 小島 政典 長野県諏訪市大和三丁目3番5号 セイコ ーエプソン株式会社内 (72)発明者 赤堀 豊 長野県諏訪市大和三丁目3番5号 セイコ ーエプソン株式会社内
Claims (7)
- 【請求項1】 少なくとも演算処理部、記憶部、入出力
部を備えたコンピュータである実行マシン上で、該実行
マシンのアーキテクチャとは異なるアーキテクチャを備
えたコンピュータであるターゲットマシン用のプログラ
ムを実行させるエミュレーション装置であって、 前記ターゲットマシンにおいてジャンプテーブルを介し
て呼び出し可能な一群の各処理と等価な処理を前記実行
マシンに実行させる一群の機能モジュールと、 前記ターゲットマシンにおける前記一群の処理の一つが
前記ジャンプテーブルを介して呼び出された後、実質的
な処理の開始前に、該処理を前記実行マシン上の一群の
機能モジュールの対応する一つに移行する処理移行手段
とを備えたエミュレーション装置。 - 【請求項2】 少なくとも演算処理部、記憶部、入出力
部を備えたコンピュータである実行マシン上で、該実行
マシンのアーキテクチャとは異なるアーキテクチャを備
えたコンピュータであるターゲットマシン用のプログラ
ムを実行させるエミュレーション装置であって、 前記ターゲットマシンにおいて予め定められたアドレス
により呼び出し可能な一群の各処理と等価な処理を前記
実行マシンに実行させる一群の機能モジュールと、 前記ターゲットマシンにおける前記一群の処理の一つが
前記予め定められたアドレスにより呼び出された後、実
質的な処理の開始前に、該処理を前記実行マシン上の一
群の機能モジュールの対応する一つに移行する処理移行
手段とを備えたエミュレーション装置。 - 【請求項3】 請求項1または2記載のエミュレーショ
ン装置であって、 前記処理移行手段は、 前記一群の処理の一つが呼び出されたアドレスにおかれ
た特権命令の実行を検出する検出手段と、 該特権命令の検出に従って、処理を前記一群の機能モジ
ュールの対応する一つに移行する手段とからなるエミュ
レーション装置。 - 【請求項4】 前記一群の処理が、前記ターゲットマシ
ンに用意されたBIOSである請求項1または2記載の
エミュレーション装置。 - 【請求項5】 前記特権命令が、前記実行マシンの演算
処理部を停止する命令である請求項3記載のエミュレー
ション装置。 - 【請求項6】 請求項1記載のエミュレーション装置で
あって、 前記処理移行手段は、 前記エミュレーションの開始前に、所定のメモリ領域
に、前記特権命令を配置する特権命令配置手段と、 前記エミュレーションの開始前に、前記ジャンプテーブ
ルの内容を前記特権命令が配置されたアドレスに置き換
える置換手段と前記一群の処理の一つが呼び出されたア
ドレスにおかれた特権命令の実行を検出する検出手段
と、 該特権命令の検出に従って、処理を前記一群の機能モジ
ュールの対応する一つに移行する手段とからなるを備え
たエミュレーション装置。 - 【請求項7】 請求項6記載のエミュレーション装置で
あって、 前記特権命令配置手段は、 所定のメモリ領域内に、前記特権命令を配置可能な箇所
を検索する検索手段と、 該検索した箇所に、該特権命令と共に、前記対応する一
群の処理の一つを示す識別子を配置する識別子配置手段
とを備えたエミュレーション装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6309813A JPH08147173A (ja) | 1994-11-18 | 1994-11-18 | エミュレーション装置 |
US08/559,223 US5758124A (en) | 1994-11-18 | 1995-11-17 | Computer emulator |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP6309813A JPH08147173A (ja) | 1994-11-18 | 1994-11-18 | エミュレーション装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08147173A true JPH08147173A (ja) | 1996-06-07 |
Family
ID=17997561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6309813A Pending JPH08147173A (ja) | 1994-11-18 | 1994-11-18 | エミュレーション装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5758124A (ja) |
JP (1) | JPH08147173A (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1996008766A1 (en) * | 1994-09-16 | 1996-03-21 | Philips Electronics N.V. | Microcontroller having a page address mode |
US6148387A (en) * | 1997-10-09 | 2000-11-14 | Phoenix Technologies, Ltd. | System and method for securely utilizing basic input and output system (BIOS) services |
US5968174A (en) * | 1998-03-19 | 1999-10-19 | Bay Networkds, Inc. | Method and apparatus for implementing a 32-bit operating system which supports 16-bit code |
US6263412B1 (en) * | 1998-06-24 | 2001-07-17 | Phoenix Technologies Ltd. | Method and apparatus for RAM emulation using a processor register set |
US7464044B2 (en) * | 1998-12-08 | 2008-12-09 | International Business Machines Corporation | Method and system for using emulation objects for developing point of sale |
US6633405B1 (en) | 1999-12-17 | 2003-10-14 | Hewlett-Packard Development Company, L.P. | Method and apparatus for interfacing generic and device-specific control codes |
US6990579B1 (en) * | 2000-03-31 | 2006-01-24 | Intel Corporation | Platform and method for remote attestation of a platform |
US7082615B1 (en) * | 2000-03-31 | 2006-07-25 | Intel Corporation | Protecting software environment in isolated execution |
US6957332B1 (en) * | 2000-03-31 | 2005-10-18 | Intel Corporation | Managing a secure platform using a hierarchical executive architecture in isolated execution mode |
CA2525578A1 (en) | 2003-05-15 | 2004-12-02 | Applianz Technologies, Inc. | Systems and methods of creating and accessing software simulated computers |
US7747909B2 (en) * | 2006-12-01 | 2010-06-29 | Hon Hai Precision Industry Co., Ltd. | Debug card |
US7743234B2 (en) * | 2007-03-30 | 2010-06-22 | International Business Machines Corporation | Facilitating communication within an emulated processing environment |
JP5115332B2 (ja) * | 2008-05-22 | 2013-01-09 | 富士通株式会社 | エミュレーションプログラム、エミュレーション装置およびエミュレーション方法 |
US8645760B2 (en) * | 2008-07-29 | 2014-02-04 | FAQware | Alternate procedures assisting computer users in solving problems related to error and informational messages |
US9104514B2 (en) * | 2011-01-11 | 2015-08-11 | International Business Machines Corporation | Automated deployment of applications with tenant-isolation requirements |
US10430216B1 (en) * | 2012-08-23 | 2019-10-01 | Scale Computing Inc | Virtual machine automated selection |
US9898307B2 (en) * | 2015-12-21 | 2018-02-20 | Intel Corporation | Starting application processors of a virtual machine |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5062042A (en) * | 1986-04-28 | 1991-10-29 | Xerox Corporation | System for managing data which is accessible by file address or disk address via a disk track map |
JP2590267B2 (ja) * | 1989-06-30 | 1997-03-12 | 株式会社日立製作所 | 仮想計算機における表示制御方式 |
JPH0546406A (ja) * | 1991-08-19 | 1993-02-26 | Hitachi Ltd | 仮想計算機エミユレーシヨン方式 |
US5497494A (en) * | 1993-07-23 | 1996-03-05 | International Business Machines Corporation | Method for saving and restoring the state of a CPU executing code in protected mode |
US5548763A (en) * | 1993-07-26 | 1996-08-20 | International Business Machines Corporation | Desk top computer system having multi-level power management |
US5481684A (en) * | 1994-01-11 | 1996-01-02 | Exponential Technology, Inc. | Emulating operating system calls in an alternate instruction set using a modified code segment descriptor |
US5551043A (en) * | 1994-09-07 | 1996-08-27 | International Business Machines Corporation | Standby checkpoint to prevent data loss |
-
1994
- 1994-11-18 JP JP6309813A patent/JPH08147173A/ja active Pending
-
1995
- 1995-11-17 US US08/559,223 patent/US5758124A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5758124A (en) | 1998-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7712104B2 (en) | Multi OS configuration method and computer system | |
CA1304166C (en) | Software emulation of bank-switched memory using a virtual dos monitorand paged memory management | |
JPH08147173A (ja) | エミュレーション装置 | |
JP3546678B2 (ja) | マルチos構成方法 | |
US5586324A (en) | Computer system having system feature extension software containing a self-describing feature table for accessing I/O devices according to machine independent format | |
US6081890A (en) | Method of communication between firmware written for different instruction set architectures | |
US7272831B2 (en) | Method and apparatus for constructing host processor soft devices independent of the host processor operating system | |
US4031517A (en) | Emulation of target system interrupts through the use of counters | |
US8429669B2 (en) | Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status | |
US8416253B2 (en) | Apparatus, method, and recording medium for detecting update of image information | |
US8650375B2 (en) | Virtual machine control program and virtual machine system | |
US5867710A (en) | Portable microkernel operating system verification and testing | |
JPH06324849A (ja) | オペレーティング・システム環境の起動方法およびシステム | |
JP2539913B2 (ja) | デ―タ処理システム | |
EP0098172B1 (en) | Register control processing system | |
US5764956A (en) | Computer peripheral function emulator | |
JP5925288B2 (ja) | 計算機、アクセス管理方法およびアクセス管理プログラム | |
JP2001216172A (ja) | マルチos構成方法 | |
JP3861304B2 (ja) | エミュレーション装置およびその方法 | |
KR20060023956A (ko) | 운영체제 | |
JP3861925B2 (ja) | エミュレーション装置およびその方法 | |
JP3861924B2 (ja) | エミュレーション装置およびその方法 | |
JPH06332803A (ja) | 仮想計算機システムにおけるtlb制御方法 | |
JP3033713B2 (ja) | 仮想計算機エミュレート装置 | |
JPH08190485A (ja) | エミュレーション装置 |