JPH01503181A - コンピュータ - Google Patents

コンピュータ

Info

Publication number
JPH01503181A
JPH01503181A JP62502024A JP50202487A JPH01503181A JP H01503181 A JPH01503181 A JP H01503181A JP 62502024 A JP62502024 A JP 62502024A JP 50202487 A JP50202487 A JP 50202487A JP H01503181 A JPH01503181 A JP H01503181A
Authority
JP
Japan
Prior art keywords
instruction
code
instructions
string
codes
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
Application number
JP62502024A
Other languages
English (en)
Inventor
マックレガー,ロデリック
Original Assignee
インシグニア・ソリューションズ・リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インシグニア・ソリューションズ・リミテッド filed Critical インシグニア・ソリューションズ・リミテッド
Priority claimed from GB8706957A external-priority patent/GB2203572B/en
Publication of JPH01503181A publication Critical patent/JPH01503181A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。

Description

【発明の詳細な説明】 データ処理装置における改良 本発明は、データ処理に関する。
コンピュータの中央処理装置を提供することができる多岐にわたる商業的に入手 可能なプロセッサがある。
各プロセッサ群、算術命令、論理命令および制御命令を実施でき、またメモリー と、入出力装置の特定の構成と共働するようになっている。プロセッサに保持さ れたりメモリーに格納される命令およびデータをアドレス指定する方法は、主と して特定のプロセッサまたはプロセッサ群の特性を示している。その結果、1つ のコンピュータまたは類似のプロセッサに基いた種類のコンピュータのため書か れたコンピュータ・プログラムは、興なるプロセッサに基くコンピュータに使用 するにはしばしば適さない。
市販されるソフトウェアの大部分は、特定のプロセッサのみにおいて使用できる 共通のオペレーティング・システムに基いているのが実情である。互換性のない プロセッサに基くコンピュータは、例えそのプロセッサがある技術的観点におい てソフトウェアが書かれたプロセッサより優れたものであっても、このようなソ フトウェアを使用することはできない、このような非互換性の問題が認識されて おり、この問題を2つの具なる方法で処理する試みがなされている。第1に、あ る選択された第1のプロセッサに基くコンピュータに、必要な互換性を提供する コプロセッサとして働く第2のプロセッサを提供することが示唆されている。
これは、明らかにコストにおける不利をもたらす。
342に、現在ある第1のプロセッサが異なる第2のプロセッサをエミュレート するソフトウェアの提供が提案された。実用に供し得るためには、エミュレーシ ョンは実効処理速度の著しい低下をもたらしてはならず、このため使用されるプ ロセッサがエミュレートされるものより木質的に速く、エミュレーションにより 要求される別の処理がある程度速い処理によフて相殺される場合であっても、非 常に大きな問題となる。速度は、ユーザが迅速な応答時間を要求するのみならず 、あるプログラムの適正な機能のためには特定の実効処理速度あるいは最小処理 速度が本質的である故に重要であることが認識されよう。
本発明は、ソフトウェアによるエミュレーション法を目的とするものであり、明 瞭にするため、以下本文においては、用語「ホスト」とは、ソフトウェアにより 具なるプロセッサ(エミュレートされるプロセッサ)をエミュレートするプロセ ッサを意味するように用い以下においては、ホストおよびエミュレートされるプ ロセッサの一方または両方が他の形態をとり得ることを理解すべきである。
特定の事例として、 Inte1社製の8088と呼ばれるマイクロプロセッサ のエミュレーションについて考察しよう、このマイクロプロセッサは、その命令 がある数の8ビツトのバイトにより定義され、その最初が命令コード(OPコー ド)である命令セットを有する。この命令セットは、略々 230個のOPコー ドからなる(全ての可能°な命令ラベルが使用されてはいない)、はとんどの命 令は1つ以上のオペランドを必要とし、これら命令の2番目のバイトがオペラン ドをアドレス指定するモードを定義するものと見做すことができる。これは、特 定のメモリーまたはレジスタを意味し、またしばしばデータを含み得る。他のマ イクロプロセッサにおいては、これは8088のアドレス指定モードの機能と対 比し得る機能を行なう命令の2番目のバイト以外のバイトであり得る。
もし8088マイクロプロセツサの動作をエミュレートすることを必要とするな らば、このプロセッサのいくつかの特性をエミュレートしなければならない、主 として、8088の命令セットは、ホスト・マイクロプロセッサのそれに対して マツプされねばならない、止むを得ないことであるが、1対1のマツピングは存 在しない、加えて、ホスト・マイクロプロセッサの機能を用いて%8088によ り与えられるアドレス指定モードの多くの順列をやり直すことも必要となろう、 従来技術の手法を用いて命令を解釈するには、各命令コード(即ち、各命令の最 初のバイト)毎に、命令の2番目以降のバイトを分析することができ、かつホス ト・マイクロプロセッサの命令セットにおける適当な一連の命令を提供すること ができるルーチンを必要とする。
エミュレートされるマイクロプロセッサとホスト・マイクロプロセッサとの間の 動作の直接のマツピングは不可避°的に存在しないこと、またレジスタおよびメ モリーのアドレス指定における相違が存在し得ることに関して、各8088の命 令コードと対応するサブルーチンは複雑となり、典型的には異なるアドレス指定 モード間を区別する働きをする多くの条件付き命令文を含むことになる。各命令 毎にこのような複雑なサブルーチンを実行すると、不可避的に処理速度が低下す る。
ホストではな(8088により与えられる(補助的けた上げやパリティのような )フラッグの取扱い、および割込みの取扱いにおいて更に複雑さが生じることに なろう。
本発明の1つの目的は、実効速度を著しく失うことなくマイクロプロセッサのエ ミュレーションを行なうことにある。エミュレーションは不可避的に付加的処理 を伴うが、その重要性はホスト・マイクロプロセッサの処理速度に照して判定し なければならないことが認識される。ホスト・マイクロプロセッサは、(おそら くは数倍のオーダーで)エミュレートしたいマイクロブロセッサよりも速い処理 速度を持つこと、および付加的処理量がホストの処理速度における増加と同じ程 度であるかあるいはこれより小さいことを前提として。
エミュレーシヨンと関連する付加的処理が結果として実効速度の大きな喪失をも たらすことにはならないことが予期される。
従って、本発明は、−特質において、逐次の命令により制゛御されるデータ処理 装置からなり、この命令の実質数はn個のこのような1組のコードから選択され る命令コードと、m個のこのようなコードの組から選択された認定コードとから なり、データ処理装置は、命令コードと修飾コードの一定の組合せと対応する各 場所を持つ略々nxm個の場所を有し、かつ前記の命令コードおよび修飾コード と対応する一連の命令を保持するストアを含む。
「修飾コード」によって、命令コードの後の次に重要なバイト、または命令中の 他の離散的要素が意味される。
別の特質においては、本発明は、受取られた一連の命令に従ってデータ処理装置 の動作を制御するためのプロセスを構成し、ここで少なくともある命令はそれぞ れ演算子と、オペランド・アドレッサとからなり、演算子とオペランド・アドレ ッサの有限個の許された組合せが存在し、プロセスは、演算子およびオペランド ・アドレッサの前記の許される組合せ毎に1つずっ複数の命令ストリングを保持 し、受取られた各命令に対するデータ処理装置に入力するステップからなり。
前記命令ストリングは前記演算子およびオペランド・アドレッサの組合せと対応 するている。
更に別の特質においては、本発明は、処理装置を含むコンピュータと、一連の命 令を格納する第1の格納装置を含み、この命令の実質数は演算子およびアドレス 指定モードとを含み、前記演算子および前記アドレス指定モードの可能な組合せ とそれぞれ対応する複数の場所を有し、かつかかる各場所に命令ストリングを保 持するための第2のストア装置と、それぞれ前記第1のストア装置からの命令と 対応する前記第2のストア装置における場所からの命令ストリングを前記処理装 置に対して順次に入力するための制御装置とを含む。
望ましくは、前記コンピュータは更に、前記各場所と対応するエントリを有する テーブル装置を含み、各エントリは前記命令ストリングの前記342のストア装 置におけるアドレスを含°む。
各命令ストリングは、前記制御装置に、次の命令の前記ストア装置におけるアド レスと関連する情報を与えるように構成されることが望ましい。
本発明は、添付図面に関して事例として記述することにする。
第1図は本発明の特質を示す概略図、第2A図、第2B図および第2C図はホス ト・マイクロプロセッサの言語におけるあるコード・ストリングのリスト、第3 図は第2A図、第2B図および第2C図からの抽出により例示されるコード・ス トリングを生成するための装置を示すリスト、第4図、第5図、第6図および第 7図は前記生成装置の動作を示すフローチャート、第8図は第4図に示される如 き汎用ゼネレータ・プログ°ラムのリストからの抽出図、第9図は第5図に示さ れる擬似指令のリストからの抽出図、第1O図は第6図に示されるマクロ・ライ ブラリのリストからの抽出図、および第11A図および第11B図は、従来技術 および本発明による割込み法をそれぞれ示す概略図である。
本文の記述は、その動作がエミュレートされるべきマイクロプロセッサの一例と して、Inte1社製の8088チツプについて、かつホスト・マイクロプロセ ッサの一例としてMotorola社製のC68020チツプについて続けるこ とになろう0本発明の詳細な説明に進む前に、8088チツプのいくつかの関連 する特質の概要を述べれば役立とう。
他のどんなマイクロプロセッサにおいてと同様に、8088の非常に重要な2つ の特性は、命令セットと、データのアドレス指定が処理される方法とである。こ の命令セットは、算術、論理および制御の諸命令を含み、1バイトのOPコード の機械コード形態をとる0例えば、算術的なアセンブリ命令rADtJと対応す る6つのOPコード、バイトとワード操作問、および例えばメモリーとレジスタ のオペランド間を識別するOPコード、がある、オペランド自体は、命令ストリ ングの2番目で、必要ならば連続するバイトにおいて定義され、あるOPコード がオペランドを要求しないことが認められる。
演算きれるべきデータは、種々のアドレス指定モードにおいてアト、レス指定す ることができる。データ自体は、例えば、命令の一部を形成することもでき、命 令において指名されたプロセッサのレジスタに見出すこともできる。あるいはま た、命令はデータが見出されるメモリーのアドレスを保有し得、あるいはアドレ スを 。
含むレジスタまたはメモリー・アドレスを得るため加算されることを要するレジ スタを記述することになろう。
当業者は、更に別のアドレス指定モードが判るであろう。
先に概説したように、これまで命令ストリングにおける各OPコードを単一バイ ト索引テーブルにおけるアドレスとして用いて、8088をエミュレートする試 みがなされてきたが、この試みはOPコード毎に必要な(ホスト・マイクロプロ セッサの機械語中の)コーディングを指示して、命令ストリームの連続するバイ トに含まれるアドレス指定モードおよび他の情報の分析を可能にし、かつ復号さ れた命令を実行する。この試みにおける問題は、8088マイクロプロセツサの 能力に寄与するアドレス指定モードにおける非常に柔軟性が、OPコードの多く の可能性に対する著しい長さおよび複雑さのコーディング・ストリングをもたら す結果となることである。理解されるように、このことは、ホスト・マイクロプ ロセッサが著しく速い処理速度を持たなければ、エミュレーションがエミュレー トされつつあるマイクロプロセッサよりも低い実効速度で実行されることを意味 する。
本発明によれば、命令ストリームにおける各OPコードおよびその直後に続くバ イトによりアドレス指定される索引即ち分岐テーブルが提供される。OPコード および次に続くバイトの双方に対する通常256通りの可能性に従って、テーブ ルは(公称)64にのエントリを有する。OPコードおよびアドレス指定モード の一貫した各組合せが表わされる分岐テーブルの性格から、どんな場所への飛越 しも、どんな復号の必要もなく、使用されるアドレス指定モードな「暗示」する 0分岐テーブルにおける各エントリは、8088の命令に対して同じ機能を行な うM C68020コードにおける命令ストリングのメモリーにおけるアドレス を含む。要求される68020のコーディングは、アドレス指定モードの復号が 全く要求されないため、(従来のソフトウェアによるエミュレーションと比較し て)簡単なものである。
エミュレーシヨン・コーディングにおける条件付き命令文の必要はほとんど回避 される。
更に説明するため、概略図形態である第1図を参照する。マイクロプロセッサl Oは、コード・メモリー・セグメント14に保持される次の8088命令を指示 するのカく機能である「次の命令ポインタJ 12を与える。 8088におい ては、命令リストのベース即ちデータ点がコード・セグメント・レジスタに保持 される。命令ストリームにおける次の命令の基底アドレスに間するアドレス(論 理アドレスと見做すこともできる)が、命令ポインタとして参照される別のレジ スタに保持される。これは、飛越しもまた生じ得るが、最も一般的な場合に、最 後の命令の長さと対応する量だけ増分される。8088における20ビツトであ る物理的メモリー・アドレスは、4つの下位の「0」が付属したコード・セグメ ント・レジスタ(基底アドレス)の16ビツトの内容に対して命令ポインタ(論 理アドレス)の16ビツトの内容を加算することにより構成される。本構成にお いては、6802Gのレジスタa5を用いて、基底アドレス、論理アドレスおよ び擬似8088コード・メモリー・セグメントの基底の和を保持する。これは、 a5の内容を「物理的」な32ビツトの68020のメモリー・アドレスとする 。これにより、反復される加算機能の必要を回避する。必要に応じて、(例えば 、飛越し即ちセグメントの再配置の故に)論理アドレスを減算によりa5から再 構成することができる。
本発明によれば、取出された命令はプロセッサにより直接実行されず、最初の2 つのバイトがテーブル・ポインタ16において用いられて64にの分岐テーブル 18における適当なエントリを指示する。以下本文に述べる理由により、このテ ーブル・ポインタ16は、分岐テーブル・アドレスに対する基底として働く基底 テーブル・ポインタ(68020におけるレジスタa4)を含む0分岐テーブル の各エントリは、68020のコード・メモリー・セグメント22における命令 ストリング20の32ビツトの開始アドレスを提供する。これらの命令が次に実 行される。
次に、 8088のOPコードの一例として取上げられるpop opコードに 関する68020の多数の命令ストリングのリストである第2A図を参照された い。理解されるように、POP指令はスタックのその時最上位にあるワードを宛 先オペランドへ転送する。アドレス指定モードによれば、3番目またはそれ以降 の命令バイトにおいて定義される変位があるかないかにより、宛先オペランドは レジスタであるか、あるいは1つの特定のレジスタまたはレジスタの組合せによ り指示される記憶場所でよい、この命令ストリングはラベル0XXAYYと呼ば れるが、Xxは16進数におけるOPコードであり、YYはアドレス指定モード である。典型的な状況においては、アドレス指定モードがMOD 000 R/ Mなる形態を呈し、ここでMODとは最初の2つのビットを表わし、変位の有無 により3ビツトのR/M要素がレジスタとして、あるいはメモリーの宛先オペラ ンドに対するレジスタのポインタとして宛先オペランドを定義する如くに見做さ れるかどうかを記述する。更に、第2A図から事例をとり、ラベル08FAOO が、復号形態におけるopコード10001111 (2進数)およびアドレス 指定モード・コードoo ooo oo。
を表わ゛し、ここでアドレス指定モード・コードはMODおよびR/M成分を識 別するため分解された。最初の事例においては、宛先オペランドがレジスタBX (汎用レジスタ)およびSt(ソース標識)の和により指示され、これはMOD 値が00であるR/M値000に割当てられた意味である。この場所における6 8020コーデイングは、専らADDおよびMOVE命令を用いて202機能を 行なう。コーディングの詳細な分析については本発明の理解のため必要とは考え られないが、宛先アドレスが最初にレジスタBXおよびSlから復号され、ワー ドがスタックからこのアドレスへ移動され、スタック・ポインタがスタックにお ける次のワードを指示するように2だけ増分されることが判る。
アドレス指定モードOf 000 000 と対応する次の場所におけるコーデ ィングを比較すると、コーディングは非常に似ているがアドレス計算においては 変位を含むことが判るであろう、これは、01なるMOD値により示される如き 1バイトの変位である。
次に続く場所は、MODの値10により示される如き2バイトの変位を有する。
ソースおよび宛先の両オペランドを必要とする。Pコードにより、アドレス指定 モードは形態MODREG R/Mをとり得るが、REGはワード、バイトおよ びセグメントの各レジスタを識別する。このようなOPコードの場合、熱論多数 の許され得るアドレス指定モードと、従フて多数の分岐テーブルにおけるエント リならびに対応する68020のコード・ストリングが存在する。更に他のOP コードが、更に修正された形態のアドレス指定モードをとり得る。
もし2つの続くOPコードが共にオペランドを必要としない種類であれば、分岐 テーブルにおけるアドレスは両方の命令を実施する一連の68020コードであ り得る。
これは速度における正味の増加を生じる。
これ以上の説明のため、第2A図および特にラベル05bAOOおよび05bA 5Bを付したエントリを参照されたい、 808BのOPコード58乃至5f( 16進数)は個々のオペランドを要求しない命令であり。
オペランドはoPコード内に暗示される。このため、OPコード5bはレジスタ BXに対してワードをポツプする。第2A図では、ラベル05bAOOを付した コード・ストリングがこの機構を行なうことが判るであろケ、もし8088命令 の2番目のバイトが同じ形式(58)の別の指令であれば、プロセッサはラベル 05bA58の下に示されたコード・ストリングを実行することにより、両方の POP命令、即ち、PoP対AXが続<pop対BXを実行することになる。こ のような最適化手順は、本例においては、POPおよびPUSH指令のこれらレ ジスタおよびセグメントの別形悪をカバーする。
もし命令ストリームの2番目のバイトがPOPまたはPυSHのいずれの指令で もなければ、いずれの場合も分岐テーブルは(本例において)ラベル05bAO Oの下に示されたコードを指示し、a5におけるOPコード・ポインタが1だけ 増加され、2番目のバイトが次の命令の最初のバイトとして取扱われる〉エミュ レーションにおいては、情報のポインタ類似物を更新するための手段が提供され ねばならない。
本発明の望ましい特徴によれば、このタスクを実施するコーディングが実質的に 各68020のコード・ストリングの終りに含まれる。即ち、各コード・ストリ ングが、対応する8088の命令の長さと等しい量だけ、レジスタa5の増分を 行なう(8088の情報ポインタと類似する)。
再び第2図に示されるコード・ストリングに関して、含まれることが判るであろ う、このことは、68020のコード・ストリングのアレイ全体において一貫し ている。
この構成は、レジスタa5におけるOpコード・ポインタをその時の命令により 占められるバイト数Xだけ増分する。従って、場所08FAOOに対するコーデ ィングが2バイトの命令である8088命令、addql$2.a5の命令を含 むことが判るであろう、先に説明したように、以降のコード・ストリング°が、 16ビツトに拡張された8ビツトの変位である(MOD Ofにおける)変位を 含むアドレス指定モードを持つ同じOPコードを参照する。従って、このオペラ ンドは2バイトを必要とし、命令全体で3バイトを占め、レジスタa5における OPコード・ポインタによる増分のためのコーディングが与えられる0次のスト リングにおいては、16ビツトの変位が用いられ、命令は4バイトを必要とし、 OPコード・ポインタに4を加えるコーディングが与えられる。
OPコード・ポインタの増分に加え、このコード・ストリングは移動および飛越 し指令(特に、movea5@、d4;jra a4@(d4:1:4))を介 して、そのアドレスが次の8088の命令により指示される分岐テーブルのエン トリに含まれる68020コード・ストリングに直接プロセッサを使用するよう 働く、この分岐は上記の如く、レジスタa4に保持された基底テーブル・ポイン タに関して行なわれることが判るであろう。
この余分なコーディングを各ストリング毎に加えるため黄やされるメモリー空間 における不利は無視し得るが、次の8088の命令と対応する68020の命令 ストリングへ直接移動する能力は、処理時間に充分な利点をもたらす。
当業者には、ある状態においては「フェッチ、実行、フェッチ88.」なる上記 の命令の厳密なシーケンスから外れる必要があることは周知である。これは、通 常所謂割込みの使用を含む。これらは、マイクロプロセッサが異なる速度で作動 する入出力装置と対話することを可能にするため使用することができる。この割 込み機構はまた、マイクロプロセッサからメモリーに保持される特殊なルーチン へ制御を切換えるためにも使用することができる。
エミュレーションにおける特別の困難が割込みの取扱い能力の提供と共に生じる ことは先に述べた9通常の場合には、8088に対して与えられる非同期な割込 み要求が、その時の命令の終りに効を奥するに過ぎない。
しかし、エミュレーションでは、割込みが一部[18020のコード・ストリン グの途中で生じないことは保証できず、おそらくはクラッシュを生じる1本発明 の望ましい特徴によれば、非同期の割込みはa4における分岐テーブルの基底点 を変更するために生じさせられる。
これは、直ちに効果を生じないが、その時の68020の命令ストリングの終り において、命令jraa4@(d4:1:4)が既に述べた如き主分岐テーブル ではなく、例外分岐テーブルへの分岐を行なわせる。このことは、第1図の24 において示される。この例外分岐テーブルもまた64にのエントリを有するが、 各々は割込みを処理する6802Gのコード・メモリー・セグメントにあけるコ ーディング26の共通部を指示する。
同様な手法がセグメントのオーバーライドを処理するため用いられる。
8088は一連のフラッグを有することが説明されており、これらフラッグは3 つのplJ御フラフラッグび6つの状態フラッグからなる。多くの算術OPコー ドが、特に状態フラッグに影響を及ぼし、これはフラッグに実現される情報が即 時のアクセスのため使用できることが8088のプロセッサの作動可能なエミュ レーションの、 必須の要件であるのである。1つの試みにおいて、フラッグに 影響を及ぼすことが知られているOPコードと対応する分岐テーブルの各場所に おけるコーディングは、ホスト・マイクロプロセッサの1つ以上のレジスタに保 持される類似のフラッグを更新することになる。
しかし、本発明の望ましい特徴によれば、別の試みが採用され、全てのフラッグ を連続的に更新状態に保持しようとする試みは行なわない、むしろ、要求がフラ ッグへのアクセスのため受取られると直ちにフラッグの生成を可能にするように 必要な情報が保持される。
一方ではフラッグに影響を及ぼし、他方ではフラッグの情報に依存する操作の予 期される頻度を勘案して、本発明で選好された試みは処理時間における著しい節 減を示している。
更に説明するため、8088プロセツサはパリティ・フラッグとして状況ワード のビット2を使用する。
これは、最後のバイトのパリティの結果として生じ、例えば「パリティによる分 岐」の如き命令において使用される°毎に常に保持するように構成されている。
 68020のプロセッサが自動的にパリティ・フラッグを保持しないことが生 じる0本発明の望ましい特徴によれば、パリティに影響を及ぼす8088のある 命令の機能を実施する68020のいずれかのコード・ストリングが、レジスタ d2に最後の結果のバイトを残すように構成される例えば、命令ADDの1つで あるラベル0OIAOOに対する68020のコード・ストリングである第2B 図を参照されたい。命令「ワード加算」の結果がレジスタd2に置かれることが ライン5から判る。ライン6においては、この結果がレジスタd4に移動され、 回転され(8088および68020間のハイおよびローのバイトにおける異な る規則を勘案して)、レジスタaOにおいて前にセットアツプされたアドレスへ 移動される。
しかし、この結果はレジスタd2に残される。
であるラベル07aAOOに対する68020コード・ストリングが示されてい る。d2からの結果のバイトが前にゼロ化されたレジスタd4へ移動されること がライン1から判る。適当なパリティ値0または1をバイトの結果の256の各 位について保持するパリティ・テーブルrPFテーブル」において索引が行なわ れる。
このパリティ値は、レジスタd4に置かれ、ライン2において、バイト・テスト 操作がライン3における分岐のための主題を与えるように行なわれる。
同様−問題が、 68020プロセツサにおいては与えられない補助けた上げフ ラッグにより生じる。この問題は、パリティ・フラッグについて前に述べたもの と同様な方法で処理される。
256個より僅かに少ないOPコードがあること、および各アドレス指定モード が各OPコードには適当でないことを勘案しても、上記の如き68020のコー ド・ストリングの提供が主な仕事である。1つの場所において典型的に要求され るコーディング量を念頭に置けば、略々300,000行のコーディング・ライ ンが含まれると考えられる。敢えて書けば、またおそらくはこのような量のコー ドのデバッグを行なうため更に重要なことは、商品として実際的でないと見做さ れることであろう、しかし、本発明の更に別の特質によれば、必要なコーディン グの自動生成のための方法が提供される。これについて、ここで詳細に記述する ことにする。
別個のコード・ゼネレータが、 8088の各OPコードまたはOPコードの各 カテゴリ毎に提供される。
POP命令の事例について続けるならば、rpop作成」ゼネレータが提供され 、この特定の事例が第3図のリストに示される。第4図によれば、基本的な前処 理段が、′f118図のリストにおいて例示されるものの如き汎用ゼネレータ・ プログラムを用いてホスト・マイクロプロセッサに対する特定のゼネレ°−タ・ プログラムを生じることが示される。
この前処理段においては、ホストにおいて使用できるレジスタに対し8088の レジスタをマツプするレジスタ・マツピング・テーブルから情報が得られる。
必要に応じて、8088レジスタをメモリー・アドレスにマツプすることができ る。基本前処理段はまた、!6進数の等価値を与える16進数索引テーブルを参 照する。
特殊ゼネレータ・プログラムは、第5図に示されるように、OPコード・セレク タにより駆動されて、その事例が第9図に現れる所謂擬似ホスト・コードのフラ グメント(断片)を生じる。これらは広くマクロに帰属する。第6図に示される ように、マクロ処理段は次に、マクロ・ライブラリを参照することにより擬似コ ードの断片を所要のコード・ストリングに変換する。第10図には、第9図の擬 似ホスト・コードの断片において参照されるこれらマクロを含むマクロ・ライブ ラリからの要約が含まれる。このマクロ処理段の出力は、第2図に示されるよう に、第7図に示される最終アセンブリ・プロセスにおいて目的コードに変換され るコード・ストリング08fa00である。
当業者には、8088チツプに基くあるマイクロコンピュータがある状況の下で 処理の制御をROMに保持される8088のコードの選択された部分に転送する ことは周知である。これらコード部分は、例えば、入出力装置と通信するための サービス・ルーチンを表わすことができる。このサービス・ルーチンはまた、ア プリケージジン・プログラムにより呼出すことができ、標準的なインターフェー スを提供する。
本発明の望ましい形態によれば、68020コードであるサービス・ルーチンが 提供され、このため、「固有」モードにおけるホスト・プロセッサにより、即ち 分岐テーブルと関連することなく実行することができる。
サービス・ルーチンは、「C」の如き高級言語で書き次いでコンパイルすること ができる。このことは、プログラマにとって大きな利点である。
8088の指令は記憶場所に制御を送り、この場所はI RETで終る一連の8 088指令の初めをマークする代りに、擬似8088指令を含む、「擬似指令」 とは、8088命令セツトにおける定義が与えられないOPコードを意味する。
擬似指令のオペランドに応じて、標識が付された高水準言語ルーチンに対しプロ グラム呼出しが行なわれる。この優れた手段により、高水準言語のルーチンをエ ミュレーションで実行中のソフトウェアからトランスバレントな方法で呼出すこ とが可能である。擬似指令のこのような用法については、概略図においてソフト ウェア割込みの用法をそれぞれ従来の形態および本発明の望ましい特徴に従フて 示す第11A図および第11B図を参照することにより更によく理解することが °できよう。第11A図においては、実行中のプログラムにおける命令INT  nがCPUから割込みベクトル・テーブル(I VT)およびINTオペランド nにより定義されるサービス・ルーチンに対して制御を送らせる。このサービス ・ルーチンは、命令I RETにより終る一連の8088命令を含む0次に第1 1B図においては、命令INT nが再びIVTにより定義される場所へ制御が 転送される結果をもたらす。この場所には、プログラム呼出しを高水準言語のプ ログラム・ストアにおける場所nで行なわせる擬似指令BOPnがある。サービ ス・ルーチンは典型的にはC言語で書くことができる。サービス・ルーチンは制 御をBOP命令ストリングへ戻し、エミュレーション・プロセスが前に述べたよ うに維続する。典型的には、BOP指令に続く次の命令は8088命令I RE Tとなる。
固定されたサービス・ルーチンの高速の実行を生じることに加えて、この手法は ホスト・プロセッサが有効に入出力装置と通信することを可能にする0本発明は 単に例示として記述され、これらの事例はMotorola社のマイクロプロセ ッサにおける Inte1社の8088のエミュレーションに限定されるが、本 発明は如何なる意味においてもこの用途に限定されるものと見做されるべきもの ではないことを理解すべきである。
本文に述べた事例においては、分岐テーブルは、典型的辷はそれぞれ演算および アドレス指定モードからなる8088の命令の最初の2つのバイトを用いてアク セスされる。この2番目のバイトは、はとんどの場合オペランド・アドレサと見 做すことができるが、これはオペランドを指示するかあるいは含むためである。
説明したように、この2番目のバイトはしばしば2番目の命令を表わし得、また 両方のバイトを一緒に取扱うのが依然として有利である。ある他の場合には、こ の2番目のバイトの値は分岐プロセスに対し冗長である。他のエミュレーション においては、命令コードおよびオペランド・アドレサの如き機能は最初の2つの バイトを形成し得ない、ある場合には、ホスト・コード・ストリングをアクセス する目的のためには、命令コードおよび命令ストリームにおける次に上位の要素 を使用することが適当となろう。
分岐テーブルがホスト命令ストリングをアクセスする望ましい方法であるが、他 の方法も使用することができる。即ち、適当な標識付けによっては、制御を直接 ホスト命令ストリングの開始に送ることができる。
ホスト命令ストリングを生成するための上記の方法は実質的に利点を有すると感 じられるが、本発明の範囲内にある別の方法も存在しよう。
各場所が次の命令をアドレス指定するためのコーディングを含むという特徴、割 込みが処理される方法をもたらすものと信じられる。
浄吉(内容に変更なし) 浄書X古容に変更なし) F:IQ 9.3 jval = 88 + j 寸 浄書く許容に変更なし) 手続補正書(方つ 1、事件の表示 PCT/GB87100202 2、発明の名称 データ処理装置における改良 3、補正をする者 事件との関係 特許出願人 住所 名 称 インジグニア・ソリューションズ・リミテッド4、代理人 住 所 東京都千代口1区大手町二丁目2番1号新大手町ビル 206区 5、補正命令の[1付 平成 1年 7月18目 嘱目)6、補正の対象 (4)の書面の内容には変更ない 補正書の翻訳文提出書 (特許法第184条の7第1□□□ 昭和63年11月240 特許庁長官 占 1)文 毅 殿 1、特許出願の表示 PCT/GB87100202 2、発明の名称 データ処理装置における改良 3、特許出願人 住 所 イギリス国パツキンガムシャー州/1イ・ライコンブ。
デスボロ・ストリート 28−38. ヴイクトリア・tziス名 称 インジ グニア・ソリューションズ・リミテッド4、代理人 住 所 東京都千代田区大手町二丁目2番1号新大手町ビル 206区 5、補正書の提出日 昭和63年 7月25P 6、添付書類の目録 (1) 補正書の翻訳文 1;tf1 6、ホスト命令セットから選択される命令に対し応答して作動する処理装置と、 それぞれが1つのエミュレートされた命令セットから選択される一連の命令を格 納する第1のストア装置とを設け、前記エミュレートされた命令セットにおける 実質数の命令が1つの演算子および1つのアドレス指定モードを含み、前記演算 子および前記アドレス指定モードの許容し得る組合せとそれぞれ対応する複数の 場所を有し、かつ前記各場所に前記ホスト命令セットから選択された1命令スト リングを保持するための第2のストア装置と、前記処理装置に対し前記第2のス トア装置における場所からの命令ストリングを順次入力するための制御装置とを 設け、該制御装置は、前記演算子および前記アドレス指定モードの実質的に許容 し得る各組合せ毎に前記第2のストア装置における対応する場所のアドレスを含 むエントリを有する分岐テーブル装置を含むことを特徴とするコンピュータ。
7、前°記載2のストア装置における各場所に保持される命令ストリングにおけ る最後の命令が、前記第1の命令に適当な前記分岐テーブルにおけるエントリに 関する分前命令を含むことを特徴とする請求項6記載のコンピュータ。
8、前記制御装置が、1つの基底点を介して前記分岐テーブル装置を参照するよ うになっており、更に1つの割込み信号のコンピュータによる受取りと同時に前 記基底点を変更するようになっており、前記分岐テーブル装置における全てのエ ントリが、前記第2のストア装置における場所の同じアドレスを含む前記の変更 された基底点と対応し、前記第2のストア装置における前記場所が、前記ホスト 命令から選択される命令ストリングを保持しかつ前北割込みに応答するようにな っていることを特徴とする請求項6または7に記載のコンピュータ。
9、前記制御装置が、前記一連のエミュレーシヨンされる命令における次の命令 の前記第1のストア装置におけるアドレスを含む命令ポインタを保持し、前記第 2のストア装置における各場所に保持されるホスト命令ストリングが、前記命令 ポインタを更新する命令を含むことを特徴とする請求項6乃至8のいずれかに記 載のコンピュータ。
lO1前記分岐テーブル装置が、アドレス指定モードを要求しない対をなすある 演算子と対応するエントリを含み、前記第2のストア装置における場所が、前記 両方の演算子をエミュレートするホスト命令ストリングを含む前記分岐テーブル ・エントリの各々と対応することを特徴とする請求項6乃至9のいずれかに記載 のコンピュータ。
11、パリティの如きフラッグ機能に対して、前記制御装置がフラッグ機能に影 雪を及ぼす各作動の結果の少なくとも一部を格納するようにな7ており、前記第 2のストア装置における各場所に保持されるホスト命令ストリングが、前記の格 納された結果または結果の一部から前記フラッグ機能のその時の値を得るための 1つ以上のホスト命令を含む前記フラッグ機能に論理的に従って演算子およびア ドレス指定モードの組合せに対応することを特徴とする請求項6乃至IOのいず れかに記載のコンピュータ。
12、前記組のエミュレートされる命令からの割込み命令に応答して行なわれる 前記分岐の目的の場所において前記第1のストア装置に格納されたある命令が、 エミュレートされた擬似命令を含み、前記分岐テーブル装置における該擬似命令 への対応するエントリが前記割込み機能を行なうためのホスト命令ストリングの 前記第2のストア装置におけるアドレスを含むことを特徴とする請求項6乃至1 1のいずれかに記載のコン国際調査報告 A)JNEX To τ!:E INTERNAT!0NAL 5EARCFI  REPORτ 0NFor rnore datalm about thi s annex !

