JPH01140236A - プログラムの逆コンパイル方式 - Google Patents

プログラムの逆コンパイル方式

Info

Publication number
JPH01140236A
JPH01140236A JP62298773A JP29877387A JPH01140236A JP H01140236 A JPH01140236 A JP H01140236A JP 62298773 A JP62298773 A JP 62298773A JP 29877387 A JP29877387 A JP 29877387A JP H01140236 A JPH01140236 A JP H01140236A
Authority
JP
Japan
Prior art keywords
instruction
program
store instruction
processing device
memory address
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
JP62298773A
Other languages
English (en)
Inventor
Mitsuyoshi Ozaki
小崎 光義
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 JP62298773A priority Critical patent/JPH01140236A/ja
Publication of JPH01140236A publication Critical patent/JPH01140236A/ja
Pending legal-status Critical Current

Links

Abstract

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

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は、プログラムの解析などに利用されるプログラ
ムの逆コンパイル方式に関するものである。
(従来の技術) 電子計算機用プログラムの開発に際しては、作成中のプ
ログラムについて机上の解析が行われる。
このような机上の解析は、作成中のプログラムをその実
行順に1ステツプずつたどってゆくことにより行われる
(発明が解決しようとする問題点) 上記従来のプログラムの解析方式では、作成中のプログ
ラムを実行順に1ステツプずつたどっている。このため
、解析対象のプログラムがアセンブラ言語で記述されて
いる場合にはレジスタ番号なども留意しなければならず
、解析に多大な労力と時間が費やされるという問題があ
る。
また、原プログラム中に含まれるジャンプ命令などによ
って解析範囲の跳躍が生ずるので、実行順序の追跡に誤
りが生じやすく、この点からも解析に多大な労力と時間
が費やされるいう問題がある。
(問題点を解決するための手段) 本発明に係わるプログラムの逆コンパイル方式は、アセ
ンブラ言語で記述された原プログラムをその実行順に読
取ると共にこの原プログラム中にレジスタ内容のメモリ
への書込みを指令するストア命令が出現するたびに、こ
のメモリアドレスに対応するユニークなコードを定義す
ると共にこのストア命令と上記メモリアドレスからのデ
ータの読出しを指令するロード命令との間で原プログラ
ムに従って実行される演算処理を上記ユニークなコード
を含む演算式で記述する処理を処理装置に操り返させる
ことにより高級言語のプログラムに変換し、解析の手間
と時間を軽減するように構成されている。
以下、本発明の作用を実施例と共に詳細に説明する。
(実施例) 第1図と第2図は本発明の一実施例に係わるプログラム
の逆コンパイル方式の処理手順を示すフローチャートで
ある。また、第3図は処理対象の原プログラムなどの一
例を示す概念図であり、上段左側が7センブラ言語で記
述され処理装置に入力される原プログラム、その右側が
処理装置による逆コンパイル過程で作成される演算式、
下段が処理装置から出力される高級言語に変換された逆
コンパイル後のプログラムである。
アセンブラ言語で記述された原プログラム中、LDはロ
ード命令、ADは加算命令、STはストア命令、JUP
はジャンプ命令を意味する。また、3000など単独の
数字はメモリアドレスを、&100など&が付された数
字は数値データを、%AOなど%が付された番号はレジ
スタ番号を意味している。
第1図と第2図の手順に従って処理を実行する処理装置
は、まず、アセンブラ言語で記述された原プログラムの
先頭の命令を読取り(ステップll)、これがジャンプ
命令であるかどうかを判定しくステップ12)、そうで
なければストア命令かどうかを判定する(ステップ13
)。ストア命令でなければ、原プログラム中の実行対象
の全命令についての読取りが終了したかどうかが判定さ
れ(ステップ14)、未終了であれば次の命令が読取ら
れ(ステップ15)、処理はステップ12に戻る。読取
られた命令がジャンプ命令であれば、ジャンプ先の命令
が読取られ(ステップ16)、処理はステップ12に戻
る。処理装置は、読取った命令がストア命令であること
をステップ13で検出すると、ステップ17に進み第2
図に示す手順の高級言語への変換処理を開始する。
処理装置は、第2図のステップ21において、ストア命
令に含まれるメモリアドレスに対応するユニークなコー
ドを定義しつつ初期演算式を記述する。第3図の例では
、アセンブラ言語のプログラム中に最初に出現するスト
ア命令(ST  %A0.3000)中に含まれるメモ
リアドレス300に対応してユニークなコード P4O
10が定義され、第3図の変換過程の最上行に示すよう
に初期演算式 P3000=P3000  が記述され
る。
次に、処理装置は上記ストア命令の直前の命令を読取り
(ステップ22)、これがロード命令であるかどうかを
判定する(ステップ23)。第3図の例ではストア命令
の直前の命令は加算命令(’AD  % AO,&10
  )であるから、処理装置はステップ23とステップ
