JPH06309193A - 機械語プログラムの動作検証方法および装置 - Google Patents
機械語プログラムの動作検証方法および装置Info
- Publication number
- JPH06309193A JPH06309193A JP5100964A JP10096493A JPH06309193A JP H06309193 A JPH06309193 A JP H06309193A JP 5100964 A JP5100964 A JP 5100964A JP 10096493 A JP10096493 A JP 10096493A JP H06309193 A JPH06309193 A JP H06309193A
- Authority
- JP
- Japan
- Prior art keywords
- program
- architecture
- machine language
- computer
- language program
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【目的】新しいアーキテクチャの計算機用の機械語プロ
グラムの動作検証が、アーキテクチャを異にする既存の
計算機を用いて高速に行えるようにする。 【構成】新たなアーキテクチャの計算機用の機械語プロ
グラムを入力して、同プログラムから命令を取出し、こ
の取出した命令の種類を読取り、更にその命令の実行に
必要なデータ(オペランド等)の内容を読取る解読処理
を行って、高級言語のコードの生成が可能な形式の命令
情報を生成し、同情報から高級言語のコードを生成する
ことにより、上記機械語プログラムと同じ動作をする高
級言語ソースプログラムを生成する(ステップS1〜S
4)。次に、この高級言語ソースプログラムを既存のア
ーキテクチャの計算機上でコンパイル,リンクして、同
計算機上で実行可能なロードモジュールを作成し(ステ
ップS5)、このロードモジュールを同計算機上で実行
させて動作確認を行う(ステップS6)。
グラムの動作検証が、アーキテクチャを異にする既存の
計算機を用いて高速に行えるようにする。 【構成】新たなアーキテクチャの計算機用の機械語プロ
グラムを入力して、同プログラムから命令を取出し、こ
の取出した命令の種類を読取り、更にその命令の実行に
必要なデータ(オペランド等)の内容を読取る解読処理
を行って、高級言語のコードの生成が可能な形式の命令
情報を生成し、同情報から高級言語のコードを生成する
ことにより、上記機械語プログラムと同じ動作をする高
級言語ソースプログラムを生成する(ステップS1〜S
4)。次に、この高級言語ソースプログラムを既存のア
ーキテクチャの計算機上でコンパイル,リンクして、同
計算機上で実行可能なロードモジュールを作成し(ステ
ップS5)、このロードモジュールを同計算機上で実行
させて動作確認を行う(ステップS6)。
Description
【0001】
【産業上の利用分野】この発明は、新しいアーキテクチ
ャの計算機用に開発された機械語プログラムの動作検証
に好適な機械語プログラムの動作検証方法に関する。
ャの計算機用に開発された機械語プログラムの動作検証
に好適な機械語プログラムの動作検証方法に関する。
【0002】
【従来の技術】アーキテクチャの異なる計算機を新たに
開発する場合、新しい計算機用の機械語プログラムのデ
バッグ(動作検証)をする必要が生じる。ところが、こ
の段階では、新しい計算機(ハードウェア)は完成して
おらず、実存していないのが一般的である。このため、
新しい計算機上での動作検証は不可能である。
開発する場合、新しい計算機用の機械語プログラムのデ
バッグ(動作検証)をする必要が生じる。ところが、こ
の段階では、新しい計算機(ハードウェア)は完成して
おらず、実存していないのが一般的である。このため、
新しい計算機上での動作検証は不可能である。
【0003】そこで従来は、この動作検証(新しいアー
キテクチャの計算機用の機械語プログラムの動作検証)
を行うのに、新しい計算機のハードウェア機能をソフト
ウェア的に模擬するシミュレータを用いるようにしてい
た。但し、このシミュレータには、既存のアーキテクチ
ャ向きのシミュレータは使用できないことから、既存の
シミュレータの改造、或いは新たなアーキテクチャに適
合する新たなシミュレータの開発が必要となる。
キテクチャの計算機用の機械語プログラムの動作検証)
を行うのに、新しい計算機のハードウェア機能をソフト
ウェア的に模擬するシミュレータを用いるようにしてい
た。但し、このシミュレータには、既存のアーキテクチ
ャ向きのシミュレータは使用できないことから、既存の
シミュレータの改造、或いは新たなアーキテクチャに適
合する新たなシミュレータの開発が必要となる。
【0004】通常、シミュレータを用いた機械語プログ
ラムの動作検証は、同プログラムの命令コードを、ソフ
トウェア処理により逐次取出して、解読し、動作シミュ
レートを行うことにより実現される。
ラムの動作検証は、同プログラムの命令コードを、ソフ
トウェア処理により逐次取出して、解読し、動作シミュ
レートを行うことにより実現される。
【0005】
【発明が解決しようとする課題】上記したように従来
は、新しいアーキテクチャの計算機用の機械語プログラ
ムの動作検証をシミュレータを用いて行うのに、シミュ
レータ側での対応が必要であり、シミュレータの改造、
或いはシミュレータの新規開発の手間がかかるという問
題があった。特に、複数の新たなアーキテクチャを開発
し、その中から実際に適用する1つのアーキテクチャを
決定しようとする場合には、各アーキテクチャ毎に対応
するシミュレータを用意しなければならないため、問題
であった。
は、新しいアーキテクチャの計算機用の機械語プログラ
ムの動作検証をシミュレータを用いて行うのに、シミュ
レータ側での対応が必要であり、シミュレータの改造、
或いはシミュレータの新規開発の手間がかかるという問
題があった。特に、複数の新たなアーキテクチャを開発
し、その中から実際に適用する1つのアーキテクチャを
決定しようとする場合には、各アーキテクチャ毎に対応
するシミュレータを用意しなければならないため、問題
であった。
【0006】また、シミュレータを用いた機械語プログ
ラムの動作検証では、命令コードの取出し、解読がソフ
トウェア処理により逐次行われるため、シミュレーショ
ンの実行に長時間を要するという問題があった。
ラムの動作検証では、命令コードの取出し、解読がソフ
トウェア処理により逐次行われるため、シミュレーショ
ンの実行に長時間を要するという問題があった。
【0007】この発明は上記事情を考慮してなされたも
のでその目的は、新しいアーキテクチャの計算機用の機
械語プログラムの動作検証が、そのアーキテクチャに適
合するシミュレータを必要とせずに行える機械語プログ
ラムの動作検証方法および装置を提供することにある。
のでその目的は、新しいアーキテクチャの計算機用の機
械語プログラムの動作検証が、そのアーキテクチャに適
合するシミュレータを必要とせずに行える機械語プログ
ラムの動作検証方法および装置を提供することにある。
【0008】この発明の他の目的は、新しいアーキテク
チャの計算機用の機械語プログラムの動作検証が、アー
キテクチャを異にする既存の計算機を用いて高速に行え
る機械語プログラムの動作検証方法および装置を提供す
ることにある。
チャの計算機用の機械語プログラムの動作検証が、アー
キテクチャを異にする既存の計算機を用いて高速に行え
る機械語プログラムの動作検証方法および装置を提供す
ることにある。
【0009】
【課題を解決するための手段】この発明は、第1のアー
キテクチャの計算機用の機械語プログラム(第1の機械
語プログラム)から同プログラムと同じ動作を定義した
高級言語ソースプログラムを生成した後、この高級言語
ソースプログラムをコンパイルして上記第1のアーキテ
クチャとは異なる第2のアーキテクチャの計算機で実行
可能なロードモジュールを作成し、このロードモジュー
ルを第2のアーキテクチャの計算機で実行させることに
より、第1の機械語プログラムの動作検証を行うように
したことを特徴とするものである。
キテクチャの計算機用の機械語プログラム(第1の機械
語プログラム)から同プログラムと同じ動作を定義した
高級言語ソースプログラムを生成した後、この高級言語
ソースプログラムをコンパイルして上記第1のアーキテ
クチャとは異なる第2のアーキテクチャの計算機で実行
可能なロードモジュールを作成し、このロードモジュー
ルを第2のアーキテクチャの計算機で実行させることに
より、第1の機械語プログラムの動作検証を行うように
したことを特徴とするものである。
【0010】また、この発明は、上記の第2のアーキテ
クチャの計算機を用いた動作検証に代えて、高級言語ソ
ースプログラムのコンパイルにより生成される第2のア
ーキテクチャに依存した機械語プログラム(第2の機械
語プログラム)をもとに、第2のアーキテクチャ向きの
シミュレータを動かしてシミュレーション実行を行うこ
とにより、第1の機械語プログラムの動作検証を行うよ
うにしたことをも特徴とする。
クチャの計算機を用いた動作検証に代えて、高級言語ソ
ースプログラムのコンパイルにより生成される第2のア
ーキテクチャに依存した機械語プログラム(第2の機械
語プログラム)をもとに、第2のアーキテクチャ向きの
シミュレータを動かしてシミュレーション実行を行うこ
とにより、第1の機械語プログラムの動作検証を行うよ
うにしたことをも特徴とする。
【0011】
【作用】上記の構成において、新たなアーキテクチャ
(第1のアーキテクチャ)の計算機を開発する過程で、
新しい計算機用の機械語プログラム(第1の機械語プロ
グラム)の動作検証を行う必要が生じた場合、その機械
語プログラムから同プログラムと同じ動作を定義した高
級言語ソースプログラムが生成される。この高級言語ソ
ースプログラムはアーキテクチャに依存しないことか
ら、同ソースプログラムを既存のアーキテクチャ(第2
のアーキテクチャ)の計算機に適合するコンパイラでコ
ンパイルすることにより、同計算機で実行可能なロード
モジュールを作成することができる。したがって、この
ロードモジュールを同計算機で実際に実行させることに
より、上記第1の機械語プログラムと同じ動作を行わせ
ることができ、このマシンネイティブな第1の機械語プ
ログラムの動作検証を既存の計算機上で実現することが
可能となる。
(第1のアーキテクチャ)の計算機を開発する過程で、
新しい計算機用の機械語プログラム(第1の機械語プロ
グラム)の動作検証を行う必要が生じた場合、その機械
語プログラムから同プログラムと同じ動作を定義した高
級言語ソースプログラムが生成される。この高級言語ソ
ースプログラムはアーキテクチャに依存しないことか
ら、同ソースプログラムを既存のアーキテクチャ(第2
のアーキテクチャ)の計算機に適合するコンパイラでコ
ンパイルすることにより、同計算機で実行可能なロード
モジュールを作成することができる。したがって、この
ロードモジュールを同計算機で実際に実行させることに
より、上記第1の機械語プログラムと同じ動作を行わせ
ることができ、このマシンネイティブな第1の機械語プ
ログラムの動作検証を既存の計算機上で実現することが
可能となる。
【0012】また、同様の理由により、上記ロードモジ
ュール作成の過程で生成される、第2ののアーキテクチ
ャに依存する機械語プログラム、即ち上記第1の機械語
プログラムと同じ動作が可能な第2の機械語プログラム
をもとに、第2のアーキテクチャに適合する既存のシミ
ュレータによるシミュレーションを実行させることもで
き、第1の機械語プログラムの動作検証を既存のシミュ
レータにより実現することが可能となる。
ュール作成の過程で生成される、第2ののアーキテクチ
ャに依存する機械語プログラム、即ち上記第1の機械語
プログラムと同じ動作が可能な第2の機械語プログラム
をもとに、第2のアーキテクチャに適合する既存のシミ
ュレータによるシミュレーションを実行させることもで
き、第1の機械語プログラムの動作検証を既存のシミュ
レータにより実現することが可能となる。
【0013】
【実施例】図1はこの発明の一実施例に係る機械語プロ
グラムの動作検証装置の構成を示すブロック図である。
図1において、1は計算機の機械語で記述された機械語
プログラム2から同プログラム2と同じ動作を定義した
例えばC言語で記述された高級言語ソースプログラム3
を生成する高級言語プログラム生成部である。本実施例
において、上記機械語プログラム2は、並列実行型の新
しいアーキテクチャ(第1のアーキテクチャ)の計算機
用に開発されたものであり、同時に実行可能な命令を、
この新たな計算機(ハードウェア)が同時に並行して実
行するように並列に記述されたプログラム(並列化され
た機械語プログラム)である。
グラムの動作検証装置の構成を示すブロック図である。
図1において、1は計算機の機械語で記述された機械語
プログラム2から同プログラム2と同じ動作を定義した
例えばC言語で記述された高級言語ソースプログラム3
を生成する高級言語プログラム生成部である。本実施例
において、上記機械語プログラム2は、並列実行型の新
しいアーキテクチャ(第1のアーキテクチャ)の計算機
用に開発されたものであり、同時に実行可能な命令を、
この新たな計算機(ハードウェア)が同時に並行して実
行するように並列に記述されたプログラム(並列化され
た機械語プログラム)である。
【0014】高級言語プログラム生成部1は、例えば後
述する計算機4上で実現されるもので、命令フェッチ部
11、フェッチ命令記憶部12、命令情報テーブル1
3、デコード処理部14、解読済命令情報記憶部15、
および高級言語記述部16から構成される。
述する計算機4上で実現されるもので、命令フェッチ部
11、フェッチ命令記憶部12、命令情報テーブル1
3、デコード処理部14、解読済命令情報記憶部15、
および高級言語記述部16から構成される。
【0015】命令フェッチ部11は、機械語プログラム
1からの命令取出しを司る。フェッチ命令記憶部12
は、命令フェッチ部11により取出された命令を記憶す
るのに用いられる。
1からの命令取出しを司る。フェッチ命令記憶部12
は、命令フェッチ部11により取出された命令を記憶す
るのに用いられる。
【0016】命令情報テーブル13には、命令の種類毎
に、その命令の記述方法(記述型式)を示す情報(命令
情報)が登録される。デコード処理部14は、フェッチ
命令記憶部12中の命令の解読処理を命令情報テーブル
13を参照して行い、高級言語記述部16で処理可能な
形式の命令情報を生成する。
に、その命令の記述方法(記述型式)を示す情報(命令
情報)が登録される。デコード処理部14は、フェッチ
命令記憶部12中の命令の解読処理を命令情報テーブル
13を参照して行い、高級言語記述部16で処理可能な
形式の命令情報を生成する。
【0017】解読済命令情報記憶部15は、デコード処
理部14により生成された命令情報(解読済命令情報)
を記憶するのに用いられる。高級言語記述部16は、解
読済命令情報記憶部15中の解読済命令情報に記述され
ている動作と同一の動作を定義した高級言語(C言語)
のコードの生成を司る。
理部14により生成された命令情報(解読済命令情報)
を記憶するのに用いられる。高級言語記述部16は、解
読済命令情報記憶部15中の解読済命令情報に記述され
ている動作と同一の動作を定義した高級言語(C言語)
のコードの生成を司る。
【0018】4は上記第1のアーキテクチャとは異なる
既存のアーキテクチャ(第2のアーキテクチャ)の例え
ば順次実行型の計算機、5はC言語で記述された高級言
語ソースプログラムをコンパイル,リンクして計算機4
で実行可能な実行ロードモジュールを作成する第2のア
ーキテクチャに適合したコンパイラ&リンカである。こ
のコンパイラ&リンカ5は、計算機4上に実現されるも
のである。
既存のアーキテクチャ(第2のアーキテクチャ)の例え
ば順次実行型の計算機、5はC言語で記述された高級言
語ソースプログラムをコンパイル,リンクして計算機4
で実行可能な実行ロードモジュールを作成する第2のア
ーキテクチャに適合したコンパイラ&リンカである。こ
のコンパイラ&リンカ5は、計算機4上に実現されるも
のである。
【0019】6は機械語プログラム2の作成のもとにな
ったC言語で記述された高級言語ソースプログラム、7
はこの高級言語ソースプログラム6をコンパイラ&リン
カ5がコンパイル,リンクすることにより作成された実
行ロードモジュール、8は高級言語プログラム生成部1
により生成された高級言語ソースプログラム3をコンパ
イラ&リンカ5がコンパイル,リンクすることにより作
成された実行ロードモジュールである。
ったC言語で記述された高級言語ソースプログラム、7
はこの高級言語ソースプログラム6をコンパイラ&リン
カ5がコンパイル,リンクすることにより作成された実
行ロードモジュール、8は高級言語プログラム生成部1
により生成された高級言語ソースプログラム3をコンパ
イラ&リンカ5がコンパイル,リンクすることにより作
成された実行ロードモジュールである。
【0020】次に、図1の構成の装置における機械語プ
ログラムの動作検証について、図2のフローチャートを
適宜参照して説明する。まず、並列化された機械語プロ
グラム2は、並列化したコードを出力する第1のアーキ
テクチャに適合した新たなコンパイラ(図示せず)によ
って、C言語で記述された高級言語ソースプログラム6
をコンパイルすることにより生成されたものである。こ
の高級言語ソースプログラム6の一部の記述例を図3に
示す。また機械語プログラム2の図3との対応部分を図
4に示す。
ログラムの動作検証について、図2のフローチャートを
適宜参照して説明する。まず、並列化された機械語プロ
グラム2は、並列化したコードを出力する第1のアーキ
テクチャに適合した新たなコンパイラ(図示せず)によ
って、C言語で記述された高級言語ソースプログラム6
をコンパイルすることにより生成されたものである。こ
の高級言語ソースプログラム6の一部の記述例を図3に
示す。また機械語プログラム2の図3との対応部分を図
4に示す。
【0021】図3に示したソースプログラム部分は、整
数(int)型の変数bとcの加算結果を整数型の変数
aとすることを定義したものである。また図4に示した
機械語プログラム部分では、上記変数a,b,cのメモ
リ領域としてメモリのA番地,B番地,C番地(アドレ
スA,B,C)が割当てられている。この図4におい
て、同一行に記述されている2つの命令LD([B],
R2)およびLD([C],R3)、即ちメモリのB番
地からレジスタR2へロードする命令およびメモリのC
番地からレジスタR3へロードする命令は並行して実行
されることを示す。
数(int)型の変数bとcの加算結果を整数型の変数
aとすることを定義したものである。また図4に示した
機械語プログラム部分では、上記変数a,b,cのメモ
リ領域としてメモリのA番地,B番地,C番地(アドレ
スA,B,C)が割当てられている。この図4におい
て、同一行に記述されている2つの命令LD([B],
R2)およびLD([C],R3)、即ちメモリのB番
地からレジスタR2へロードする命令およびメモリのC
番地からレジスタR3へロードする命令は並行して実行
されることを示す。
【0022】さて、機械語プログラム2の動作検証を行
う場合、同プログラム2を補助記憶装置または主記憶
(図示せず)を介して高級言語プログラム生成部1に与
える(ステップS1)。
う場合、同プログラム2を補助記憶装置または主記憶
(図示せず)を介して高級言語プログラム生成部1に与
える(ステップS1)。
【0023】高級言語プログラム生成部1内の命令フェ
ッチ部11は、この補助記憶装置または主記憶上の機械
語プログラム2より各命令の取出しを行い、取出した命
令を、デコード処理部14が容易にアクセス可能なメモ
リ領域に確保されたフェッチ命令記憶部12にコピーす
る(ステップS2)。
ッチ部11は、この補助記憶装置または主記憶上の機械
語プログラム2より各命令の取出しを行い、取出した命
令を、デコード処理部14が容易にアクセス可能なメモ
リ領域に確保されたフェッチ命令記憶部12にコピーす
る(ステップS2)。
【0024】デコード処理部14は、命令フェッチ部1
1によりフェッチ命令記憶部12に取出された命令を命
令情報テーブル13に従って解読する(ステップS
3)。このデコード処理部14の動作の詳細を次に説明
する。
1によりフェッチ命令記憶部12に取出された命令を命
令情報テーブル13に従って解読する(ステップS
3)。このデコード処理部14の動作の詳細を次に説明
する。
【0025】まず命令情報テーブル13には、図5の模
式図に示すように、命令の種類毎に、その命令の記述方
法を示す命令情報が登録されている。例えば命令名AD
Dであれば、ADDを示す命令ID(命令識別子)は
“100”で、オペランド数は3であり、そのオペラン
ドの種類は、第1オペランド乃至第3オペランドのいず
れもレジスタであることが示されている。
式図に示すように、命令の種類毎に、その命令の記述方
法を示す命令情報が登録されている。例えば命令名AD
Dであれば、ADDを示す命令ID(命令識別子)は
“100”で、オペランド数は3であり、そのオペラン
ドの種類は、第1オペランド乃至第3オペランドのいず
れもレジスタであることが示されている。
【0026】そこでデコード処理部14は、フェッチ命
令記憶部12に取出された(機械語プログラム2中の)
命令から命令の種類を読取り、その命令種類の命令情報
テーブル13内の命令情報に従って、その命令の実行に
必要なデータ(オペランド等)の内容を読取る。例えば
命令LD([B],R2)であれば、デコード処理部1
4は、命令の種類がLDで、オペランドが第1オペラン
ド(第1オペランド値)“B”と第2オペランド(第2
オペランドレジスタ)“2”の2つであり、「B番地か
らレジスタR2へロードする」ことを読取る。
令記憶部12に取出された(機械語プログラム2中の)
命令から命令の種類を読取り、その命令種類の命令情報
テーブル13内の命令情報に従って、その命令の実行に
必要なデータ(オペランド等)の内容を読取る。例えば
命令LD([B],R2)であれば、デコード処理部1
4は、命令の種類がLDで、オペランドが第1オペラン
ド(第1オペランド値)“B”と第2オペランド(第2
オペランドレジスタ)“2”の2つであり、「B番地か
らレジスタR2へロードする」ことを読取る。
【0027】次にデコード処理部14は、読取った情報
から、図6に示すような、高級言語記述部16で処理可
能な形式の命令情報(解読済命令情報)を生成して、同
高級言語記述部16が容易にアクセス可能なメモリ領域
に確保された解読済命令情報記憶部15に書込む。この
図6は、図4に示した機械語プログラム部分に対するデ
コード処理部14の解読処理により得られた解読済命令
情報を示したものである。なお、同一行に記述された命
令、例えば図4中の2つの命令LD([B],R2)お
よびLD([C],R3)については、左側の命令から
先に解読処理されるものとする。
から、図6に示すような、高級言語記述部16で処理可
能な形式の命令情報(解読済命令情報)を生成して、同
高級言語記述部16が容易にアクセス可能なメモリ領域
に確保された解読済命令情報記憶部15に書込む。この
図6は、図4に示した機械語プログラム部分に対するデ
コード処理部14の解読処理により得られた解読済命令
情報を示したものである。なお、同一行に記述された命
令、例えば図4中の2つの命令LD([B],R2)お
よびLD([C],R3)については、左側の命令から
先に解読処理されるものとする。
【0028】高級言語記述部16は、デコード処理部1
4による解読処理の結果、解読済命令情報記憶部15に
記憶された解読済命令情報を入力し、同命令情報中に記
述されている動作と同一の動作を定義したC言語で記述
される高級言語のコード(C言語のソースコード)、即
ち同命令情報で示される命令を模擬する高級言語のコー
ドを生成する(ステップS4)。
4による解読処理の結果、解読済命令情報記憶部15に
記憶された解読済命令情報を入力し、同命令情報中に記
述されている動作と同一の動作を定義したC言語で記述
される高級言語のコード(C言語のソースコード)、即
ち同命令情報で示される命令を模擬する高級言語のコー
ドを生成する(ステップS4)。
【0029】この高級言語記述部16による高級言語の
コード作成処理により、図7に示すようなC言語で記述
された高級言語ソースプログラム3が生成される。この
高級言語ソースプログラム3は、新たなアーキテクチャ
(第1のアーキテクチャ)の計算機を開発するために作
成された高級言語ソースプログラム3を新たなコンパイ
ラ(ここではCコンパイラ)でコンパイルすることによ
り生成された機械語プログラム2から、(通常の高級言
語ソースプログラムから機械語プログラムを生成するの
と逆の向きで)生成されたものであり、機械語プログラ
ム2と同じ動作をするはずである。
コード作成処理により、図7に示すようなC言語で記述
された高級言語ソースプログラム3が生成される。この
高級言語ソースプログラム3は、新たなアーキテクチャ
(第1のアーキテクチャ)の計算機を開発するために作
成された高級言語ソースプログラム3を新たなコンパイ
ラ(ここではCコンパイラ)でコンパイルすることによ
り生成された機械語プログラム2から、(通常の高級言
語ソースプログラムから機械語プログラムを生成するの
と逆の向きで)生成されたものであり、機械語プログラ
ム2と同じ動作をするはずである。
【0030】次に、上記のようにして高級言語プログラ
ム生成部1により生成された高級言語ソースプログラム
3を、(順次実行型の)計算機4上で実現されるコンパ
イラ&リンカ5によりコンパイル,リンクして、同計算
機4で実行可能な実行ロードモジュール8を作成する
(ステップS5)。そして、この実行ロードモジュール
8を計算機4上で実際に実行させることで、開発者は動
作確認を行う(ステップS6)。ここでは、期待される
動作(機械語プログラム2が正しいものであるならば実
現されるべき動作)が行われているか否かにより動作を
確認することが可能となる。
ム生成部1により生成された高級言語ソースプログラム
3を、(順次実行型の)計算機4上で実現されるコンパ
イラ&リンカ5によりコンパイル,リンクして、同計算
機4で実行可能な実行ロードモジュール8を作成する
(ステップS5)。そして、この実行ロードモジュール
8を計算機4上で実際に実行させることで、開発者は動
作確認を行う(ステップS6)。ここでは、期待される
動作(機械語プログラム2が正しいものであるならば実
現されるべき動作)が行われているか否かにより動作を
確認することが可能となる。
【0031】一方、期待される動作を確実に把握してい
ない開発者が動作確認をする場合には、次の方法を適用
する。まず、機械語プログラム2の作成のもとになった
高級言語ソースプログラム6を、コンパイラ&リンカ5
によりコンパイル,リンクして、同計算機4で実行可能
な実行ロードモジュール7を作成する(ステップS1
1)。そして、この実行ロードモジュール7を計算機4
上で実際に実行させることで、開発者は期待される動作
を把握することができる。したがって、開発者は、この
実行ロードモジュール7に従う動作と、実行ロードモジ
ュール8に従う動作とが同一であるか否かを比較するこ
とで、新たな計算機用の並列化された機械語プログラム
2の動作検証を速やかに行うことができる。
ない開発者が動作確認をする場合には、次の方法を適用
する。まず、機械語プログラム2の作成のもとになった
高級言語ソースプログラム6を、コンパイラ&リンカ5
によりコンパイル,リンクして、同計算機4で実行可能
な実行ロードモジュール7を作成する(ステップS1
1)。そして、この実行ロードモジュール7を計算機4
上で実際に実行させることで、開発者は期待される動作
を把握することができる。したがって、開発者は、この
実行ロードモジュール7に従う動作と、実行ロードモジ
ュール8に従う動作とが同一であるか否かを比較するこ
とで、新たな計算機用の並列化された機械語プログラム
2の動作検証を速やかに行うことができる。
【0032】これにより、機械語プログラム2を生成し
た、第1のアーキテクチャに適合する新たなコンパイラ
(Cコンパイラ)のデバッグを高速に行うこともでき
る。なお、本発明は、Cコンパイラに限らず、クロスC
コンパイラ、クロスFortran(フォートラン)コ
ンパイラなど、他の種類のコンパイラの生成コードの検
証にも応用できることは勿論である。
た、第1のアーキテクチャに適合する新たなコンパイラ
(Cコンパイラ)のデバッグを高速に行うこともでき
る。なお、本発明は、Cコンパイラに限らず、クロスC
コンパイラ、クロスFortran(フォートラン)コ
ンパイラなど、他の種類のコンパイラの生成コードの検
証にも応用できることは勿論である。
【0033】また機械語プログラム2がコンパイラで作
成されたものでなく、開発者によって直接作成されたも
のであっても構わない。また、実行ロードモジュール
7,8に従う動作で、ファイル等に格納された各情報を
読出して特定の記憶領域に格納し、両者を比較するため
のプログラムを計算機4上で動かすことにより、機械語
プログラム2の動作検証を自動的に行うことも可能であ
る。
成されたものでなく、開発者によって直接作成されたも
のであっても構わない。また、実行ロードモジュール
7,8に従う動作で、ファイル等に格納された各情報を
読出して特定の記憶領域に格納し、両者を比較するため
のプログラムを計算機4上で動かすことにより、機械語
プログラム2の動作検証を自動的に行うことも可能であ
る。
【0034】また、計算機4を用いた動作検証に代え
て、第2のアーキテクチャに適合した既存のシミュレー
タを用いた動作検証も可能である。このシミュレータを
用いた動作検証では、同シミュレータが第2のアーキテ
クチャに依存した機械語プログラムに対応しているなら
ば、コンパイラ&リンカ5による高級言語ソースプログ
ラム3のコンパイルの過程で生成される機械語プログラ
ムを同シミュレータに与えればよく、オブジェクトに対
応しているならば、同じコンパイルの過程で生成される
オブジェクトを同シミュレータに与えればよい。
て、第2のアーキテクチャに適合した既存のシミュレー
タを用いた動作検証も可能である。このシミュレータを
用いた動作検証では、同シミュレータが第2のアーキテ
クチャに依存した機械語プログラムに対応しているなら
ば、コンパイラ&リンカ5による高級言語ソースプログ
ラム3のコンパイルの過程で生成される機械語プログラ
ムを同シミュレータに与えればよく、オブジェクトに対
応しているならば、同じコンパイルの過程で生成される
オブジェクトを同シミュレータに与えればよい。
【0035】また、高級言語プログラム生成部1による
高級言語ソースプログラム3の生成と同様にして、第1
のアーキテクチャに依存する機械語プログラム2から、
第2のアーキテクチャに依存する機械語プログラムを生
成し、この生成した機械語プログラムをもとに計算機4
で実行可能なロードモジュールを作成して動作検証を行
うことも、この機械語プログラムを第2のアーキテクチ
ャに適合したシミュレータでシミュレーション実行させ
ることで動作検証を行うことも可能である。
高級言語ソースプログラム3の生成と同様にして、第1
のアーキテクチャに依存する機械語プログラム2から、
第2のアーキテクチャに依存する機械語プログラムを生
成し、この生成した機械語プログラムをもとに計算機4
で実行可能なロードモジュールを作成して動作検証を行
うことも、この機械語プログラムを第2のアーキテクチ
ャに適合したシミュレータでシミュレーション実行させ
ることで動作検証を行うことも可能である。
【0036】
【発明の効果】以上詳述したようにこの発明によれば、
新たなアーキテクチャの計算機用の機械語プログラムか
ら同プログラムと同じ動作を定義した高級言語ソースプ
ログラムを生成し、この高級言語ソースプログラムをコ
ンパイルして上記新たなアーキテクチャとは異なる既存
のアーキテクチャの計算機で実行可能なロードモジュー
ルを作成し、このロードモジュールを上記既存のアーキ
テクチャの計算機で実行させることにより、機械語プロ
グラムの動作検証を、新たなアーキテクチャの計算機が
実在しなくても、高速に実行することができる。
新たなアーキテクチャの計算機用の機械語プログラムか
ら同プログラムと同じ動作を定義した高級言語ソースプ
ログラムを生成し、この高級言語ソースプログラムをコ
ンパイルして上記新たなアーキテクチャとは異なる既存
のアーキテクチャの計算機で実行可能なロードモジュー
ルを作成し、このロードモジュールを上記既存のアーキ
テクチャの計算機で実行させることにより、機械語プロ
グラムの動作検証を、新たなアーキテクチャの計算機が
実在しなくても、高速に実行することができる。
【0037】また、この発明によれば、上記のように生
成された高級言語ソースプログラムのコンパイルの過程
で生成される第2のアーキテクチャに依存する機械語プ
ログラムをもとに、第2のアーキテクチャ向きのシミュ
レータを動かしてシミュレーション実行を行うことによ
り、既存のシミュレータにても、機械語プログラムの動
作検証が行える。
成された高級言語ソースプログラムのコンパイルの過程
で生成される第2のアーキテクチャに依存する機械語プ
ログラムをもとに、第2のアーキテクチャ向きのシミュ
レータを動かしてシミュレーション実行を行うことによ
り、既存のシミュレータにても、機械語プログラムの動
作検証が行える。
【図1】この発明の一実施例に係る機械語プログラムの
動作検証装置の構成を示すブロック図。
動作検証装置の構成を示すブロック図。
【図2】図1のシステムにおける機械語プログラムの動
作検証手順を説明するためのフローチャート。
作検証手順を説明するためのフローチャート。
【図3】同実施例での動作検証の対象となる機械語プロ
グラム2のもとになった高級言語ソースプログラム6の
一部の記述例を示す図。
グラム2のもとになった高級言語ソースプログラム6の
一部の記述例を示す図。
【図4】機械語プログラム2の図3との対応部分を示す
図。
図。
【図5】命令情報テーブル13の内容例を示す模式図。
【図6】図4に示した機械語プログラム部分に対するデ
コード処理部14の解読処理により得られた解読済命令
情報を示す図。
コード処理部14の解読処理により得られた解読済命令
情報を示す図。
【図7】高級言語プログラム生成部1によって機械語プ
ログラム2から生成された高級言語ソースプログラム3
の図4に対応した部分を示す図。
ログラム2から生成された高級言語ソースプログラム3
の図4に対応した部分を示す図。
1…高級言語プログラム生成部、2…機械語プログラム
(第1のアーキテクチャの計算機用の機械語プログラ
ム)、3…高級言語ソースプログラム、4…計算機(第
2のアーキテクチャの計算機)、5…コンパイラ&リン
カ、6…高級言語ソースプログラム、7,8…実行ロー
ドモジュール、S1〜S4…ステップ(第1のステッ
プ)、S5…ステップ(第2のステップ)、S6…ステ
ップ(第3のステップ)。
(第1のアーキテクチャの計算機用の機械語プログラ
ム)、3…高級言語ソースプログラム、4…計算機(第
2のアーキテクチャの計算機)、5…コンパイラ&リン
カ、6…高級言語ソースプログラム、7,8…実行ロー
ドモジュール、S1〜S4…ステップ(第1のステッ
プ)、S5…ステップ(第2のステップ)、S6…ステ
ップ(第3のステップ)。
Claims (4)
- 【請求項1】 第1のアーキテクチャの計算機用の機械
語プログラムから同プログラムと同じ動作を定義した高
級言語ソースプログラムを生成する第1のステップと、 この第1のステップで生成された前記高級言語ソースプ
ログラムをコンパイルして前記第1のアーキテクチャと
は異なる第2のアーキテクチャの計算機で実行可能なロ
ードモジュールを作成する第2のステップと、 この第2のステップで作成された前記ロードモジュール
を前記第2のアーキテクチャの計算機で実行させること
により、前記機械語プログラムの動作検証を行う第3の
ステップとを具備することを特徴とする機械語プログラ
ムの動作検証方法。 - 【請求項2】 第1のアーキテクチャの計算機用の第1
の機械語プログラムから同プログラムと同じ動作を定義
した高級言語ソースプログラムを生成する第1のステッ
プと、 この第1のステップで生成された前記高級言語ソースプ
ログラムをコンパイルして前記第1のアーキテクチャと
は異なる第2のアーキテクチャに依存する機械語で記述
された第2の機械語プログラムを生成する第2のステッ
プと、 この第2のステップで生成された前記第2の機械語プロ
グラムをもとに前記第2のアーキテクチャ向きのシミュ
レータを動かしてシミュレーション実行を行うことによ
り、前記第1の機械語プログラムの動作検証を行う第3
のステップとを具備することを特徴とする機械語プログ
ラムの動作検証方法。 - 【請求項3】 第1のアーキテクチャの計算機用の機械
語プログラムから同プログラムと同じ動作を定義した高
級言語ソースプログラムを生成する高級言語プログラム
生成手段と、 前記第1のアーキテクチャとは異なる第2のアーキテク
チャの計算機と、 前記高級言語プログラム生成手段により生成された前記
高級言語ソースプログラムをコンパイルして前記第2の
アーキテクチャの計算機で実行可能なロードモジュール
を作成するコンパイル手段と、 このコンパイル手段により作成された前記ロードモジュ
ールを前記第2のアーキテクチャの計算機で実行させる
実行手段とを具備し、前記第2のアーキテクチャの計算
機で前記ロードモジュールを実行させることにより前記
機械語プログラムの動作検証を行うようにしたことを特
徴とする機械語プログラムの動作検証装置。 - 【請求項4】 第1のアーキテクチャの計算機用の第1
の機械語プログラムから同プログラムと同じ動作を定義
した高級言語ソースプログラムを生成する高級言語プロ
グラム生成手段と、 前記第1のアーキテクチャとは異なる第2のアーキテク
チャの計算機の機能を模擬するシミュレータと、 前記高級言語プログラム生成手段により生成された前記
高級言語ソースプログラムをコンパイルして前記第2の
アーキテクチャに適合した第2の機械語プログラムを生
成するコンパイル手段と、 このコンパイル手段により生成された前記第2の機械語
プログラムを前記シミュレータ上でシミュレーション実
行させる実行手段とを具備し、前記シミュレータを用い
た前記第2の機械語プログラムの動作検証のシミュレー
ションにより、前記第1の機械語プログラムの動作検証
を行うようにしたことを特徴とする機械語プログラムの
動作検証装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5100964A JPH06309193A (ja) | 1993-04-27 | 1993-04-27 | 機械語プログラムの動作検証方法および装置 |
KR1019940008823A KR0125605B1 (ko) | 1993-04-27 | 1994-04-26 | 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치 |
US08/233,387 US6086622A (en) | 1993-04-27 | 1994-04-26 | Method and apparatus for converting an architecture of a program and method, and apparatus for debugging a program by using them |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5100964A JPH06309193A (ja) | 1993-04-27 | 1993-04-27 | 機械語プログラムの動作検証方法および装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06309193A true JPH06309193A (ja) | 1994-11-04 |
Family
ID=14288043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5100964A Pending JPH06309193A (ja) | 1993-04-27 | 1993-04-27 | 機械語プログラムの動作検証方法および装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6086622A (ja) |
JP (1) | JPH06309193A (ja) |
KR (1) | KR0125605B1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102405886B1 (ko) * | 2022-03-17 | 2022-06-08 | 주식회사 넷아스 | 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치 및 방법 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE522988C2 (sv) * | 2000-05-16 | 2004-03-23 | Eurocity Software Ab | Förfarande, datorprogramprodukt och datorprogramelement för realtidsöversättning av användargränssnitt i en godtycklig applikation |
US7406682B2 (en) * | 2001-03-26 | 2008-07-29 | Emc Corporation | Translator-compiler for converting legacy management software |
DE60237200D1 (de) * | 2001-05-11 | 2010-09-16 | Computer Ass Think Inc | Methode und system zur umwandlung von legacy-software-anwendungen in moderne, objektorientierte systeme |
US7861239B2 (en) * | 2005-05-23 | 2010-12-28 | International Business Machines Corporation | Data migration between versions of software |
JP4983801B2 (ja) * | 2006-09-28 | 2012-07-25 | 富士通株式会社 | プログラム性能解析装置 |
CN103019942B (zh) * | 2012-12-31 | 2015-04-29 | 广东欧珀移动通信有限公司 | 一种基于安卓系统的待测应用自动测试方法和系统 |
US20150378756A1 (en) * | 2014-06-25 | 2015-12-31 | SmartBear Software, Inc. | Systems and methods for mobile application tracing instrumentation |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5133072A (en) * | 1986-11-13 | 1992-07-21 | Hewlett-Packard Company | Method for improved code generation in reduced instruction set computers |
US4992934A (en) * | 1986-12-15 | 1991-02-12 | United Technologies Corporation | Reduced instruction set computing apparatus and methods |
US5257369A (en) * | 1990-10-22 | 1993-10-26 | Skeen Marion D | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
US5197138A (en) * | 1989-12-26 | 1993-03-23 | Digital Equipment Corporation | Reporting delayed coprocessor exceptions to code threads having caused the exceptions by saving and restoring exception state during code thread switching |
US5307504A (en) * | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events |
US5339422A (en) * | 1991-03-07 | 1994-08-16 | Digital Equipment Corporation | System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment |
-
1993
- 1993-04-27 JP JP5100964A patent/JPH06309193A/ja active Pending
-
1994
- 1994-04-26 KR KR1019940008823A patent/KR0125605B1/ko not_active IP Right Cessation
- 1994-04-26 US US08/233,387 patent/US6086622A/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102405886B1 (ko) * | 2022-03-17 | 2022-06-08 | 주식회사 넷아스 | 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치 및 방법 |
WO2023177024A1 (ko) * | 2022-03-17 | 2023-09-21 | 주식회사 넷아스 | 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
KR0125605B1 (ko) | 1998-07-01 |
KR940024587A (ko) | 1994-11-18 |
US6086622A (en) | 2000-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4766540B2 (ja) | プログラムコード変換の検証を実行するための方法および装置 | |
JPH08123685A (ja) | 推測的実行を支援する方法 | |
US7941792B2 (en) | System and method for compiling program code ahead of time | |
CA2249042A1 (en) | Method for generating a java bytecode data flow graph | |
JP2002259134A (ja) | ポストリンク・コードの最適化方法及び装置 | |
Gallant | WebAssembly in action: with examples using C++ and Emscripten | |
JPH0748182B2 (ja) | プログラム・エラー検出方法 | |
JPH06309193A (ja) | 機械語プログラムの動作検証方法および装置 | |
Beyer et al. | A unifying approach for control-flow-based loop abstraction | |
Curzon et al. | A Verified Compiler for a Structured Assembly Language. | |
JP2817786B2 (ja) | シミュレーション装置及びシミュレーション方法 | |
Stepney | Incremental development of a high integrity compiler: experience from an industrial development | |
JPH10320212A (ja) | キャッシュ向け最適化方法 | |
JP7295469B2 (ja) | 関数生成プログラム、関数生成方法、及び情報処理装置 | |
JP2828590B2 (ja) | マイクロプログラム検証方法 | |
JP3461185B2 (ja) | ロードモジュールへのソースコード行番号登録方法および装置 | |
JP3745968B2 (ja) | 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体 | |
JP2009515243A (ja) | ホストコンピュータ上で実行可能なシミュレーションプログラムを生成する方法 | |
Osborne | The postroom computer | |
US20040045018A1 (en) | Using address space bridge in postoptimizer to route indirect calls at runtime | |
Mortensen | Isolating Errors for an Assembly Optimizer | |
JPH1083311A (ja) | シミュレータ | |
US11301252B2 (en) | Executing mutually exclusive vector instructions according to a vector predicate instruction | |
JP2002259121A (ja) | ソースラインデバッグ装置 | |
JPS58169637A (ja) | コンパイル処理方式 |