Claims (5)

    【特許請求の範囲】
  1. 1.実質数のものが1組n個のコードから選択された命令コードと、1組m個の コードから選択された修飾コードとからなる逐次命令により制御されるデータ処 理装置において、略々nxm個の場所を有するストアを設け、各場所が命令コー ドおよび修飾コードの一貫した組合せと対応し、かつ前記命令コードおよび修飾 コードと対応する一連の命令を保持することを特徴とするデータ処理装置。
  2. 2.受取られた一連の命令に従ってデータ処理装置の動作を制御するプロセスで あって、少なくともいくつかの命令がそれぞれ1つの演算子と1つのオペランド ・アドレサを含み、演算子およびオペランド・アドレサの有限個の許容し得る組 合せが存在するプロセスにおいて、演算子およびオペランド・アドレサの前記許 容し得る各組合せ毎に1つずつ複数の命令ストリングを保持し、受取られた命令 毎に前記データ処理装畳に対して入力するステップを含み、前記命令ストリング が前記演算子およびオペランド・アドレサの組合せと対応することを特徴とする プロセス。
  3. 3.処理装置と、実質数の命令が1つの演算子および1つのアドレス指定モード を含む一連の命令を格納する第1のストア装置と、それぞれ前記演算子および前 記アドレス指定モードの許容し得る組合せと対応する複数の場所を有し、かつ前 記各場所に1つの命令ストリングを保持するための第2のストア装置と、前記第 1のストア装置からの命令とそれぞれ対応する前記第2のストア装置における場 所からの命令ストリングを前記処理装置に対し順次入力するための制御装置とを 設けることを特徴とするコンピュータ。
  4. 4.前記各場所と対応するエントリを有するテーブル装置を更に設け、各エント リが前記命令ストリングの前記第2のストア装置におけるアドレスを含むことを 特徴とする請求項3記載のコンピュータ。
  5. 5.各命令ストリングが、前記制御装置に次の命令の前記ストア装置におけるア ドレスに関する情報を提供するように構成されることを特徴とする請求項3記載 のコンピュータ。
