JPH1083311A - シミュレータ - Google Patents

シミュレータ

Info

Publication number
JPH1083311A
JPH1083311A JP23691796A JP23691796A JPH1083311A JP H1083311 A JPH1083311 A JP H1083311A JP 23691796 A JP23691796 A JP 23691796A JP 23691796 A JP23691796 A JP 23691796A JP H1083311 A JPH1083311 A JP H1083311A
Authority
JP
Japan
Prior art keywords
instruction
level language
processing unit
language source
simulator
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
JP23691796A
Other languages
English (en)
Inventor
Takashi Asai
敬 浅井
Koji Kawamoto
浩司 川本
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP23691796A priority Critical patent/JPH1083311A/ja
Publication of JPH1083311A publication Critical patent/JPH1083311A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 命令コードの読み出しおよび解釈の処理は、
シミュレータ実行中に逐次的に行う必要があるため、高
速なシミュレーションを行おうとした場合、その分のオ
ーバヘッドが生じる課題があった。 【解決手段】 ターゲットCPUの機械語プログラムが
格納されている命令コード格納部2から、命令フェッチ
処理部3によって読み出された命令コードを、命令デコ
ード処理部4で解釈することによってその命令に対応し
た処理内容を決定し、その決定された処理内容に従っ
て、当該命令の実行をシミュレーションするために呼び
出しが必要となる関数に対応した高級言語ソース7を、
高級言語ソース生成部6において生成、出力するように
したものである。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、ターゲットとな
る中央演算処理装置(以下、CPUという)の機械語プ
ログラムをシミュレートするシミュレータに関するもの
で、特に、コンパイラ、アセンブラのクロス環境での高
速なシミュレーションを実現するコンパイラ型のシミュ
レータに関するものである。
【0002】
【従来の技術】ターゲットとなるCPUの機械語プログ
ラムを、それとは異なるCPUで実行させる場合には、
ターゲットとなるCPUの機械語プログラムの命令コー
ドを解釈し、その動作を模擬するシミュレータが必要と
なる。図10はそのような従来のシミュレータの構成を
示すブロック図である。図において、1はユーザインタ
フェース処理部、2は命令コード格納部、3は命令フェ
ッチ処理部、4は命令デコード処理部、5は命令実行処
理部である。
【0003】次に動作について説明する。ユーザインタ
フェース処理部1によってプログラムのシミュレートを
指示するコマンドが入力されると、ターゲットとなるC
PUの機械語プログラムを格納している命令コード格納
部2より、命令フェッチ処理部3によって命令コードが
逐次的に読み出され、さらに命令デコード処理部4によ
ってそれが逐次的に解釈されて、その命令に対応した処
理内容が決定される。命令実行処理部5はこの命令デコ
ード処理部4で決定された処理内容に従って命令の実行
をシミュレーションする。その後、命令フェッチ処理部
3によって次の命令コードの読み出しが行われ、上記処
理が繰り返されるか、ユーザインタフェース処理部1か
らの次のシミュレートのためのコマンド待ちの状態とな
る。
【0004】なお、このような従来のシミュレータに関
連のある技術についての記載がある文献としては、例え
ば特開平6−95921号公報、特開平6−19743
号公報などがある。
【0005】
【発明が解決しようとする課題】従来のシミュレータは
以上のように構成されているので、命令フェッチ処理部
3による命令コードの読み出し、および命令デコード処
理部4によるその解釈の処理は、シミュレーション実行
中に逐次的に行う必要があったため、高速なシミュレー
ションを行おうとした場合には、その分のオーバヘッド
が生じるといった課題があった。
【0006】この発明は上記のような課題を解決するた
めになされたもので、命令デコード処理部で逐次的に処
理する回数を減らして、コンパイラ、アセンブラのクロ
ス環境で高速のシミュレーションを実現することができ
るコンパイラ型のシミュレータを得ることを目的とす
る。
【0007】
【課題を解決するための手段】請求項1記載の発明に係
るシミュレータは、命令実行制御部にて命令の実行をシ
ミュレートする関数を呼び出す代わりに、高級言語ソー
ス生成部を設けて、命令デコード処理部で決定された処
理内容に従って、その命令の実行をシミュレートするた
めに呼び出しが必要となる関数に対応した高級言語ソー
スを出力するようにしたものである。
【0008】請求項2記載の発明に係るシミュレータ
は、当該シミュレータのターゲットとなるCPUの機械
語プログラムには依存しない、ユーザインタフェース処
理部の処理などに対応した高級言語ソースも出力する機
能を高級言語ソース生成部に持たせたものである。
【0009】請求項3記載の発明に係るシミュレータ
は、ターゲットとなるCPUの機械語プログラムに含ま
れているシーケンス制御命令に対応した高級言語ソース
を出力する場合に、当該シーケンス制御命令の飛び先ア
ドレスに対応する前記高級言語ソース上のラベルを用い
た、高級言語におけるシーケンス制御文も出力する機能
を高級言語ソース生成部に持たせたものである。
【0010】
【発明の実施の形態】以下、この発明の実施の一形態を
説明する。 実施の形態1.図1はこの発明の実施の形態1によるシ
ミュレータの構成を示すブロック図である。図におい
て、1は当該シミュレータのコマンド処理等を行うユー
ザインタフェース処理部であり、2はターゲットとなる
CPUの機械語プログラムが格納されている命令コード
格納部である。3はこの命令コード格納部2から命令コ
ードを読み出す命令フェッチ処理部であり、4は命令フ
ェッチ処理部3によって読み出された命令コードを解釈
し、その命令に対応した処理内容を決定する命令デコー
ド処理部である。なお、これらユーザインタフェース処
理部1、命令コード格納部2、命令フェッチ処理部3、
および命令デコード処理部4は図10に同一符号を付し
て示した従来のそれらに相当するものである。また、6
は図10に示した命令実行処理部5に代替して用意さ
れ、命令デコード処理部4で決定された処理内容に従っ
て、命令のシミュレーションを行うために呼び出しが必
要となる関数の高級言語ソースを生成して出力する高級
言語ソース生成部であり、7はこの高級言語ソース生成
部6より出力される、命令コードの動作をシミュレート
するための高級言語ソースである。
【0011】図2は命令コード格納部2に格納されたタ
ーゲットとなるCPUの機械語プログラムの一例を示し
た説明図であり、機械語プログラムとディスアセンブル
リストとの対応について示している。図において、8は
ターゲットとなるCPUの機械語プログラムであり、そ
の左側に示されたアドレスに、右側に示された命令コー
ドが格納される。また、9はこの機械語プログラム8に
対応したディスアセンブルリストであり、各機械語プロ
グラム8の命令コードの意味が、命令とオペランドの形
式でそれぞれ示されている。この図2に示されている例
によれば、アドレス0000に格納された命令コード0
0010100はADD命令で、レジスタR0の値とレ
ジスタR1の値が加算される。また、アドレス0001
に格納された命令コード00022303はSUBl命
令で、レジスタR2の値から即値である“3”が減算さ
れる。
【0012】図3は高級言語ソース生成部6より出力さ
れる高級言語ソース7の一例を示す説明図であり、図に
おいて、10は上記図2に示される機械語プログラム8
に対応した高級言語ソースである。この高級言語ソース
10内において、func_ADD()は命令ADDを
シミュレートする関数であり、reg_R0はレジスタ
R0の値が格納されている変数、reg_R1はレジス
タR1の値が格納されている変数である。なお、これら
の変数reg_R0およびreg_R1は関数func
_ADD()の引数として与えられている。また、fu
nc_SUBl()は命令SUBlをシミュレートする
関数であり、reg_R2はレジスタR2の値が格納さ
れている変数である。なお、この変数reg_R2と即
値である“3”は関数func_SUBl()の引数と
して与えられている。
【0013】次に動作について説明する。ここで、命令
コード格納部2には、図2に示されたターゲットとなる
CPUの機械語プログラム8が格納されているものとす
る。ユーザインタフェース処理部1より高級言語の出力
を指示するコマンドが入力されると、命令フェッチ処理
部3によって命令コード格納部2からターゲットとなる
CPUの機械語プログラム8の命令コードが逐次的に読
み出される。すなわち、まず命令コード格納部2のアド
レス0000より、そこに格納されている命令コード0
0010100が命令フェッチ処理部3によって読み出
されて命令デコード処理部4に送られる。命令デコード
処理部4ではその命令コードを解釈して、命令の種類、
オペランドの種類や値などの処理内容を決定する。この
場合、読み出された命令コード00010100はその
ディスアセンブルリスト9のように、命令の種類はAD
D、オペランドはR0,R1であると解釈され、それが
高級言語ソース生成部6に入力される。
【0014】高級言語ソース生成部6ではこの命令デコ
ード処理部4で決定された処理の内容に従って、その命
令の実行をシミュレートするために呼び出しが必要とな
る関数に対応した高級言語ソース7を出力する。すなわ
ち、高級言語ソース生成部6からは図3に示した関数f
unc_ADD(reg_R0,reg_R1);が高
級言語ソース7として出力される。
【0015】次に同様にして、命令フェッチ処理部3で
命令コード格納部2のアドレス0001より命令コード
00022303が読み出され、命令デコード処理部4
においてその命令の種類がSUBl、オペランドがR
2,#3であると解釈され、さらに高級言語ソース生成
部6によって処理されて、関数func_SUBl(r
eg_R2,3);が高級言語ソース7として出力され
る。以下同様に、命令フェッチ処理部3、命令デコード
処理部4および高級言語ソース生成部6による処理が逐
次実行されて、命令の動作をシミュレーションするため
に呼び出しが必要となる関数の高級言語ソース7が出力
され、高級言語ソース7の出力が終了した時点で、ユー
ザインタフェース処理部1から次のシミュレーションの
ためのコマンドが入力されるまで待ちの状態となる。
【0016】このようにして得られた高級言語ソース7
に基づいて機械語プログラム8をシミュレートする場合
には、その高級言語ソース7よりシミュレータ実行オブ
ジェクトを生成し、そのシミュレータ実行オブジェクト
を実行することにより機械語プログラム8をシミュレー
ションする。図4はそのシミュレータ実行オブジェクト
を生成するシミュレータ実行オブジェクト生成手段を示
すブロック図であり、図において、11は高級言語ソー
ス7をシミュレーションが実行されるCPUの機械語プ
ログラム8に変換するためのコンパイラ、12はこのコ
ンパイラ11より出力されたシミュレータ実行オブジェ
クトである。高級言語ソース生成部6にて生成された高
級言語ソース7はこのコンパイラ11によってコンパイ
ルされ、シミュレーションが実行されるCPUの機械語
プログラム8によるシミュレータ実行オブジェクト12
に変換される。このシミュレータ実行オブジェクト12
を上記CPUで実行することにより、ターゲットとなる
CPUの機械語プログラム8のシミュレーションを行
う。
【0017】以上のように、この実施の形態1によれ
ば、実際にシミュレーションが行われるCPUで実行さ
れるシミュレータ実行オブジェクト12には、命令のフ
ェッチやデコードの処理が含まれていないため、プログ
ラムのシミュレート実行中に命令コードを読み出して逐
次的に解釈するオーバヘッドが削減され、高速なシミュ
レーションを行うことが可能になるばかりか、従来のシ
ミュレータに対してわずかな変更を加えるだけで実現す
ることができるなどの効果がある。
【0018】実施の形態2.上記実施の形態1では、タ
ーゲットとなるCPUの機械語プログラム8に対応した
高級言語ソースのみを、高級言語ソース生成部6から出
力するものについて説明したが、この高級言語ソースに
加えて、ユーザインタフェース処理部1の処理のような
ターゲットとなるCPUの機械語プログラム8に依存し
ない高級言語ソースも出力できるようにしてもよい。こ
の実施の形態2のシミュレータは図1に示した実施の形
態1の場合と同様に構成され、その高級言語ソース生成
部6からは、ターゲットとなるCPUの機械語プログラ
ム8に依存した高級言語ソースとともに、それには依存
しないユーザインタフェース処理部1の処理に対応した
高級言語ソースが出力される。
【0019】ここで、図5はそのような高級言語ソース
からシミュレータ実行オブジェクトを生成するシミュレ
ータ実行オブジェクト生成手段を示すブロック図であ
る。図において、13は高級言語ソース生成部6から出
力される、ユーザインタフェース処理部1の処理に対応
した高級言語ソースと、ターゲットとなるCPUの機械
語プログラム8に対応した高級言語ソースとによる高級
言語ソースであり、11はその高級言語ソース13を、
シミュレーションが実行されるCPUの機械語プログラ
ム8に変換するためのコンパイラ、12はこのコンパイ
ラ11より出力されるシミュレータ実行オブジェクトで
ある。
【0020】図1に示した高級言語ソース生成部6によ
って生成された高級言語ソース13は、このコンパイラ
11によって両者がともにコンパイルされ、シミュレー
ションが実行されるCPUの機械語プログラム8による
シミュレータ実行オブジェクト12に変換される。この
シミュレータ実行オブジェクト12を上記CPUで実行
することにより、命令のシミュレーションとともに、シ
ミュレータのユーザインタフェース処理の機能も実現す
ることができる。
【0021】以上のように、この実施の形態2によれ
ば、シミュレータ実行オブジェクトの実行時に、ターゲ
ットとなるCPUの機械語プログラム8には依存しな
い、シミュレータのユーザインタフェース処理などの機
能も実現することができるようになり、シミュレーショ
ンの制御やデバッグなどが容易になる効果がある。
【0022】実施の形態3.上記実施の形態2では、高
級言語ソース生成部6からターゲットとなるCPUの機
械語プログラム8に対応した高級言語ソースとともに、
ユーザインタフェース処理部1の処理のようなターゲッ
トとなるCPUの機械語プログラム8に依存しない高級
言語ソースも出力するものについて説明したが、高級言
語ソース生成部6からはターゲットとなるCPUの機械
語プログラム8に対応した高級言語ソースのみを出力
し、ユーザインタフェース処理部1の処理などに対応し
た、ターゲットとなるCPUの機械語プログラム8に依
存しない高級言語ソースをあらかじめ用意しておくよう
にしてもよい。この実施の形態3のシミュレータは図1
に示した実施の形態1の場合と同様に構成され、その高
級言語ソース生成部6からはターゲットとなるCPUの
機械語プログラム8に対応した高級言語ソースのみが出
力される。
【0023】ここで、図6はそのような高級言語ソース
生成部6からのターゲットとなるCPUの機械語プログ
ラム8に対応する高級言語ソースと、別途用意されたタ
ーゲットとなるCPUの機械語プログラム8には依存し
ないユーザインタフェース処理部1の処理に対応した高
級言語ソースとからシミュレータ実行オブジェクトを生
成するシミュレータ実行オブジェクト生成手段を示すブ
ロック図である。図において、14はあらかじめ用意さ
れたユーザインタフェース処理部1の処理に対応する、
ターゲットとなるCPUの機械語プログラム8には依存
しない高級言語ソースであり、15は高級言語ソース生
成部6から出力される、ターゲットとなるCPUの機械
語プログラム8に対応した高級言語ソースである。11
はその高級言語ソース14および15をともにコンパイ
ルを行って、シミュレーションが実行されるCPUの機
械語プログラム8に変換するコンパイラであり、12は
このコンパイラ11より出力されるシミュレータ実行オ
ブジェクトである。
【0024】このようなシミュレータ実行オブジェクト
生成手段では、あらかじめ用意されていたユーザインタ
フェース処理部1の処理に対応した高級言語ソース14
は、高級言語ソース生成部6にて生成されたターゲット
となるCPUの機械語プログラム8に対応する高級言語
ソース15とともにコンパイラ11に送られ、それら両
者がこのコンパイラ11によってともにコンパイルされ
て、シミュレーションが実行されるCPUの機械語プロ
グラム8によるシミュレータ実行オブジェクト12に変
換される。このシミュレータ実行オブジェクト12を上
記CPUで実行することにより、命令のシミュレーショ
ンとともに、シミュレータのユーザインタフェース処理
の機能も実現することができる。
【0025】以上のように、この実施の形態3によれ
ば、ユーザインタフェース処理部1の処理に対応したタ
ーゲットとなるCPUの機械語プログラム8には依存し
ない高級言語ソース14があらかじめ用意されているの
で、高級言語ソース生成部6における、ユーザインタフ
ェース処理部1の処理に対応した高級言語ソース14の
生成処理が不要となり、実施の形態2に比べて、高級言
語ソース生成部6の処理に要する時間を節減することが
できる効果がある。
【0026】実施の形態4.上記実施の形態3では、ユ
ーザインタフェース処理部1の処理などに対応した、タ
ーゲットとなるCPUの機械語プログラム8には依存し
ない高級言語ソース14を別途用意しておき、高級言語
ソース生成部6からはターゲットとなるCPUの機械語
プログラム8に対応した高級言語ソース15のみを出力
するものについて説明したが、ユーザインタフェース処
理部1の処理などに対応したオブジェクトをライブラリ
化してあらかじめ用意しておくようにしてもよい。この
実施の形態4のシミュレータは図1に示した実施の形態
1の場合と同様に構成され、その高級言語ソース生成部
6からはターゲットとなるCPUの機械語プログラム8
に対応した高級言語ソースのみが出力される。
【0027】ここで、図7はそのような高級言語ソース
生成部6からの、ターゲットとなるCPUの機械語プロ
グラム8に対応する高級言語ソースと、あらかじめライ
ブラリ化された、ターゲットとなるCPUの機械語プロ
グラム8に依存しないユーザインタフェース処理部1の
処理に対応したオブジェクトとから、シミュレータ実行
オブジェクトを生成するシミュレータ実行オブジェクト
生成手段を示すブロック図である。図において、15は
高級言語ソース生成部6から出力される、ターゲットと
なるCPUの機械語プログラム8に対応した高級言語ソ
ースであり、16はあらかじめライブラリ化されて用意
されている、ユーザインタフェース処理部1の処理に対
応したオブジェクトである。11はその高級言語ソース
15とユーザインタフェース処理部1の処理に対応した
オブジェクト16を取り込んで、シミュレーションが実
行されるCPUの機械語プログラム8に変換するコンパ
イラであり、12はこのコンパイラ11より出力される
シミュレータ実行オブジェクトである。
【0028】このように形成されたシミュレータ実行オ
ブジェクト生成手段では、高級言語ソース生成部6で生
成されたターゲットとなるCPUの機械語プログラム8
に対応する高級言語ソース15がコンパイラ11に送ら
れてコンパイルされる。その際、コンパイラ11はあら
かじめライブラリ化されて用意されているユーザインタ
フェース処理部1の処理に対応したオブジェクト16も
取り込み、それら両者よりシミュレーションが実行され
るCPUの機械語プログラム8によるシミュレータ実行
オブジェクト12を生成する。このシミュレータ実行オ
ブジェクト12を上記CPUで実行することにより、命
令のシミュレーションとともに、シミュレータのユーザ
インタフェース処理の機能も実現することができる。
【0029】以上のように、この実施の形態4によれ
ば、ユーザインタフェース処理部1の処理に対応したオ
ブジェクト16があらかじめライブラリ化されて用意さ
れているので、ターゲットとなるCPUの機械語プログ
ラム8には依存しないユーザインタフェース処理部1の
処理に対応した高級言語ソースを、コンパイラ11にて
コンパイルする必要がなくなり、実施の形態3に比べ
て、当該コンパイルに要する時間を削減することができ
る効果がある。
【0030】実施の形態5.上記実施の形態1では特に
ふれてはいなかったが、ターゲットとなるCPUの機械
語プログラムにシーケンス制御命令が含まれる場合に
は、そのシーケンス制御命令に対応する高級言語ソース
を出力する際に、シーケンス制御命令の飛び先アドレス
に対応する高級言語ソース上のラベルを用いた、高級言
語におけるシーケンス制御文を出力するようにすること
もできる。この実施の形態5のシミュレータは図1に示
した実施の形態1の場合と同様に構成され、その高級言
語ソース生成部6からはシーケンス制御命令に対応する
高級言語ソースの出力に際して、その飛び先アドレスに
対応する高級言語ソース上のラベルを用いた高級言語に
おけるシーケンス制御文も出力される。
【0031】図8は命令コード格納部2に格納されたタ
ーゲットとなるCPUの機械語プログラムの一例を示し
た説明図で、機械語プログラムとディスアセンブルリス
トとの対応について示している。図において、17はタ
ーゲットとなるCPUの機械語プログラムであり、その
左側に示されたアドレスに、右側に示された命令コード
が格納される。また、18はこの機械語プログラム17
に対応したディスアセンブルリストであり、機械語プロ
グラム17の各命令コードの意味が、命令とオペランド
の形式でそれぞれ示されている。この図8に示された例
によれば、アドレス0000,0003および0004
に格納された命令コード00010100はADD命
令、アドレス0002および0005に格納された命令
コード00022303はSUBl命令で、図2に示し
た実施の形態1におけるそれらと同一のものである。ま
た、アドレス0001に格納された命令コード0003
0005はシーケンス制御命令としてのJMP命令で、
この命令の実行によってアドレス0005へジャンプす
る。すなわち、この命令の実行後は、アドレス0005
以降の命令が順番に実行される。
【0032】図9は高級言語ソース生成部6より出力さ
れる高級言語ソース7の一例を示す説明図であり、図に
おいて、19は上記図8に示される機械語プログラム1
7に対応した高級言語ソースである。この高級言語ソー
ス19内において、func_JMP()は命令JMP
をシミュレートする関数で、そのカッコ内の“5”は飛
び先アドレス“0005”を示しており、この“5”は
関数func_JMP()の引数として与えられてい
る。なお、他の関数func_ADD()およびfun
c_SUBl()については図3に示した実施の形態1
におけるそれらと同様である。また、label_00
00:〜label_0005:は、対応する命令コー
ドが格納されているアドレスを示しているラベルで、例
えば、ラベルlabel_0000:はその次に配置さ
れている関数func_ADD()に対応する命令コー
ドが、命令コード格納部2のアドレス“0000”に格
納されていることを示している。また、goto la
bel_0005;はラベルlabel_0005:の
位置にプログラムの制御を移すことを意味する高級言語
によるシーケンス制御文であり、このシーケンス制御文
goto label_0005;を実行した後は、ラ
ベルlabel_0005:の次に配置されている関数
func_SUBl()が実行される。
【0033】次に動作について説明する。今、命令コー
ド格納部2には、図8に示されたターゲットとなるCP
Uの機械語プログラム17が格納されているものとす
る。実施の形態1の場合と同様に、ユーザインタフェー
ス処理部1より高級言語の出力を指示するコマンドが入
力されると、命令フェッチ処理部3によって命令コード
格納部2から逐次的に、ターゲットとなるCPUの機械
語プログラム17の命令コードが読み出され、命令デコ
ード処理部4でその命令コードが解釈されて、命令の種
類、オペランドの種類や値などの処理内容が決定され、
高級言語ソース生成部6にてそれらに対応した高級言語
ソース7が生成されて出力される。なお、その場合、各
関数には、対応する命令コードが格納されている命令コ
ード格納部2のアドレスを示すラベルがそれぞれ付加さ
れる。
【0034】ここで、命令コード格納部2のアドレス0
000に格納されている命令コード00010100に
対する高級言語ソース7が、高級言語ソース生成部6よ
り実施の形態1の場合と同様にして出力されると、次に
命令フェッチ処理部3によって、命令コード格納部2の
アドレス0001に格納されている命令コードが読み出
される。このアドレス0001に格納されている命令コ
ードは、図8に示すようにシーケンス制御を行う命令コ
ード00030005であり、それが命令デコード処理
部4に送られる。命令デコード処理部4ではその命令コ
ードを解釈して、命令の種類、オペランドの種類や値な
どの処理内容を決定する。この場合、読み出された命令
コード00030005はそのディスアセンブルリスト
18のように、命令の種類はJMP、オペランドは#0
005であると解釈され、それが高級言語ソース生成部
6に入力される。高級言語ソース生成部6ではこの命令
デコード処理部4で決定された処理の内容に従って、そ
の命令の実行をシミュレートするために呼び出しが必要
となる関数に対応した高級言語ソース7を出力する。す
なわち、高級言語ソース生成部6からは高級言語ソース
7として、図9に示した関数func_JMP(5);
が出力された後、アドレス0005に対応したラベルl
abel_0005を用いた高級言語ソース7上でのシ
ーケンス制御文である、goto label_000
5;が出力される。なお、アドレス0002以降のシー
ケンス制御命令以外の命令コードについては、実施の形
態1の場合と同様にして高級言語ソース7の生成が行わ
れる。
【0035】このようにして得られた高級言語ソース7
は、実施の形態1の場合と同様にコンパイラによってシ
ミュレーションが実行されるCPUの機械語プログラム
17にコンパイルされてシミュレータ実行オブジェクト
に変換され、そのシミュレータ実行オブジェクトを実行
することによってターゲットとなるCPUの機械語プロ
グラム17のシミュレーションを行う。
【0036】以上のように、この実施の形態5によれ
ば、ターゲットとなるCPUの機械語プログラム17上
のシーケンス制御命令に対応した高級言語ソースを生成
する際に、そのシーケンス制御命令の飛び先アドレスに
対応した、高級言語上でのラベルを用いたシーケンス制
御文を出力することにより、容易にシーケンス制御命令
に対応した高級言語ソースを実現できるようになる効果
がある。
【0037】
【発明の効果】請求項1記載の発明によれば、高級言語
ソース生成部を設け、命令デコード処理部で決定された
処理内容に従って、その命令の実行をシミュレートする
ために呼び出しが必要となる関数に対応した高級言語ソ
ースを出力するように構成したので、プログラムのシミ
ュレート実行中に命令コードを読み出して逐次的に解釈
するオーバヘッドが削減されるため、高速なシミュレー
タを得ることができる効果がある。
【0038】請求項2記載の発明によれば、高級言語ソ
ース生成部に、ユーザインタフェース処理部の処理など
に対応した、ターゲットとなるCPUの機械語プログラ
ムに依存しない高級言語ソースも出力する機能を持たせ
るように構成したので、シミュレータ実行オブジェクト
の実行時に、ターゲットとなるCPUの機械語プログラ
ムには依存しない、シミュレータのユーザインタフェー
ス処理などの機能も実現することができるようになり、
シミュレーションの制御やデバッグなどが容易になる効
果がある。
【0039】請求項3記載の発明によれば、高級言語ソ
ース生成部に、ターゲットとなるCPUの機械語プログ
ラム上のシーケンス制御命令に対応した高級言語ソース
を生成する際に、そのシーケンス制御命令の飛び先アド
レスに対応した高級言語上でのラベルを用いたシーケン
ス制御文を出力する機能を持たせるように構成したの
で、シーケンス制御命令に対応した高級言語ソースが容
易に実現できるようになる効果がある。
【図面の簡単な説明】
【図1】 この発明の実施の形態1から実施の形態5に
よるシミュレータの構成を示すブロック図である。
【図2】 この発明の実施の形態1におけるターゲット
となるCPUの機械語プログラムの一例を示す説明図で
ある。
【図3】 この発明の実施の形態1によるシミュレータ
から出力される高級言語ソースの一例を示す説明図であ
る。
【図4】 この発明の実施の形態1によるシミュレータ
を用いた場合のシミュレータ実行オブジェクト生成手段
の一例を示すブロック図である。
【図5】 この発明の実施の形態2によるシミュレータ
を用いた場合のシミュレータ実行オブジェクト生成手段
の一例を示すブロック図である。
【図6】 この発明の実施の形態3によるシミュレータ
を用いた場合のシミュレータ実行オブジェクト生成手段
の一例を示すブロック図である。
【図7】 この発明の実施の形態4によるシミュレータ
を用いた場合のシミュレータ実行オブジェクト生成手段
の一例を示すブロック図である。
【図8】 この発明の実施の形態5によるシミュレータ
におけるターゲットとなるCPUの機械語プログラムの
一例を示す説明図である。
【図9】 この発明の実施の形態5によるシミュレータ
から出力される高級言語ソースの一例を示す説明図であ
る。
【図10】 従来のシミュレータの構成を示すブロック
図である。
【符号の説明】
1 ユーザインタフェース処理部、2 命令コード格納
部、3 命令フェッチ処理部、4 命令デコード処理
部、6 高級言語ソース生成部、7 高級言語ソース。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 当該シミュレータのコマンド処理を行う
    ユーザインタフェース処理部と、 前記シミュレータのターゲットとなる中央演算処理装置
    の機械語プログラムを格納する命令コード格納部と、 前記命令コード格納部から命令コードを読み出す命令フ
    ェッチ処理部と、 前記命令フェッチ処理部で読み出された命令コードを解
    釈し、その命令に対応した処理内容を決定する命令デコ
    ード処理部と、 前記命令デコード処理部で決定された処理内容に従っ
    て、当該命令の実行をシミュレートするために呼び出し
    が必要となる関数に対応した高級言語ソースを出力する
    高級言語ソース生成部とを備えたシミュレータ。
  2. 【請求項2】 高級言語ソース生成部が、当該シミュレ
    ータのターゲットとなる中央演算処理装置の機械語プロ
    グラムに依存する高級言語ソースとともに、ユーザイン
    タフェース処理部の処理のような、前記ターゲットとな
    る中央演算処理装置の機械語プログラムには依存しない
    高級言語ソースについても出力する機能を備えたことを
    特徴とする請求項1記載のシミュレータ。
  3. 【請求項3】 高級言語ソース生成部が、当該シミュレ
    ータのターゲットとなる中央演算処理装置の機械語プロ
    グラムにシーケンス制御命令が含まれる場合に、そのシ
    ーケンス制御命令に対応する高級言語ソースを出力する
    際、前記シーケンス制御命令の飛び先アドレスに対応す
    る前記高級言語ソース上のラベルを用いた、高級言語に
    おけるシーケンス制御文を出力する機能を備えたことを
    特徴とする請求項1記載のシミュレータ。
