JPH05181664A - プログラムパッチ修正方式 - Google Patents
プログラムパッチ修正方式Info
- Publication number
- JPH05181664A JPH05181664A JP35973591A JP35973591A JPH05181664A JP H05181664 A JPH05181664 A JP H05181664A JP 35973591 A JP35973591 A JP 35973591A JP 35973591 A JP35973591 A JP 35973591A JP H05181664 A JPH05181664 A JP H05181664A
- Authority
- JP
- Japan
- Prior art keywords
- code
- program
- area
- correction
- instruction
- 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
- 238000012937 correction Methods 0.000 claims abstract description 52
- 238000000034 method Methods 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 4
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
(57)【要約】
【目的】 容易かつ迅速に正確な修正が行えるプログラ
ムパッチ修正方式を提供する。 【構成】 セグメント選択手段2は利用者に修正を行う
プログラムのセグメントを選択させ、コード部更新命令
アセンブル手段3は利用者に更新する命令等をアセンブ
リ言語で入力させてマシン語のコードに変換する。次い
で、コード部指定アドレス修正可能判別手段4はプログ
ラム上の修正箇所に修正にかかるコードを上書き可能か
否かを判断し、上書き可能な場合、更新命令書き込み手
段6はプログラム上の変更可能な命令文のエリアに修正
にかかるコードを書き込む。また、上書き不可能な場
合、コード部未使用エリア検索手段8はコード部の修正
を行うためのエリアを確保し、コード部更新データ書き
込み手段9は確保したエリアに修正にかかるコードを書
き込む。
ムパッチ修正方式を提供する。 【構成】 セグメント選択手段2は利用者に修正を行う
プログラムのセグメントを選択させ、コード部更新命令
アセンブル手段3は利用者に更新する命令等をアセンブ
リ言語で入力させてマシン語のコードに変換する。次い
で、コード部指定アドレス修正可能判別手段4はプログ
ラム上の修正箇所に修正にかかるコードを上書き可能か
否かを判断し、上書き可能な場合、更新命令書き込み手
段6はプログラム上の変更可能な命令文のエリアに修正
にかかるコードを書き込む。また、上書き不可能な場
合、コード部未使用エリア検索手段8はコード部の修正
を行うためのエリアを確保し、コード部更新データ書き
込み手段9は確保したエリアに修正にかかるコードを書
き込む。
Description
【0001】
【産業上の利用分野】本発明はプログラムパッチ修正方
式に関するものである。
式に関するものである。
【0002】
【従来の技術】プログラムを修正する手法の一つとして
パッチ修正がある。これは、プログラムがロードされた
主記憶上のコードの一部を所定のツールを用いて直接に
書き換えるものであり、軽微な修正の場合には、ソース
プログラムに修正を行ってアセンブル,リンク等をやり
直すのに比して有利な点が多い。
パッチ修正がある。これは、プログラムがロードされた
主記憶上のコードの一部を所定のツールを用いて直接に
書き換えるものであり、軽微な修正の場合には、ソース
プログラムに修正を行ってアセンブル,リンク等をやり
直すのに比して有利な点が多い。
【0003】ところで、従来のプログラムパッチ修正は
図3に示すような手順で行われていた。
図3に示すような手順で行われていた。
【0004】先ず、利用者は、修正を行うプログラムの
セグメントを選択すると共に、修正しようとする命令等
をマシン語のコードに翻訳してツールに入力する(ステ
ップS11)。
セグメントを選択すると共に、修正しようとする命令等
をマシン語のコードに翻訳してツールに入力する(ステ
ップS11)。
【0005】次いで、ツールは、プログラム上のエリア
に命令のコードを書き込む(ステップS12)。
に命令のコードを書き込む(ステップS12)。
【0006】ここで、修正しようとするプログラム上の
エリアが変更後の命令等のコードよりも長い場合には、
修正箇所にそのまま上書きし、余ったエリアはノーオペ
レーション命令(NOP)等で潰す。
エリアが変更後の命令等のコードよりも長い場合には、
修正箇所にそのまま上書きし、余ったエリアはノーオペ
レーション命令(NOP)等で潰す。
【0007】修正しようとするエリアが変更する命令等
のコードよりも短い場合には、予め確保してあるパッチ
エリアを使用してパッチ修正を行う。
のコードよりも短い場合には、予め確保してあるパッチ
エリアを使用してパッチ修正を行う。
【0008】また、パッチエリアが不足するか、初めか
ら確保されていない場合には、パッチ修正は行えないの
で、ソースプログラムを修正し、アセンブル,リンクを
やり直す。なお、この場合には修正前と各コードのアド
レスが変わるため、アドレス参照用のアセンブルリスト
の再出力が必要となる。
ら確保されていない場合には、パッチ修正は行えないの
で、ソースプログラムを修正し、アセンブル,リンクを
やり直す。なお、この場合には修正前と各コードのアド
レスが変わるため、アドレス参照用のアセンブルリスト
の再出力が必要となる。
【0009】
【発明が解決しようとする課題】従来のプログラムパッ
チ修正方式は上述したようにして行われていたため、次
のような欠点が指摘されていた。
チ修正方式は上述したようにして行われていたため、次
のような欠点が指摘されていた。
【0010】利用者は修正しようとする命令等をマシ
ン語のコードに翻訳してツールに入力しなければならな
いため、翻訳の作業が煩雑で時間がかかり、迅速な修正
が行えない。
ン語のコードに翻訳してツールに入力しなければならな
いため、翻訳の作業が煩雑で時間がかかり、迅速な修正
が行えない。
【0011】マシン語への翻訳に際してミスが起こり
やすく、異常動作を引き起こす危険がある。
やすく、異常動作を引き起こす危険がある。
【0012】パッチエリアが不足するか、初めから確
保されていない場合には、パッチ修正が行えず、ソース
プログラム修正,アセンブル,リンク,アセンブルリス
ト出力等のために迅速な修正が行えない。
保されていない場合には、パッチ修正が行えず、ソース
プログラム修正,アセンブル,リンク,アセンブルリス
ト出力等のために迅速な修正が行えない。
【0013】本発明は上記の点に鑑み提案されたもので
あり、その目的とするところは、容易かつ迅速に正確な
修正が行えるプログラムパッチ修正方式を提供すること
にある。
あり、その目的とするところは、容易かつ迅速に正確な
修正が行えるプログラムパッチ修正方式を提供すること
にある。
【0014】
【課題を解決するための手段】本発明は上記の目的を達
成するため、修正を行うプログラムのセグメントを選択
させるセグメント選択手段と、更新する命令等をアセン
ブリ言語で入力させ、マシン語のコードに変換するコー
ド部更新命令アセンブル手段と、プログラム上の修正箇
所に修正にかかるコードを上書き可能か否かを判断する
コード部指定アドレス修正可能判別手段と、上書き可能
な場合にプログラム上の変更可能な命令文のエリアに修
正にかかるコードを書き込む更新命令書き込み手段と、
上書き不可能な場合にコード部の修正を行うためのエリ
アを確保するコード部未使用エリア検索手段と、確保し
たエリアに修正にかかるコードを書き込むコード部更新
データ書き込み手段とを備えるようにしている。
成するため、修正を行うプログラムのセグメントを選択
させるセグメント選択手段と、更新する命令等をアセン
ブリ言語で入力させ、マシン語のコードに変換するコー
ド部更新命令アセンブル手段と、プログラム上の修正箇
所に修正にかかるコードを上書き可能か否かを判断する
コード部指定アドレス修正可能判別手段と、上書き可能
な場合にプログラム上の変更可能な命令文のエリアに修
正にかかるコードを書き込む更新命令書き込み手段と、
上書き不可能な場合にコード部の修正を行うためのエリ
アを確保するコード部未使用エリア検索手段と、確保し
たエリアに修正にかかるコードを書き込むコード部更新
データ書き込み手段とを備えるようにしている。
【0015】
【作用】本発明のプログラムパッチ修正方式にあって
は、セグメント選択手段が利用者に修正を行うプログラ
ムのセグメントを選択させ、コード部更新命令アセンブ
ル手段が利用者に更新する命令等をアセンブリ言語で入
力させてマシン語のコードに変換する。次いで、コード
部指定アドレス修正可能判別手段はプログラム上の修正
箇所に修正にかかるコードを上書き可能か否かを判断
し、上書き可能な場合、更新命令書き込み手段はプログ
ラム上の変更可能な命令文のエリアに修正にかかるコー
ドを書き込む。また、上書き不可能な場合、コード部未
使用エリア検索手段はコード部の修正を行うためのエリ
アを確保し、コード部更新データ書き込み手段は確保し
たエリアに修正にかかるコードを書き込む。
は、セグメント選択手段が利用者に修正を行うプログラ
ムのセグメントを選択させ、コード部更新命令アセンブ
ル手段が利用者に更新する命令等をアセンブリ言語で入
力させてマシン語のコードに変換する。次いで、コード
部指定アドレス修正可能判別手段はプログラム上の修正
箇所に修正にかかるコードを上書き可能か否かを判断
し、上書き可能な場合、更新命令書き込み手段はプログ
ラム上の変更可能な命令文のエリアに修正にかかるコー
ドを書き込む。また、上書き不可能な場合、コード部未
使用エリア検索手段はコード部の修正を行うためのエリ
アを確保し、コード部更新データ書き込み手段は確保し
たエリアに修正にかかるコードを書き込む。
【0016】
【実施例】以下、本発明の実施例につき図面を参照して
説明する。
説明する。
【0017】図1は本発明のプログラムパッチ修正方式
を適用したプログラムパッチ修正ツールの一実施例を示
す構成図である。
を適用したプログラムパッチ修正ツールの一実施例を示
す構成図である。
【0018】図1において、本実施例にかかるプログラ
ムパッチ修正ツール1は、セグメント選択手段2とコー
ド部更新命令アセンブル手段3とコード部指定アドレス
修正可能判別手段4と修正方法識別手段5と更新命令書
き込み手段6と変更可能エリア識別手段7とコード部未
使用エリア検索手段8とコード部更新データ書き込み手
段9とから構成されている。各部の機能等の詳細につい
ては、重複を避けるため、以下の動作を通して説明す
る。
ムパッチ修正ツール1は、セグメント選択手段2とコー
ド部更新命令アセンブル手段3とコード部指定アドレス
修正可能判別手段4と修正方法識別手段5と更新命令書
き込み手段6と変更可能エリア識別手段7とコード部未
使用エリア検索手段8とコード部更新データ書き込み手
段9とから構成されている。各部の機能等の詳細につい
ては、重複を避けるため、以下の動作を通して説明す
る。
【0019】以下、図2のフローチャートに沿って上記
の実施例の動作を説明する。
の実施例の動作を説明する。
【0020】先ず、セグメント選択手段2は、利用者に
パッチ修正を行うセグメントを選択させる(ステップS
1)。
パッチ修正を行うセグメントを選択させる(ステップS
1)。
【0021】次いで、コード部更新命令アセンブル手段
3は、利用者に更新する命令等をアセンブリ言語で入力
させる(ステップS2)。
3は、利用者に更新する命令等をアセンブリ言語で入力
させる(ステップS2)。
【0022】コード部更新命令アセンブル手段3は、入
力された命令等に対して文法チェックを行い、文法エラ
ーがなければアセンブルを行ってマシン語に変換し、そ
のコードを記憶しておく(ステップS3)。
力された命令等に対して文法チェックを行い、文法エラ
ーがなければアセンブルを行ってマシン語に変換し、そ
のコードを記憶しておく(ステップS3)。
【0023】次いで、コード部指定アドレス修正可能判
別手段4は、修正を行うアドレスから始まる変更可能な
命令文のエリア長を算出して、既にコード部更新命令ア
センブル手段3でマシン語に変換したコードの長さと比
較し、マシン語に変換したコードの方が長い場合には修
正方法チェック用フラグ(図示せず)をオンの状態にす
る(ステップS4)。
別手段4は、修正を行うアドレスから始まる変更可能な
命令文のエリア長を算出して、既にコード部更新命令ア
センブル手段3でマシン語に変換したコードの長さと比
較し、マシン語に変換したコードの方が長い場合には修
正方法チェック用フラグ(図示せず)をオンの状態にす
る(ステップS4)。
【0024】次いで、修正方法識別手段5は、修正方法
チェック用フラグをチェックし、オンかオフかでその後
の処理を切り分ける(ステップS5)。
チェック用フラグをチェックし、オンかオフかでその後
の処理を切り分ける(ステップS5)。
【0025】修正方法チェック用フラグがオフの状態で
あった場合、更新命令書き込み手段6は、修正するアド
レスのエリアに、既にコード部更新命令アセンブル手段
3でマシン語に変換したコードを書き込む(ステップS
6)。ここで、エリア長が更新するマシン語のコードの
長さと等しくなく長い場合には、余った部分をノーオペ
レーション命令(NOP)に書き換え、エリア長の調整
を行う。
あった場合、更新命令書き込み手段6は、修正するアド
レスのエリアに、既にコード部更新命令アセンブル手段
3でマシン語に変換したコードを書き込む(ステップS
6)。ここで、エリア長が更新するマシン語のコードの
長さと等しくなく長い場合には、余った部分をノーオペ
レーション命令(NOP)に書き換え、エリア長の調整
を行う。
【0026】一方、修正方法チェック用フラグがオンの
状態であった場合、変更可能エリア識別手段7は、次に
説明する所定の処理を行う(ステップS7)。
状態であった場合、変更可能エリア識別手段7は、次に
説明する所定の処理を行う(ステップS7)。
【0027】先ず、コード部指定アドレス修正可能判別
手段4で算出した修正を行うアドレスから始まる変更可
能な命令文のエリア長と、アセンブリ言語のコール命令
をマシン語に変換したコードの長さとを比較する。修正
を行うアドレスからの変更可能な命令文のエリア長がコ
ール命令をマシン語に変換したコードの長さよりも短い
場合は、続く1命令文のエリア長を獲得し、その命令の
コードを記憶しておく。新たに獲得した命令文のエリア
長を加えた長さが、コール命令をマシン語に変換したコ
ードの長さと等しいか長くなるまでこれを繰り返す。
手段4で算出した修正を行うアドレスから始まる変更可
能な命令文のエリア長と、アセンブリ言語のコール命令
をマシン語に変換したコードの長さとを比較する。修正
を行うアドレスからの変更可能な命令文のエリア長がコ
ール命令をマシン語に変換したコードの長さよりも短い
場合は、続く1命令文のエリア長を獲得し、その命令の
コードを記憶しておく。新たに獲得した命令文のエリア
長を加えた長さが、コール命令をマシン語に変換したコ
ードの長さと等しいか長くなるまでこれを繰り返す。
【0028】次いで、コード部未使用エリア検索手段8
は、コード部の修正を行うためのエリア(パッチエリ
ア)を、セグメントの最大値を越えない範囲で検索し、
その検索したエリアのアドレスを参照可能状態にし、記
憶しておく(ステップS8)。
は、コード部の修正を行うためのエリア(パッチエリ
ア)を、セグメントの最大値を越えない範囲で検索し、
その検索したエリアのアドレスを参照可能状態にし、記
憶しておく(ステップS8)。
【0029】次いで、コード部更新データ書き込み手段
9は、次に説明する所定の処理を行う(ステップS
9)。
9は、次に説明する所定の処理を行う(ステップS
9)。
【0030】先ず、プログラム上の修正箇所に、コード
部未使用エリア検索手段8で検索・確保したエリアへの
コール命令のコードを書き込み、余ったエリアはノーオ
ペレーション命令で潰しておく。次いで、コード部未使
用エリア検索手段8で検索・確保したエリアに、マシン
語に変換した修正にかかる命令のコードを書き込む。変
更可能エリア識別手段7で記憶している命令のコード
(修正箇所から追い出されたコード)があれば、続けて
その命令のコードを書き込む。全ての命令のコードを書
き込んだ直後に、アセンブリ言語のリターン命令をマシ
ン語に変換したコードを書き込む。
部未使用エリア検索手段8で検索・確保したエリアへの
コール命令のコードを書き込み、余ったエリアはノーオ
ペレーション命令で潰しておく。次いで、コード部未使
用エリア検索手段8で検索・確保したエリアに、マシン
語に変換した修正にかかる命令のコードを書き込む。変
更可能エリア識別手段7で記憶している命令のコード
(修正箇所から追い出されたコード)があれば、続けて
その命令のコードを書き込む。全ての命令のコードを書
き込んだ直後に、アセンブリ言語のリターン命令をマシ
ン語に変換したコードを書き込む。
【0031】以上の処理を行うことにより、アセンブリ
言語で記述されたソースファイルを更新する場合とほぼ
同程度の操作性でパッチ修正することができる。また、
パッチ修正後もコード部のアドレスは変わらないため、
修正前のアセンブルリストを参照することができ、再度
の出力を行わなくてもよい。
言語で記述されたソースファイルを更新する場合とほぼ
同程度の操作性でパッチ修正することができる。また、
パッチ修正後もコード部のアドレスは変わらないため、
修正前のアセンブルリストを参照することができ、再度
の出力を行わなくてもよい。
【0032】
【発明の効果】以上説明したように、本発明のプログラ
ムパッチ修正方式にあっては、次のような効果がある。
ムパッチ修正方式にあっては、次のような効果がある。
【0033】利用者は修正しようとする命令等をアセ
ンブリ言語で入力することができるため、従来のような
翻訳の作業が不要であり、修正の作業が迅速に行える。
ンブリ言語で入力することができるため、従来のような
翻訳の作業が不要であり、修正の作業が迅速に行える。
【0034】入力したアセンブリ言語の命令等からマ
シン語へ自動的に翻訳が行われるため、人為的なミスが
皆無であり、異常動作を引き起こす危険がない。
シン語へ自動的に翻訳が行われるため、人為的なミスが
皆無であり、異常動作を引き起こす危険がない。
【0035】パッチエリアが不足するか、初めから確
保されていない場合でも、自動的にパッチエリアを確保
するため、ほとんどの場合にパッチ修正で対応すること
ができ、ソースプログラム修正,アセンブル,リンク,
アセンブルリスト出力等を行わなくてよいため、迅速な
修正が行える。
保されていない場合でも、自動的にパッチエリアを確保
するため、ほとんどの場合にパッチ修正で対応すること
ができ、ソースプログラム修正,アセンブル,リンク,
アセンブルリスト出力等を行わなくてよいため、迅速な
修正が行える。
【図1】本発明のプログラムパッチ修正方式を適用した
プログラムパッチ修正ツールの一実施例を示す構成図で
ある。
プログラムパッチ修正ツールの一実施例を示す構成図で
ある。
【図2】実施例の処理を示すフローチャートである。
【図3】従来のプログラムパッチ修正の処理を示すフロ
ーチャートである。
ーチャートである。
1……プログラムパッチ修正ツール 2……セグメント選択手段 3……コード部更新命令アセンブル手段 4……コード部指定アドレス修正可能判別手段 5……修正方法識別手段 6……更新命令書き込み手段 7……変更可能エリア識別手段 8……コード部未使用エリア検索手段 9……コード部更新データ書き込み手段
Claims (3)
- 【請求項1】 修正を行うプログラムのセグメントを選
択させるセグメント選択手段と、 更新する命令等をアセンブリ言語で入力させ、マシン語
のコードに変換するコード部更新命令アセンブル手段
と、 プログラム上の修正箇所に修正にかかるコードを上書き
可能か否かを判断するコード部指定アドレス修正可能判
別手段と、 上書き可能な場合にプログラム上の変更可能な命令文の
エリアに修正にかかるコードを書き込む更新命令書き込
み手段と、 上書き不可能な場合にコード部の修正を行うためのエリ
アを確保するコード部未使用エリア検索手段と、 確保したエリアに修正にかかるコードを書き込むコード
部更新データ書き込み手段とを備えたことを特徴とする
プログラムパッチ修正方式。 - 【請求項2】 コード部指定アドレス修正可能判別手段
はプログラム上の変更可能な命令文のエリア長と修正に
かかるコードの長さとを比較して上書き可能か否かを判
断し、 コード部更新データ書き込み手段はプログラム上の修正
箇所にコード部の修正を行うためのエリアへのコール命
令のコードを書き込むと共に、コード部の修正を行うた
めのエリアに修正にかかるコードとプログラム上の修正
箇所から追い出されたコードとリターン命令のコードと
を書き込むことを特徴とする請求項1記載のプログラム
パッチ修正方式。 - 【請求項3】 コード部指定アドレス修正可能判別手段
が判別結果を格納する修正方法チェック用フラグと、 この修正方法チェック用フラグの値によって後の処理を
切り分ける修正方法識別手段と、 上書き不可能な場合にプログラム上の修正箇所にコール
命令のコードを書き込むエリアを確保する変更可能エリ
ア識別手段とを備えたことを特徴とする請求項1または
2記載のプログラムパッチ修正方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP35973591A JPH05181664A (ja) | 1991-12-29 | 1991-12-29 | プログラムパッチ修正方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP35973591A JPH05181664A (ja) | 1991-12-29 | 1991-12-29 | プログラムパッチ修正方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH05181664A true JPH05181664A (ja) | 1993-07-23 |
Family
ID=18466037
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP35973591A Pending JPH05181664A (ja) | 1991-12-29 | 1991-12-29 | プログラムパッチ修正方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH05181664A (ja) |
-
1991
- 1991-12-29 JP JP35973591A patent/JPH05181664A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH06242990A (ja) | メモリパッチ装置 | |
| US5613125A (en) | Method and system for selectively defining hardware parameters in an executable operating system program | |
| JPH05181664A (ja) | プログラムパッチ修正方式 | |
| US5481692A (en) | Computing system for data processing apparatus | |
| JP3507728B2 (ja) | メモリ削減方法および装置 | |
| JPH05120067A (ja) | プログラムパツチ方式 | |
| JPH05173844A (ja) | コーディングミス修正方式 | |
| JPH1124940A (ja) | エミュレーション処理方式 | |
| JP3329476B2 (ja) | かな漢字変換装置 | |
| JPS58139254A (ja) | プログラマブル・コントロ−ラ | |
| JP2977951B2 (ja) | 演算装置 | |
| JP3476338B2 (ja) | 情報処理装置および情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
| JP2001125793A (ja) | コンパイラシステム及びコンパイル方法並びに記録媒体 | |
| JPH11327887A (ja) | 自動部品化機能付コンパイラシステムおよび記録媒体 | |
| JP2540940B2 (ja) | マルチウインドウ編集管理方法 | |
| JPS63140339A (ja) | バ−ジヨン識別予約語管理方式 | |
| JP3342028B2 (ja) | かな漢字変換装置 | |
| JP2845694B2 (ja) | データ処理装置 | |
| JPH05108371A (ja) | 言語処理プログラム作成装置 | |
| JPH05216684A (ja) | プログラム実行装置および実行方法 | |
| JPH0816382A (ja) | 誤修正行検索装置 | |
| JPH05313871A (ja) | 複数プログラム編集装置 | |
| JPH0816381A (ja) | ソフトウェア改造支援装置および方法 | |
| JPH06266562A (ja) | オブジェクト指向言語処理システムにおける目的コードサイズ最適化方式 | |
| JPH08314724A (ja) | オブジェクト指向プログラム編集装置 |