JP2715967B2 - マイクロコンピュータ - Google Patents

マイクロコンピュータ

Info

Publication number
JP2715967B2
JP2715967B2 JP7055526A JP5552695A JP2715967B2 JP 2715967 B2 JP2715967 B2 JP 2715967B2 JP 7055526 A JP7055526 A JP 7055526A JP 5552695 A JP5552695 A JP 5552695A JP 2715967 B2 JP2715967 B2 JP 2715967B2
Authority
JP
Japan
Prior art keywords
instruction
microcomputer
trap
address
instruction code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP7055526A
Other languages
English (en)
Other versions
JPH0836496A (ja
Inventor
浩道 高橋
勝己 三浦
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP7055526A priority Critical patent/JP2715967B2/ja
Publication of JPH0836496A publication Critical patent/JPH0836496A/ja
Application granted granted Critical
Publication of JP2715967B2 publication Critical patent/JP2715967B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、エミュレーションの実
行中に、所定の命令コードを入力すると割り込みを発生
するマイクロコンピュータに関する。
【0002】
【従来の技術】マイクロコンピュータ(以下マイコンと
記す)の性能は著しく向上しており、使用されるマイコ
ンも、より上位のマイコンへと移行している。
【0003】しかし上位のマイコンを使用する場合、従
来使用してきた下位のマイコン用のソフトウェアがその
まま利用できるかどうかという点が1つの問題点となっ
てくる。一般に上位のマイコンは下位のマイコンとはア
ーキテクチャが異なるため、下位のマイコン用に開発さ
れたソフトウェアをそのまま上位のマイコンで動作させ
ることができない。そのため、上位のマイコンに下位の
マイコンの命令を実行する機能(以下エミュレーション
機能と記す)がない場合は、下位のマイコン用のソフト
ウェアを上位のマイコン用に移植する作業が必要となる
が、費用および工数などの制限により、移植すべきソフ
トウェア量が多いほど作業は困難になる。
【0004】よって、上位のマイコンにエミュレーショ
ン機能をもたせることは、従来のソフトウェア資産の有
効活用およびソフトウェア移植に要する費用、工数の削
減という点で非常に有効である。
【0005】ところで、エミュレーション機能をもつマ
イコンの中には、ハードウェアの制限のため、エミュレ
ーションを実施しているモード(以下エミュレーション
モードと記す)で実行不可能な命令ができる場合、この
ような命令を処理するためエミュレーションモードで割
り込み(以下トラップと記す)を起こし、マイコン本来
の命令を実行するモード(以下ネィティブモードと記
す)に制御を移し、ネィティブモードのトラップ処理ル
ーチンにおいて、ユーザが適当な処理を行うマイコンが
ある。
【0006】このような従来のマイコンの一例について
以降に説明する。
【0007】最初に従来のマイコンの構成、マイコンと
外部メモリとの接続および外部メモリ内のプログラム配
置の一例について図11から図13を用いて説明する。
【0008】図11は従来のマイコンの構成およびマイ
コンと外部メモリとの接続を示したブロック図である。
【0009】マイコン1100は種々の演算処理を行う
演算処理部1101、命令キュー1103、命令キュー
1103から命令コードが出力されるキューバス110
8、キューバス1108の命令コードを入力解読し種々
の制御信号を演算処理部1101、アドレスバス端子1
104、データバス端子1105および外部メモリ11
17に出力したり、演算処理部1101からの情報を入
力したりする制御部1102、外部アドレスバス111
5と内部アドレスバス1106とを接続するアドレスバ
ス端子1104、外部データバス1116と内部データ
バス1107とを接続するデータバス端子1105から
構成されており、マイコン1100と外部メモリ111
7とは外部アドレスバス1115、外部データバス11
16を介して接続されている。
【0010】演算処理部1101は演算部1109、プ
ログラムの実行状況を示す16ビットのレジスタである
プログラムステータスワード(以下PSWと記す)11
10、汎用レジスタ群1111、スタックエリアのポイ
ンタを指す16ビットレジスタであるスタックポインタ
(以下SPと記す)1112、マイコン1100が実行
しようとしているプログラムメモリアドレスのオフセッ
ト情報を保持する16ビットカウンタであるプログラム
カウンタ(以下PCと記す)1113で構成されており
それぞれが内部バス1114を介して接続されている。
【0011】なおPSW1110の最上位ビットは、マ
イコン1100の動作しているモードを表すステータス
フラグ(以下MDフラグと記す)であり、マイコン11
00はMDフラグが「0」のときエミュレーションモー
ド、「1」のときネィティブモードで動作するものとす
る。(図12参照) ところで、エミュレーション機能を持つマイコンにおい
ては、ハードウェアの増大を防ぐ意味でネィティブモー
ドのレジスタをそのままエミュレーションモードで用い
ることが多い。こうした場合、通常は上位のマイコンの
方が下位のマイコンよりもレジスタ数が多いので、エミ
ュレーションモードにおいては未使用のレジスタができ
る。本マイコンの場合汎用レジスタ群1111中のXR
レジスタが未使用レジスタであるとする。
【0012】なお、マイコン1100のエミュレーショ
ンモードの命令のうち、1バイト目で動作が決まりかつ
1バイトで構成される命令のうちトラップとなる命令の
コードの1つを「57H」、通常に実行される命令(以
下1バイト定義命令と記す)コードの1つを「20H」
とする。なお「20H」は汎用レンジスタ群1111中
のXレジスタの値をインクリメントする命令のコードと
する。
【0013】次に、外部メモリ1117内のプログラム
配置の一例を示す。
【0014】外部メモリ1117のプログラム配置例を
図13に示す。
【0015】外部メモリ117内はベクタ領域 プ
ログラムエリア スタックエリア命令コード解析ル
ーチン 命令別処理ルーチンで構成されている。
【0016】以下に各領域について説明する。
【0017】 ベクタ領域はエミュレーション中のト
ラップなどによる割り込み処理リーチンの開始アドレス
が格納されているエリアで、1ベクタは2バイト(1ワ
ード)で構成され、エミュレーション中のトラップなど
の割り込みが発生すると、制御部1102の制御によ
り、割り込み要因に対応したベクタの内容がPC111
3にロードされる。エミュレーション中のトラップのベ
クタ番号は16(ベクタアドレスは「0020H」番
地)に設定されているものとする。
【0018】なおベクタ領域は「0000H」〜「00
FFH」番地に配置してある。
【0019】 プログラムエリアはネィティブモード
のプログラムエリアとエミュレーションモードのプログ
ラムエリアとに分かれている。ネィティブモードのプロ
グラムエリアはエミュレーションモードのプログラムを
実行するために必要な、レジスタ等の初期化を行うため
のプログラムを、エミュレーションモードのプログラム
エリアはマイコン1100がエミュレーションを行う下
位のマイコンのプログラムをそれぞれ格納してある領域
である。なお、プログラムエリアは「0200H」〜
「05FFH」番地に配置してあり、ネィティブモード
のプログラムエリアを「0200H」〜「03FFH」
番地に、エミュレーションモードのプログラムエリアを
「0400H」〜「04FFH」番地にそれぞれ配置し
てある。
【0020】 スタックエリアは、エミュレーション
中にトラップが発生した場合にプログラム実行中のPS
WおよびPCの情報をセーブすることなどに使用され
る。スタックエリアは「2000H」〜「2FFEH」
番地に配置してある。
【0021】 マイコン1100がトラップを起こし
た後に実行される命令コード解析ルーチンでは、トラッ
プを起こした命令コード部を認識しその命令コード値を
利用して命令別処理ルーチンに分岐する処理が行われ
る。命令コード解析ルーチンは「3200H」〜「32
FFH」番地に配置してある。
【0022】 命令別処理ルーチンでは、トラップを
起こした命令に対してユーザが行う適当なソフトウェア
処理、トラップから復帰するために必要なPC補正およ
びトラップからの復帰命令(以下リターン命令と記す)
による処理が行われる。リターン命令はこのルーチンの
最後の処理になるように配置してある。命令別処理ルー
チンは「5700H」番地〜「57FFH」番地に配置
してある。
【0023】またエミュレーションモードのプログラム
エリア内には1バイト定義命令のコード「20H」が
「0400H」番地に、1バイト目で動作が決まりかつ
1バイトで構成される命令でトラップとなる命令コード
「57H」が「0425H」番地にそれぞれ配置してあ
る。
【0024】以降にマイコン1100の動作について図
14、図15を用いて説明する。
【0025】まずリセットにより、マイコン1100の
PC1112は「0200H」に、PSW1110中の
MDフラグは「1」に初期化され、マイコン1100は
「0200H」番地以降のネィティブモードのプログラ
ムを実行していくものとする。
【0026】ネィティブモードのプログラムにおいては
エミュレーションモードのプログラムで使用されるスタ
ックポインタSP1112の値を「2FFEH」に初期
化する処理等が行われた後、MDフラグを「0」にし、
PC1113に「0400H」を格納し、エミュレーシ
ョンモードのプログラムの先頭アドレスの命令コードを
フェッチするための処理が行われる。
【0027】以降にエミュレーションモードにおける1
バイト定義命令のコード「20H」、1バイト目で命令
の動作が決まりかつ1バイトで構成されトラップとなる
命令のコード「57H」が入力された場合におけるマイ
コン1100の動作についてそれぞれ説明する。
【0028】〔1〕最初に1バイト定義命令コード「2
0H」を処理する場合の本マイコンの動作について説明
する。
【0029】まず制御部1102は、外部メモリ111
7からPC1113の指すアドレス「0400H」番地
の命令コード「20H」を命令キュー1103に取り込
み、PC1113の値をインクリメントする制御信号を
発生する。
【0030】次に命令キュー1103から「20H」が
キューバス1108に出力されて、制御部1102に入
力された場合、制御部1102は演算処理部1101
に、Xレジスタの値を内部バス1114に出力し、演算
処理部1101に入力後、演算部1109において1を
加え、そして演算結果を内部バス1115に出力して再
度Xレジスタに、命令実行状況の情報をPSW1110
にそれぞれ格納するという一連の処理を行う制御信号を
出力する。
【0031】〔2〕次に1バイト目でトラップとなる命
令コード「57H」に対する本マイコンの動作について
説明する。
【0032】まず制御部1102は、外部メモリ111
7からPC1113の指すアドレス「0425H」番地
の命令コード「57H」を命令キュー1103に取り込
み、PC1113の値をインクリメントする制御信号を
発生する。
【0033】次に命令キュー1103から「57H」が
キューバス1108に出力され、制御部1102に入力
された場合、制御部1102は、1バイト目でトラップ
となる命令コードが入力されたときの同制御部1102
の制御フローすなわち図14に示した処理を行う制御信
号を演算処理部1101に対して出力する。
【0034】 すなわち、制御部1102はSP11
12の値「2FFEH」を内部バス1114に出力し
て、演算部1109に入力後、2を減じ、演算結果の
「2FFCH」を内部バス1114に出力し、SP11
12に格納するよう制御する。
【0035】 制御部1102は、SP1112の値
を内部バス1114、内部アドレスバス1106、アド
レス端子1104を通して外部アドレスバス1115
に、またSPW1110の値を内部バス1114、内部
データバス1107、データバス端子1105を通して
外部データバス1116にそれぞれ出力し、外部メモリ
1117のアドレス「2FFCH」にPSW1110の
値を書き込むよう制御する。
【0036】 の処理で更新されたPS1112の
値「2FFCH」を内部バス1114に出力して、演算
部1109に入力後、2を減じ演算結果の「2FFA
H」を内部バス1114に出力し、SP1112に格納
するよう制御する。
【0037】 SP1112の値を内部バス111
4、内部アドレスバス1106、アドレスバス端子11
04を通して外部アドレスバス1115に出力する。ま
た同時に「0425H」番地の次の番地の命令コードを
フェッチするため「0426H」に更新されていたPC
1113の値をデクリメントして、トラップを起こす命
令の先頭アドレス「0425H」を内部バス1114、
内部データバス1107、データバス端子1105を通
して外部データバス1116に出力し、外部メモリ11
17のアドレス「2FFAH」にPC1113の値を書
き込むよう制御する。
【0038】(〜の処理で外部メモリ1117のス
タックエリアは、図5の状態になる。) PSW1110中のMDフラグを「1」にしてネィ
ティブモードの遷移する。
【0039】 ベクタ16(10H)を参照し分岐す
る。すなわち外部メモリ1117のアドレス「0020
H」番地の値「3200H」を外部データバス111
6、データバス端子1105、内部データバス110
7、内部バス1114を通してPC1113に書き込
み、PC1113の指す外部メモリ1117のアドレス
「3200H」番地の命令コードをフェッチするよう制
御する。
【0040】以上に示した処理により命令コード解析ル
ーチンの先頭アドレスに分岐する。
【0041】次に、図15に処理フローを示した命令コ
ード解析ルーチンおよび命令別処理ルーチン、すなわち
トラップ動作の次にマイコン1100が実行するプログ
ラム処理について説明する。
【0042】そのうちの(a)〜(d)の命令コード解
析ルーチンにおいては (1)前記の制御によって更新されたSP112が指
す外部メモリ1117のアドレス「2FFAH」の内容
(トラップを起こした命令の先頭アドレス「0425
H」)をXRレジスタに転送する。(メモリリード1回
目) そして、XRレジスタの値が指す外部メモリ1117の
アドレス「0425H」のデータ「57H」をXRレジ
スタに転送する。(メモリリード2回目) (2)XRレジスタの値を8ビット左シフトし、これを
命令別処理ルーチンの先頭アドレスとして分岐する。
【0043】処理が行われる。続いて図15(e)〜
(g)の命令別処理ルーチンでは、 (3)トラップを起こした命令に対応したユーザによる
適当なソフトウェア処理を行う。
【0044】(4)命令別処理ルーチンの最後の処理で
あるリターン命令の実行によりトラップを起こした命令
の次のアドレスの命令を実行するために、SP1112
が指す外部メモリ1117のアドレス値「2FFAH」
の内容すなわちトラップを起こした命令の先頭アドレス
値「0425H」をインクリメントする。
【0045】(5)リターン命令を実行する。
【0046】処理が行われる。
【0047】
【発明が解決しようとする課題】前述した従来のマイコ
ンでは、命令別処理ルーチンの中で、トラップを起こす
個々の命令に対してユーザが行う適当なソフトウェア処
理に分岐するために、命令コード解析ルーチンでトラッ
プを起こした命令コード部を認識するソフトウェア処理
には、2回のメモリアクセントが必要であった。また、
従来例に示したようなマイコンでは、トラップを起こす
バイト長の異なる命令が混在していることが多い。よっ
て、トラップとなる命令コード中のトラップを起こした
コード部の認識のためには、図15(a),(b)に示し
た処理の他に、作業用のXRレジスタに格納された命令
コードが、トラップとなる命令コード部と一致するかを
判断するソフトウェア処理が必要となる。このときトラ
ップとなる命令コード群をメモリに配置している場合
は、1バイト目でトラップとなる命令では上記2回のメ
モリアクセスに加えて、XRレジスタに読み込んだ1バ
イト目の命令コードとトラップとなる命令コードとを比
較するために命令コードのテーブル(図13には示して
ない。)を参照する回数と同じ回数(最初の比較で一致
する場合もあるので最低1回)、合計すると最低3回の
メモリアクセスが必要となる。
【0048】また1バイト目で一致する命令コードが存
在しなかった場合は2バイト目の命令コードを外部メモ
リから読み込むためにメモリアクセスが1回必要となる
うえ、読み込んだ命令コードが2バイト目でトラップと
なる命令コードかどうか比較するため、トラップを起こ
す命令コードのテーブルを参照するときにメモリアクセ
スが最低1回必要となり、前記の“最低3回”を加える
と、合計して最低5回のメモリアクセスが必要となる。
【0049】このようにトラップとなる命令のバイト長
が異なる命令コードが増えるほど、命令コード解析ルー
チンでのメモリアクセスが増加するという問題点を有し
ていた。
【0050】
【課題を解決するための手段】本発明のマイコンは、エ
ミュレーション機能を有し、エミュレーションの実行中
に所定の命令コードを入力すると、所定の命令コードま
たはその一部を所定のレジスタに格納し、割り込みを発
生する制御手段を有している。
【0051】さらに、本発明のマイコンは、エミュレー
ション機能を有し、エミュレーションの実行中に所定の
命令コードを入力すると、所定の命令コードの第1バイ
トから割り込み動作命令と認識できる命令コード部まで
のコード長を示す値を所定のレジスタに格納し、割り込
みを発生する制御手段を有している。
【0052】
【実施例】従来例の項でも述べたように、エミュレーシ
ョンを行うマイコンにおいては、ハードウェアの増大を
防ぐ意味でネィティブモードのレジスタをそのままエミ
ュレーションモードで用いることが多い。この場合、通
常は上位のマイコンの方が下位のマイコンよりもレジス
タ数が多いので、エミュレーションモードにおいては未
使用のレジスタができることが多い。
【0053】本実施例では、トラップを起こした命令コ
ードを未使用の汎用レジスタに格納するマイコンについ
て説明する。
【0054】まず本実施例のマイコンの構成、マイコン
とメモリの接続および外部メモリ内のプログラム配置に
ついて図1から図3までを用いて説明する。
【0055】図1は本発明のマイコンの構成およびマイ
コンと外部メモリとの接続を示すブロック図である。
【0056】マイコン100は種々の演算処理を行う演
算処理部101、命令キュー103、命令キュー103
から命令コードが出力されるキューバス108、キュー
バス108上の命令コードを入力解読し種々の制御信号
を演算処理部101、アドレスバス端子104、データ
バス端子105および外部メモリ117に対して出力し
たり演算処理部101からの情報を入力したりする制御
部102、外部アドレスバス116と内部アドレスバス
106とを接続するアドレスバス端子104、外部デー
タバス117と内部データバス107とを接続するデー
タバス端子105から構成されている。
【0057】演算処理部101は演算部109、PSW
110、汎用レジスタ群111、スタックポインタSP
112、プログラムカウンタPC113がそれぞれ内部
バス114を介して接続されている。またマイコン10
0と外部メモリ117とは外部アドレスバス115、外
部データバス116を介して接続されている。
【0058】なおPSW110の最上位ビットは、マイ
コン100の動作しているモードを表すステータスフラ
グ(以下MDフラグと記す)であり、マイコン100は
MDフラグが「0」のときエミュレーションモード、
「1」のときネィティブモードで動作するものとする。
(図2参照) また本マイコンの場合汎用レジスタ111中のXRレジ
スタが未使用レジスタであるとする。
【0059】なお、マイコン100のエミュレーション
モードの命令のうち、1バイト目で動作が決まりかつ1
バイトで構成される命令のうちトラップとなる命令のコ
ードの1つを「57H」、1バイト定義命令のコードの
1つを「20H」とする。なお「20H」は汎用レジス
タ群111中のXレジスタの値をインクリメントする命
令のコードとする。
【0060】次に、外部メモリ117内のプログラム配
置の一例を示す。
【0061】外部メモリ117のプログラム配置例を図
3に示す。
【0062】外部メモリ117内は ベクタ領域
プログラムエリア スタックエリア 命令コード解
析ルーチン 命令別処理ルーチンで構成されている。
【0063】以下に各領域について説明する。
【0064】 ベクタ領域はエミュレーション中のト
ラップなどによる割り込み処理ルーチン開始アドレスが
格納されているエリアで、1ベクタは2バイト(1ワー
ド)で構成され、エミュレーション中のトラップなどの
割り込みが発生すると、制御部1202の制御により、
割り込み要因に対応したベクタの内容がPC113にロ
ードされる。エミュレーション中のトラップのベクタ番
号は16(ベクタアドレスは「0020H」番地)に設
定されているものとする。
【0065】なお、ベクタ領域は「0000H」〜「0
0FFH」番地に配置してある。
【0066】 プログラムエリアはネィティブモード
のプログラムエリアとエミュレーションモードのプログ
ラムエリアとに分かれている。ネィティブモードのプロ
グラムエリアはエミュレーションモードのプログラムを
実行するために必要な、レジスタ等の初期化を行うため
のプログラムを、エミュレーションモードのプログラム
エリアはマイコン100がエミュレーションを行う下位
のマイコンのプログラムをそれぞれ格納してある領域で
ある。なお、プログラムエリアは「0200H」〜「0
3FFH」番地に、エミュレーションモードのプログラ
ムエリアを「0400H」〜「05FFH」番地にそれ
ぞれ配置してある。
【0067】 スタックエリアは、エミュレーション
中にトラップが発生した場合にプログラム実行中のPC
WおよびPCの情報をセーブすることなどに使用され
る。スタックエリアは「2000H」〜「2FFEH」
番地に配置してある。
【0068】 マイコン100がトラップを起こした
後に実行される命令コード解析ルーチンでは、トラップ
を起こした命令コード部を認識しその命令コード値を利
用して命令別処理ルーチンに分岐する処理が行われる。
命令コード解析ルーチンは「3200H」〜「32FF
H」番地に配置してある。
【0069】 命令別処理ルーチンでは、トラップを
起こした命令に対してユーザが行う適当なソフトウェア
処理、トラップから復帰するために必要なPC補正およ
びトラップからの復帰命令(以下リターン命令と記す)
による処理が行われる。リターン命令はこのルーチンの
最後の処理になるように配置してある。命令別処理ルー
チンは「5700H」番地〜「57FFH」番地に配置
してある。
【0070】またエミュレーションモードのプログラム
エリア内には1バイト定義命令のコード「20H」が
「0400H」番地に、1バイト目で動作が決まりかつ
1バイトで構成される命令でトラップとなる命令のコー
ド「57H」が「0425H」番地にそれぞれ配置して
ある。
【0071】次にマイコン100の動作について図4か
ら図7を用いて説明する。
【0072】まずリセットにより、マイコン100のP
C113は「0200H」に、PSW110中のMDフ
ラグは「1」に初期化され、マイコン100は「020
0H」番地以降のネィティブモードのプログラムを実行
していくものとする。
【0073】ネィティブモードのプログラムにおいては
エミュレーションモードのプログラムで使用されるスタ
ックポインタSP112の値を「2FFEH」に初期化
する処理等が行われた後、MDフラグを「0」にし、P
C113に「0400H」を格納し、エミュレーション
モードのプログラムの先頭アドレスの命令コードをフェ
ッチするための処理が行われる。
【0074】1バイト目で命令の動作が決まりかつ1バ
イトで構成される命令のうちトラップとなる命令のコー
ドが入力された場合におけるマイコン100の動作につ
いてそれぞれ説明する。
【0075】〔1〕最初に1バイト定義命令コード「2
0H」を処理する場合の本マイコンの動作について説明
する。
【0076】まず制御部102は、外部メモリ117か
らPC113の指すアドレス「0400H」番地の命令
コード「20H」を命令キュー103に取り込み、PC
113の値をインクリメントする制御信号を発生する。
【0077】次に命令キュー103から「20H」がキ
ューバス108に出力されて、制御部102に入力され
た場合、制御部102は演算処理部101に対して、X
レジスタを選択してその値を内部バス114に出力し演
算処理部101に入力後、演算部109において1加え
る。そして演算結果を内部バス114に出力して再度X
レジスタに、命令実行状況の情報をPSW110にそれ
ぞれ格納する。
【0078】〔2〕次に1バイト目でトラップとなる命
令のコード「57H」に対する本マイコンの動作につい
て説明する。
【0079】まず制御部102は、外部メモリ117か
らPC113の指すアドレス「0425H」番地の命令
コード「57H」を命令キュー103に取り込み、PC
113の値をインクリメントする制御信号を発生する。
【0080】次に命令キュー103から「57H」がキ
ューバス108に出力され、制御部102に入力される
と、制御部102はまず図4に示した処理を行う制御信
号を演算処理部101に対して出力する。
【0081】 制御部102はSP112の値「2F
FEH」を内部バス114に出力して、演算部109に
入力後、2を減じ演算結果の「2FFCH」を内部バス
114に出力し、SP112に格納するよう制御する。
【0082】 制御部102は、SP112の値を内
部バス114、内部アドレスバス106、アドレスバス
端子104を通して外部アドレスバス115に、またP
SW110の値を内部バス114、内部データバス10
7、データバス端子105を通して外部データバス11
6にそれぞれ出力し、内部データバス107、データバ
ス端子105を通して外部データバス116にそれぞれ
出力し、外部メモリ117のアドレス「2FFCH」に
PSW110の値を書き込むよう制御する。
【0083】 の処理で更新されたSP112の値
「2FFCH」を内部バス114に出力して、演算部1
09に入力後、2を減じ演算結果の「2FFAH」を内
部バス114に出力し、SP112に格納するよう制御
する。
【0084】 SP112の値を内部バス114、内
部アドレスバス106、アドレスバス端子104を通し
て外部アドレスバス115に出力する。次に、「042
5H」番地の次の番地の命令コードをフェッチするため
「0426H」に更新されていたPC113の値をデク
リメントし、トラップ命令の先頭アドレス「0425
H」を内部バス115、内部データバス107、データ
バス端子105を通して外部データバス116にそれぞ
れ出力し、外部メモリ118のアドレス「2FFAH」
にPC113の値を書き込むよう制御する。
【0085】 キューバス108上のコード「57
H」を内部バス114に出力してXRレジスタの下位側
に書き込む。
【0086】(〜までの処理で外部メモリ117の
スタックエリアは図5に示した状態になる。) MDフラグを「1」にしてネィティブモードに遷移
する。
【0087】 ベクタ16(10H)を参照し分岐す
る。すなわち外部メモリ117のアドレス「0020
H」番地の値「3200H」を外部データバス116、
データバス端子105、内部データバス107、内部バ
ス114を通してPC113に格納し、PC113の指
す外部メモリ117のアドレス「3200H」番地の命
令コードをフェッチするよう制御する。
【0088】以上に示した処理により命令コード解析ル
ーチンの先頭アドレスに分岐する。
【0089】次に、図6(a)〜(e)に示した命令コ
ード解析ルーチンおよび命令別処理ルーチン、すなわち
トラップ動作の次にマイコン100が実行するプログラ
ム処理について説明する。
【0090】まず、命令コード解析ルーチンにおいては
図6(a),(b)のソフトウェア処理すなわち (1)XRレジスタの値を8ビット左シフトし、これを
命令別処理ルーチンの先頭アドレスとして分離する処理
を行う。
【0091】次に図6(c)〜(e)に示した命令別処
理ルーチンの処理すなわち、 (2)トラップを起こした命令に対応したユーザによる
適当なソフトウェア処理を行う。
【0092】(3)命令別処理ルーチンの最後の処理で
あるリターン命令の実行によりトラップを起こした命令
の次のアドレスの命令を実行するために、SP112が
指す外部メモリ117のアドレス値「2FFAH」の内
容すなわちトラップを起こした命令の先頭アドレス値
「0425H」をインクリメントする。
【0093】(4)リターン命令を実行する。
【0094】2バイト目で命令の動作が決まりかつ2バ
イトで構成される命令において2バイト目でトラップと
なる命令については、1バイト目では命令の動作は決ま
らないので、マイコン100は2バイト目を読み込み、
2バイト目の命令コードが制御部102に入力されると
トラップとなり、以降は1バイト目でトラップとなる命
令と同様の処理が行われる。
【0095】つまりXRレジスタには、命令コードの2
バイト目が格納される。
【0096】本実施例では未使用の汎用レジスタに命令
コードを格納したが、エミュレーションの時に未使用レ
ジスタができない場合は専用のレジスタを増設する手段
も考えられる。
【0097】なお、本実施例のマイコンはトラップを起
こすと判別できる命令コード部がすべて異なる値の場合
に有効であるが、これが一致した場合においても、トラ
ップを起こすバイト位置の種類により割り込みベクタを
別に設定して、異なる命令コード解析ルーチンを設定す
ることなどにより容易に実施できる。
【0098】第二の実施例として、トラップを起こした
命令の第1バイトからトラップを起こすと認識できる命
令コード部までのコード長を表す値を未使用の汎用レジ
スタに格納するマイコンについて説明する。
【0099】図7は本発明の第二の実施例のマイコンの
ブロック図およびマイコンと外部メモリとの接続図であ
る。マイコン700が実施例1のマイコンと異なる点
は、制御部701が定数発生回路702(実施例1のマ
イコンでは明示していない)にトラップを起こした命令
の第1バイトからトラップを起こすと認識できる命令コ
ード部までのコード長を表す値を発生させ、その値を内
部バス114に出力する制御を行うことである。
【0100】マイコン700において、1バイト定義命
令のコードの1つが「20H」、1バイト目でトラップ
となる命令コードの1つが「57H」であることは実施
例1と同じであるが、それ以外にnバイト目(nは2以
上の整数)で命令の動作が決まりかつnバイトで構成さ
れる命令でトラップとなる命令の1つとして3バイトで
構成されている命令のコード「9FH」「40H」「7
5H」があるものとする。
【0101】図8は本実施例における外部メモリ117
内のプログラム配置図であり、「7500H」番地〜
「75FFH」番地の命令別処理ルーチン2を命令コー
ド「9FH」「40H」「75H」の命令別処理ルーチ
ンに設定していることと、命令のコード「9FH」「4
0H」「75H」を「0580H」番地〜「0582
H」番地に配置していること以外は実施例1における外
部メモリ117のプログラム配置図と同じである。
【0102】以降に本実施例のマイコンの動作について
説明する。
【0103】ネィティブモードのプログラムおよび1バ
イト定義命令のコード「20H」をマイコン700が処
理する場合の制御部701の制御は実施例1と同じであ
る。
【0104】次に、1バイト目でトラップとなる命令コ
ード「57H」をマイコン700が外部メモリ117か
ら命令キュー103に取り込み、命令コード「57H」
が命令キュー103からキューバス108に出力されて
制御部701に入力されると、まず図9(a)の処理す
なわち図4(a),(b)と同様の処理を行う制御信号を
演算処理部101に対して出力する。
【0105】次に、制御部701は図9(b)に示す処
理を行う制御信号を出力する。すなわち、 定数発生回路702にトラップを起こす命令の第1
バイトからトラップを起こすと認識できる命令コード部
までのコード長を表す値「0000H」を内部バス11
4に出力するよう制御する。
【0106】 汎用レジスタ群111中のXRレジス
タに、内部バス114上の値「0000H」を格納する
よう制御する。
【0107】次に図9(c)に示した処理すなわち図4
(d),(c)と同様の処理を実施して、命令コード解析
ルーチンの先頭アドレスに分岐する。
【0108】続いて、図10に示した命令コード解析ル
ーチンおよび命令別処理ルーチン、すなわちトラップ動
作の次にマイコン700が実行するプログラム処理につ
いて説明する。
【0109】命令コード解析ルーチンにおいては (1)図4(b)に示した処理によって更新されたSP
112の値「2FFAH」で示される外部メモリ117
のアドレスの内容「0425H」とXRレジスタの値
「0000H」を加算して結果をXRレジスタに格納す
る。(メモリリード1回目) (2)XRレジスタの値「0425H」で指し示される
外部メモリ117のアドレスの内容「57H」をXRレ
ジスタに格納する。(メモリリード2回目) (3)XRの値を8ビット左シフトして、これを命令別
処理ルーチン1の先頭アドレスとして分岐する。
【0110】図9(c)は命令別処理ルーチン1での処
理であり、実施例1のマイコンにおける命令別処理ルー
チンと同じソフトウェア処理を行う。
【0111】3バイト目でトラップとなる命令コード
「9FH」「40H」「75H」をマイコン800が処
理する場合、以下に示す点が異なるだけであとは命令コ
ード「57H」の場合と同様な処理を行う。
【0112】 XRレジスタには「0002H」が格
納される。
【0113】 命令別処理ルーチン2において、「0
002H」をSPの指すメモリの内容に加算する。
【0114】なお、本実施例のマイコンもトラップを起
こすと認識できる命令コード部の値が一致しないマイコ
ンの場合に有効であるが、これが一致する場合において
も、トラップを起こす命令コードの第1バイトからトラ
ップを起こすと認識できる命令コード部までのバイト長
の種類によって割り込みベクタを別に設定して、異なる
命令コード解析ルーチンを設定することなどにより容易
に実施できる。
【0115】
【発明の効果】以上の説明のようにトラップを起こした
命令コードを格納するマイクロコンピュータの場合、従
来のマイクロコンピュータのように、トラップを起こし
た命令コード部を認識するために1バイト目でトラップ
となる命令の場合は最低3回、2バイト目でトラップと
なる命令の場合は最低5回のメモリアクセスを必要とし
ていた場合と比較すると、所定のレジスタに命令コード
を格納するため、命令コード部を認識するためのメモリ
アクセスを全く必要としない。またトラップを起こした
命令の先頭からトラップとなった命令コード部までのコ
ード長の値を格納するマイクロコンピュータの場合、ト
ラップを起こす命令コードのバイト位置に関係なく命令
コード部を認識するためのメモリアクセスは2回のみで
ある。そのため命令コード解析ルーチンでの処理を高速
にできるという効果を有する。
【0116】なお、トラップを起こす命令コード部の値
を所定のレジスタに格納する方法とトラップを起こす命
令の第1バイトからトラップを起こすと認識できる命令
コード部までのコード長を表す値を所定のレジスタに格
納する方法を混在させることも可能である。例えば1バ
イト目でトラップとなる命令、2バイト目でトラップと
なる命令の場合はトラップを起こす命令コード部の値
を、未定義命令の場合はトラップを起こす命令の第1バ
イトからトラップを起こすと認識できる命令コード部ま
でのコード長を表す値を所定のレジスタに格納するとい
う制御を行う。この場合、トラップを起こす命令の第1
バイトからトラップを起こすと認識できる命令コード部
までのコード長を表す値が1バイト目および2バイト目
でトラップとなる命令コードと一致してしまって、命令
コード解析ルーチンで両者のどちらであるかが認識不可
となるときは、トラップのベクタを、1バイト目でトラ
ップとなる命令および2バイト目でトラップとなる命令
の場合と未定義命令の場合で別に設定すること等の簡単
な対応を施せばよい。このように本発明による応用効果
も大きい。
【図面の簡単な説明】
【図1】本発明の第一の実施例におけるマイコンの構成
およびマイコンと外部メモリとの接続を示すブロック図
である。
【図2】同実施例におけるPSWのビット構成図であ
る。
【図3】同実施例における外部メモリのプログラム配置
図である。
【図4】同実施例のマイコンにおいて命令コード「57
H」が入力された場合の制御部の制御フローである。
【図5】図4に示した処理によるスタックエリアの状態
図である。
【図6】同実施例のマイコンの命令コード解析ルーチン
と命令別処理ルーチンの処理フローである。
【図7】本発明の第二の実施例のマイコンの構成および
マイコンと外部メモリとの接続を示したブロック図であ
る。
【図8】同実施例における外部メモリのプログラム配置
図である。
【図9】同実施例のマイコンが命令コード「57H」を
処理する場合の制御部の制御フローである。
【図10】同実施例のマイコンの命令コード解析ルーチ
ンと命令別処理ルーチン1の処理フローである。
【図11】従来のマイコンの構成およびマイコンと外部
メモリの接続を示したブロック図である。
【図12】PSWのビット構成図である。
【図13】外部メモリのプログラム配置図である。
【図14】従来のマイコンが命令コード「57H」を処
理する場合の制御部の制御フローである。
【図15】従来のマイコンの命令コード解析ルーチンと
命令別処理ルーチンの処理フローである。
【符号の説明】
100 マイコン 101 演算処理部 102 制御部 103 命令キュー 104 アドレスバス端子 105 データバス端子 106 内部アドレスバス 107 内部データバス 108 キューバス 109 演算部 110 PSW 111 汎用レジスタ群 112 SP 113 PC 114 内部バス 115 外部アドレスバス 116 外部データバス 117 外部メモリ 700 マイコン 701 制御部 702 定数発生回路 1100 マイコン 1101 演算処理部 1102 制御部 1103 命令キュー 1104 アドレスバス端子 1105 データバス端子 1106 内部アドレスバス 1107 内部データバス 1108 キューバス 1109 演算部 1110 PSW 1111 汎用レジスタ群 1112 SP 1113 PC 1114 内部バス 1115 外部アドレスバス 1116 外部データバス 1117 外部メモリ

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 エミュレーション機能を有するマイクロ
    コンピュータにおいて、前記エミュレーションの実行中
    に所定の命令コードを入力すると、前記所定の命令コー
    ドの第1バイトから割り込み動作命令と認識できる命令
    コードまでのコード長を示す値を汎用レジスタ群の中の
    前記エミュレーションモードでは使用されない未使用レ
    ジスタに格納し、割り込みを発生する制御手段を含むこ
    とを特徴とするマイクロコンピュータ。
JP7055526A 1995-03-15 1995-03-15 マイクロコンピュータ Expired - Lifetime JP2715967B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7055526A JP2715967B2 (ja) 1995-03-15 1995-03-15 マイクロコンピュータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7055526A JP2715967B2 (ja) 1995-03-15 1995-03-15 マイクロコンピュータ

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP63128841A Division JP2637770B2 (ja) 1988-05-25 1988-05-25 マイクロコンピュータ

Publications (2)

Publication Number Publication Date
JPH0836496A JPH0836496A (ja) 1996-02-06
JP2715967B2 true JP2715967B2 (ja) 1998-02-18

Family

ID=13001176

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7055526A Expired - Lifetime JP2715967B2 (ja) 1995-03-15 1995-03-15 マイクロコンピュータ

Country Status (1)

Country Link
JP (1) JP2715967B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6397242B1 (en) 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US8631066B2 (en) 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US10210323B2 (en) * 2016-05-06 2019-02-19 The Boeing Company Information assurance system for secure program execution

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5971550A (ja) * 1982-09-30 1984-04-23 Fujitsu Ltd 命令処理方式

Also Published As

Publication number Publication date
JPH0836496A (ja) 1996-02-06

Similar Documents

Publication Publication Date Title
US6564179B1 (en) DSP emulating a microcontroller
JP2965884B2 (ja) コンピュータシステムにおいてクロスドメイン通話を検出及び実行するための方法及び装置
US7725736B2 (en) Message digest instruction
EP0464494A2 (en) A high performance pipelined emulator
US20050160415A1 (en) Method and system for improving performance of Java virtual machine
JP2003085000A (ja) トレース情報生成装置およびその方法
US20100011191A1 (en) Data processing device with instruction translator and memory interface device to translate non-native instructions into native instructions for processor
JP4004915B2 (ja) データ処理装置
EP0745932B1 (en) Microprocessor supporting variable length instruction execution
JP2715967B2 (ja) マイクロコンピュータ
JP2551167B2 (ja) マイクロコンピュータ
US6223275B1 (en) Microprocessor with reduced instruction set limiting the address space to upper 2 Mbytes and executing a long type register branch instruction in three intermediate instructions
JPH0683615A (ja) 命令セットエミュレーションを行う計算機
JP2637770B2 (ja) マイクロコンピュータ
JP3786575B2 (ja) データ処理装置
US5596761A (en) Central processing unit with internal register initializing means
JPH0667896A (ja) シングルチップマイクロコンピュータ
US20070271084A1 (en) Emulation method and computer system
US5463747A (en) Microprogram data processor processing operand address calculation and instruction execution with common hardware
JP4545777B2 (ja) データ処理装置
US7314491B2 (en) Encapsulation of large native operating system functions as enhancements of the instruction set in an emulated central processor system
JPH1115660A (ja) マイクロプロセッサ
JP3517579B2 (ja) マイクロプロセッサ
JPH0895946A (ja) マイクロコンピュータ
JP4498338B2 (ja) データ処理装置

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19971007