JP23691796A 1996-09-06 1996-09-06 シミュレータ Pending JPH1083311A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23691796A JPH1083311A (ja) 1996-09-06 1996-09-06 シミュレータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23691796A JPH1083311A (ja) 1996-09-06 1996-09-06 シミュレータ

Publications (1)

Publication Number Publication Date
JPH1083311A true JPH1083311A (ja) 1998-03-31

Family

ID=17007674

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23691796A Pending JPH1083311A (ja) 1996-09-06 1996-09-06 シミュレータ

Country Status (1)

Country Link
JP (1) JPH1083311A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7457738B2 (en) 2004-05-28 2008-11-25 Samsung Electronics Co., Ltd. Method for decoding instruction in architectural simulator
WO2017014318A1 (ja) * 2015-07-23 2017-01-26 国立大学法人東京工業大学 命令セットシミュレータおよびそのシミュレータ生成方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7457738B2 (en) 2004-05-28 2008-11-25 Samsung Electronics Co., Ltd. Method for decoding instruction in architectural simulator
WO2017014318A1 (ja) * 2015-07-23 2017-01-26 国立大学法人東京工業大学 命令セットシミュレータおよびそのシミュレータ生成方法
JP2017027375A (ja) * 2015-07-23 2017-02-02 国立大学法人東京工業大学 命令セットシミュレータおよびそのシミュレータ生成方法
US10459707B2 (en) 2015-07-23 2019-10-29 Tokyo Institute Of Technology Instruction-set simulator and its simulator generation method