24を経てステップ22に戻り、更に直前の命令を読取
りこれがロード命令がどうかを判定する。第3図の例で
は加算命令(AD  % AO,&10)の直前の命令
も別の加算命令 (AD  z AO2&100 )で
あるから、処理装置はステップ23とステップ24を経
てステップ22に戻って更に直前の命令を読取りこれが
ロード命令がどうかをステップ23で判定する。第3図
の例では加算命令(AD’  % AO,&IQO)の
直前の命令はロード命令(LD  % Ao、3000
  )であるから、処理装置はステップ23からステッ
プ25に進む。
処理装置はステップ25において、読取り済みのロード
命令中に含まれるメモリアドレスが第1図のステップ1
3で読取ったストア命令 (ST% Ao、3000)
中に含まれるメモリアドレスと一致するかどうかを判定
する。第3図の例では、メモリアドレス3000が両命
令において一致するので、処理装置はステップ26に進
み、ロード命令(LD  % Ao、3000  )の
次の命令を読取り、これが演算命令かどうかをステップ
27で判定する。第3図の例では、読取られた命令が加
算命令(AD  % AO,&100)であるから、処
理装置はステップ28に進み、ステップ21で記述済み
の初期演算式を上記加算命令に従って更新する。第3図
の例では、初期演算式P3000=P3000がP30
00=P3000+、100  に更新される。処理装
置は、この演算式の更新が終了すると、ステップ26に
戻り加算命令(AD  % AO,&100  )の次
の命令を読取り、これが演算命令かどうかをステップ2
7で判定する。第3図の例では、読取られた命令が加算
命令(AD  % AO,&10)であるから、処理装
置はステップ28に進み、ステップ22で更新済みの演
算式を上記加算命令に従って更新する。第3図の例では
、演算式 P3000工P3000+100がP300
0=P3000+100+10  に更新される。処理
装置は、この演算式の更新が終了すると、ステップ26
に戻り加算命令(八D % AO9&10  )の次の
命令を読取り、これが演算命令かどうかをステップ27
で判定する。第3図の例では、読取られた命令が演算命
令ではなくストア命令(ST  % Ao、3000)
であるから、処理装置はステップ29に進み、これがス
トア命令であるかどうかを判定する。この例では、スト
ア命令であるから、処理装置はステップ30に進み、最
終演算式 P3000=P3000+100+10  
を保存してストア命令(ST  %A0゜3000)に
ついての変換処理を終了し、第1図の判定ステップ14
に進む。
処理装置は、第1図のステップ14を経て判定ステップ
15に進み、ストア命令(ST  %A0.3000)
の次の命令を読取ってステップ12に戻り、これがジャ
ンプ命令であるかどうかを判定する。第3図の例では、
読取り済みの次命令がジャンプ命令(JMP  JPI
)であるから、処理装置はステップ16に進み、このジ
ャンプ命令で指定されたジャンプ先命令、第3図の例で
はロード命令(LD  % A2 .3002  )を
読取ってステップ12に戻る。
以下、同様にして、第3図の原プログラムにおいて実行
順序に従って2番目に出現するストア命令(ST  %
 A2.3002)についてはステップ17において演
算式 P3002=P3002+1+10)が保存され
、3番目に出現するストア命令(ST  % Al、3
001)についてはステップ17において演算式 P3
001%式%) ロード命令が同一メモリアドレスを含むストア命令に先
行しない場合、すなわちメモリへのストアが旧格納デー
タに対する演算結果の書込みでなく、旧格納データへの
上書きなどである場合には、ステップ23と25におい
て否定的な判定が原プの先頭まで繰り返される。この場
合、ステップ24において繰り返し回数が所定値を越え
たかどうかが判定され、越えていれば上述のようなメモ
リ上の旧データへの上書きなどであると見做され、ステ
ップ21で設定された初期演算式がステップ31で抹消
され、このストア命令に関する変換処理が打ち切られる
処理装置は、第1図のステップ14で読取りの終了を判
定すると、ステップ18に進み、該当の各ストア命令に
ついて第2図のステップ30で保存済みの一連の最終演
算式を保存順に編集出力することにより、逆コンパイル
済みのプログラムを作成し、処理を終了する。
以上、原プログラム中にストア命令が出現すると先行の
ロード命令まで1ステツプずつ遡及してゆく構成を例示
した。しかしながら、ロード命令が出現するたびにこれ
を保存しておき、以後ストア命令が出現した時にこの保
存中のロード命令に戻る構成とすることもできる。
また、−旦ロード命令まで戻ったのちストア命令までの
演算処理を演算式で記述する構成を例示した。しかしな
がら、演算式の記述を更新しながらlステップずつロー
ド命令まで遡及するように構成してもよい。
(発明の効果) 以上詳細に説明したように、本発明に係わるプログラム
の逆コンパイル方式は、アセンブラ言語で記述された原
プログラム中にストア命令が出現するたびに、このメモ
リアドレスに対応するユニークなコードを定義すると共
にこのストア命令と対応のロード命令との間で実行され
る演算処理を演算式で記述する処理を繰り返すことによ
り高級言語のプログラムに変換する構成であるから、原
プログラムを直接解析する場合と異なりレジスタ番号な
どを意識する必要がなくなると共にステップ数が大幅に
低減され、解析の手間と時間が大幅に軽減できる。
また、本発明の逆コンパイル方式は、アセンブラ言語で
記述された原プログラムをその実行順に読取る構成であ
るから、原プログラムを直接解析する場合と異なりジャ
ンプ命令などによる解析箇所の跳びに留意する必要がな
くなり、間違いが生じにくくなると共にこの点からも解
析の手間と時間が大幅に軽減されるという効果が奏され
る。
【図面の簡単な説明】
第1図と第2図は本発明の一実施例に係わるプログラム
の逆コンパイル方式の処理手順を示すフローチャート、
第3図は逆コンパイル対象のアセンブラ言語で記述され
た原プログラム、この原プログラムについての変換過程
及び逆コンパイル済みの高級言語で記述されたプログラ
ムの一例を示す概念図である。