JP62502024A 1987-03-24 1987-03-24 コンピュータ Pending JPH01503181A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB8706957A GB2203572B (en) 1987-03-24 1987-03-24 Improvements in data processing means
PCT/GB1987/000202 WO1988007718A1 (en) 1987-03-24 1987-03-24 Arrangement for software emulation
US07/276,421 US5406644A (en) 1987-03-24 1988-11-23 Apparatus and method for emulating a computer instruction set using a jump table in the host computer

Publications (1)

Publication Number Publication Date
JPH01503181A true JPH01503181A (ja) 1989-10-26

Family

ID=27263275

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62502024A Pending JPH01503181A (ja) 1987-03-24 1987-03-24 コンピュータ

Country Status (3)

Country Link
EP (1) EP0310600B1 (ja)
JP (1) JPH01503181A (ja)
WO (1) WO1988007718A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06324883A (ja) * 1993-05-15 1994-11-25 Nec Corp Cpuシミュレータ
JP2005267640A (ja) * 2004-03-18 2005-09-29 Arm Ltd 機能を呼び出す方法と装置

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU639802B2 (en) * 1990-08-14 1993-08-05 Oracle International Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5432795A (en) * 1991-03-07 1995-07-11 Digital Equipment Corporation System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program
WO1994027215A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
AU6701594A (en) * 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding sequences of guest instructions for a host computer
US5615400A (en) * 1993-06-30 1997-03-25 Apple Computer, Inc. System for object oriented dynamic linking based upon a catalog of registered function set or class identifiers
US5392408A (en) * 1993-09-20 1995-02-21 Apple Computer, Inc. Address selective emulation routine pointer address mapping system
US5574887A (en) * 1993-09-20 1996-11-12 Apple Computer, Inc. Apparatus and method for emulation routine pointer prefetch
EP0667573A1 (en) * 1994-02-14 1995-08-16 International Business Machines Corporation Incorporation of services written in one operating system environment into another operating system environment
US5751982A (en) * 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US6142682A (en) * 1997-06-13 2000-11-07 Telefonaktiebolaget Lm Ericsson Simulation of computer processor
US6134515A (en) * 1997-06-13 2000-10-17 Telefonaktiebolaget Lm Ericsson Controlling a first type telecommunications switch upon translating instructions for a second type telecommunications switch
EP0955578A1 (en) * 1998-05-04 1999-11-10 International Business Machines Corporation Method and device for carrying out a function assigned to an instruction code

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6088625A (ja) * 1983-10-21 1985-05-18 Fuji Heavy Ind Ltd 車両用空調装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3069871D1 (en) * 1979-09-24 1985-02-07 Siemens Ag Circuit arrangement for a microcomputer with an interpreter storage
JPS59501684A (ja) * 1982-10-22 1984-10-04 インタ−ナシヨナル・ビジネス・マシ−ンズ・コ−ポレ−シヨン 目的命令ストリ−ムへ殆んど実時間で插入するためのソ−スおよび目的命令ストリ−ムの外部における加速式命令写像

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6088625A (ja) * 1983-10-21 1985-05-18 Fuji Heavy Ind Ltd 車両用空調装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06324883A (ja) * 1993-05-15 1994-11-25 Nec Corp Cpuシミュレータ
JP2005267640A (ja) * 2004-03-18 2005-09-29 Arm Ltd 機能を呼び出す方法と装置