Similar Documents

Publication Publication Date Title
EP0718760B1 (en) Method and apparatus for generating platform-standard object files containing machine-independent code
US7877741B2 (en) Method and corresponding apparatus for compiling high-level languages into specific processor architectures
US10860300B2 (en) Direct function call substitution using preprocessor
JPH05257709A (ja) 並列化判別方法およびそれを用いた並列化支援方法
JP3612294B2 (ja) デバッグ方法およびデバッグ装置
EP0428560A4 (en) Machine process for translating programs in binary machine language into another binary machine language
CA2249042A1 (en) Method for generating a java bytecode data flow graph
US6141791A (en) Debug aid device, program compiler device, storage medium storing computer-readable debugger program, and storage medium storing program compiler program
JP4026940B2 (ja) プログラム変換装置
Sadolewski et al. Compiler and virtual machine of a multiplatform control environment
JP6790869B2 (ja) コンパイル方法、コンパイルプログラム及び情報処理装置
US6086622A (en) Method and apparatus for converting an architecture of a program and method, and apparatus for debugging a program by using them
JP2817786B2 (ja) シミュレーション装置及びシミュレーション方法
JPH11514119A (ja) 転送可能および転送不可能なプログラム部分を有するプログラムを移送するための方法
JPH1083311A (ja) シミュレータ
JP2007226589A (ja) プログラム変換システム
JP2009515243A (ja) ホストコンピュータ上で実行可能なシミュレーションプログラムを生成する方法
JP2004013190A (ja) ソフトウエア開発環境、シミュレータ及び記録媒体
JP2004118518A (ja) シミュレータ、そのシミュレータをコンピュータ読み取り可能に記録した記録媒体
JP2956591B2 (ja) ループ外への条件付き飛び出しがあるループの並列化方法及び装置
JPS58169637A (ja) コンパイル処理方式
JP2006146731A (ja) プログラム、記憶媒体、アセンブラ装置、コンパイラ装置、シミュレータ装置及びエミュレータ装置
JPH07248923A (ja) コンパイラ
JP2007233805A (ja) プログラム変換システム
JP2004280476A (ja) プログラム開発装置、およびプログラム開発プログラム