Claims (1)

    【特許請求の範囲】
  1. アセンブラ言語で記述された原プログラムをその実行順
    に読取ると共にこの原プログラム中にレジスタ内容のメ
    モリへの書込みを指令するストア命令が出現するたびに
    、このメモリアドレスに対応するユニークなコードを定
    義すると共にこのストア命令と前記メモリアドレスから
    のデータの読出しを指令するロード命令との間で原プロ
    グラムに従って実行される演算処理を前記ユニークなコ
    ードを含む演算式で記述する処理を処理装置に繰り返さ
    せることにより高級言語のプログラムに変換することを
    特徴とするプログラムの逆コンパイル方式。
JP62298773A 1987-11-26 1987-11-26 プログラムの逆コンパイル方式 Pending JPH01140236A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62298773A JPH01140236A (ja) 1987-11-26 1987-11-26 プログラムの逆コンパイル方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62298773A JPH01140236A (ja) 1987-11-26 1987-11-26 プログラムの逆コンパイル方式

Publications (1)

Publication Number Publication Date
JPH01140236A true JPH01140236A (ja) 1989-06-01

Family

ID=17864029

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62298773A Pending JPH01140236A (ja) 1987-11-26 1987-11-26 プログラムの逆コンパイル方式

Country Status (1)

Country Link
JP (1) JPH01140236A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007128378A (ja) * 2005-11-07 2007-05-24 Fuji Electric Fa Components & Systems Co Ltd プログラマブルコントローラのプログラミング装置
CN111474894A (zh) * 2020-03-05 2020-07-31 杭州电子科技大学 可变目标plc仿真调试方法、存储介质及功能模块

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007128378A (ja) * 2005-11-07 2007-05-24 Fuji Electric Fa Components & Systems Co Ltd プログラマブルコントローラのプログラミング装置
CN111474894A (zh) * 2020-03-05 2020-07-31 杭州电子科技大学 可变目标plc仿真调试方法、存储介质及功能模块
CN111474894B (zh) * 2020-03-05 2021-08-24 杭州电子科技大学 可变目标plc仿真调试方法、存储介质及功能模块

Similar Documents

Publication Publication Date Title
US7016807B2 (en) Device and method for monitoring a program execution
US6792598B2 (en) Integrated source code file and method and apparatus for creating a computer program therefrom
JP3062266B2 (ja) 支援装置
JPH11167492A (ja) ループ飛び出し文を含むループに対する配列サマリ解析方法
JPH01140236A (ja) プログラムの逆コンパイル方式
JPH11327887A (ja) 自動部品化機能付コンパイラシステムおよび記録媒体
JP2001125793A (ja) コンパイラシステム及びコンパイル方法並びに記録媒体
JPH09265400A (ja) コンパイル最適化方式
JP2797777B2 (ja) 言語処理装置
JPH05250210A (ja) プログラムトレース方式
JP3424596B2 (ja) シンボル参照情報のキャッシュ方法ならびに装置
JP2507676B2 (ja) 索引入出力文実行処理方式
JPH0561687A (ja) コンパイラの処理方式
JPH1124939A (ja) プログラム変換方法
JPH0371231A (ja) ソースリスト作成方式
JPH05265721A (ja) 差分コンパイル方法および装置
JP2003337709A (ja) コンパイル方法
JPH06119203A (ja) デバック行削除装置
JPH0351007B2 (ja)
JPH0358232A (ja) プリプロセッサ呼び出し方式
JPH01267731A (ja) セグメントオーバレイプログラムの作成方式
JPH06208470A (ja) 目的コード最適化装置
JPH0264744A (ja) 障害解析情報取得方式
JPS62119641A (ja) オプシヨン値設定制御方式
JPH03260830A (ja) プログラムデバッグ処理方式