Also Published As

Publication number Publication date
EP0310600A1 (en) 1989-04-12
WO1988007718A1 (en) 1988-10-06
EP0310600B1 (en) 1994-01-19

Similar Documents

Publication Publication Date Title
US5406644A (en) Apparatus and method for emulating a computer instruction set using a jump table in the host computer
US5036484A (en) Personal computer/host emulation system for handling host data with personal computer application programs at personal computers
US5812864A (en) Personal computer/host emulation system for handling host data with personal computer application programs at personal computers
US5394544A (en) Software system debugger with distinct interrupt vector maps for debugging and application programs
US6564179B1 (en) DSP emulating a microcontroller
JP4699580B2 (ja) データ処理システムの配列の静的初期化方法、データ処理方法、並びにデータ処理システム及びその制御手順をコンピュータに実行させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体
JPH0782441B2 (ja) シミユレーシヨン方法
JPH0628036B2 (ja) シミュレーシヨン方法
JP2002502516A (ja) 変換後命令を使用する選択的エミュレーションインタープリテーション
US3698007A (en) Central processor unit having simulative interpretation capability
EP0310600B1 (en) Arrangement for software emulation
Hyde The art of assembly language
TW446916B (en) Computer instruction which generates multiple results of different data types to improve software emulation
US7219337B2 (en) Direct instructions rendering emulation computer technique
US7395199B2 (en) Emulating the operation of a video graphics adapter
JPH0668724B2 (ja) シミユレーシヨン方法
JP2020523693A (ja) Jitコンパイラを使用しかつ選択されたターゲットコードブロックの変換をバイパスするターゲットシステムのエミュレーション
US8612942B2 (en) System for debugging computer program
Neal et al. Experiences with the portability of Concurrent Pascal
Zmyzgova et al. The Impact of Hardware Features on the Processor Instruction Set Architecture
Broadbent Microprogramming and system architecture
Skelton et al. Design And Development Of A Transportable Image Processing And Gis System
Marcotty et al. The systems programming language, Malus
JPS5894041A (ja) 高級言語のデバツク支援装置
Iliffe DIGITAL SYSTEMS LABORATORY I