JPH0744372A - コンパイルドコードオブジェクトのパッチ処理方式 - Google Patents

コンパイルドコードオブジェクトのパッチ処理方式

Info

Publication number
JPH0744372A
JPH0744372A JP5208568A JP20856893A JPH0744372A JP H0744372 A JPH0744372 A JP H0744372A JP 5208568 A JP5208568 A JP 5208568A JP 20856893 A JP20856893 A JP 20856893A JP H0744372 A JPH0744372 A JP H0744372A
Authority
JP
Japan
Prior art keywords
area
patch
compiled code
instruction
correction
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.)
Granted
Application number
JP5208568A
Other languages
English (en)
Other versions
JP2864955B2 (ja
Inventor
Kazuko Kono
和子 河野
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 JP5208568A priority Critical patent/JP2864955B2/ja
Publication of JPH0744372A publication Critical patent/JPH0744372A/ja
Application granted granted Critical
Publication of JP2864955B2 publication Critical patent/JP2864955B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 コンパイルドコードオブジェクトの修正エリ
アがパッチイメージ及び分岐命令のサイズより小さくて
もパッチによる修正を可能にする。 【構成】 コンパイラ2はソースプログラムの翻訳時
に、コンパイルドコードオブジェクト内の機械語命令列
に含まれる分岐命令の分岐先の一覧を示すラベル情報を
ファイル11に出力する。判定部61は、修正情報13とパッ
チイメージ14を入力し、修正エリアのサイズがパッチイ
メージ及び分岐命令のサイズより小さい場合に破壊修正
手段64を起動する。手段64は、修正エリアの直前または
直後の領域であって前記ラベル情報によって分岐先とな
っていない領域を破壊エリアに決定し、修正エリア及び
破壊エリアから構成される領域にパッチエリアへ分岐す
る命令を挿入すると共に、パッチエリアのその分岐先に
パッチイメージおよび前記破壊エリアに存在した機械語
命令並びに前記領域の直後に分岐する命令を格納する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、インタプリタとコンパ
イラとを備え、コンパイラが生成出力したコンパイルド
コードオブジェクトをインタプリタが記憶領域にロード
しその実行管理を行う言語処理システムに関し、特にコ
ンパイルドコードオブジェクトのパッチ処理方式に関す
る。
【0002】
【従来の技術】言語処理システムの一種に、ソースプロ
グラムやデータオブジェクトを解釈実行するインタプリ
タと実行効率を向上させるためにソースプログラムを翻
訳するコンパイラとから構成され、コンパイラが関数単
位にソースプログラムをコンパイルして出力する機械語
命令列を含むコンパイルドコードオブジェクトを、イン
タプリタが記憶領域にロードして実行管理する言語処理
システムがある。なお、このような言語処理システムを
記載した文献としては、例えば、特願昭63−3108
27号添付明細書および図面がある。
【0003】ところで、コンパイルして生成された既に
存在するコンパイルドコードオブジェクトが一部不正な
機械語命令列を含む場合、所期の機能を実現することが
できないので、その修正が必要となる。
【0004】ここで、一般にコンパイルユニットの修正
方法としては、ソースプログラムを修正してこれを再コ
ンパイルする方法と、例えば特開昭63−10239号
公報,特開平1−302428号公報に見られるように
所謂パッチによってコンパイルユニット中の機械語を直
接に修正する方法とがあるが、この種の言語処理システ
ムでは、コンパイルドコードオブジェクトがそのオペレ
ーティング・システム上で定められたコンパイルユニッ
ト形式を有していないため、コンパイルユニットに対す
る既存のパッチシステムは使用することができない。
【0005】そこで、本発明者は先の出願(特願平4−
89727号,特願平4−89728号)において、こ
の種の言語処理システムに好適な以下のようなコンパイ
ルドコードオブジェクトのパッチ処理方式を提案してい
る。
【0006】コンパイルドコードオブジェクトを記憶領
域にロードするインタプリタ内のローダが、別途入力さ
れる修正情報およびパッチイメージ(修正に使用する機
械語命令列)によって修正箇所および修正方法を決定
し、修正エリアのサイズがパッチサイズ以上であれば短
命令列修正方法を適用して、修正エリアの元の機械語命
令列をパッチイメージおよび必要に応じてNOP命令で
置換し、修正エリアのサイズがパッチサイズ未満であれ
ば長命令列修正方法を適用して、修正エリアの先頭をパ
ッチエリアに分岐する命令に置換し、パッチエリアのそ
の分岐先にはパッチイメージおよび修正エリアの直後に
分岐する命令を設定する方式。
【0007】
【発明が解決しようとする課題】上記提案のコンパイル
ドコードオブジェクトのパッチ処理方式によって、修正
箇所の大部分をパッチによって修正することができるよ
うになったが、未だ解決すべき課題が残されている。そ
れは、修正エリアのサイズがパッチイメージのサイズよ
り小さく且つ分岐命令のサイズより小さい場合である。
即ち、修正エリアのサイズがパッチイメージのサイズよ
り小さい場合、パッチエリアに分岐してパッチエリアの
機械語命令列を実行させた後に修正エリアの直後に戻る
ようにしなければならないが、その為には修正エリアに
パッチエリアへの分岐命令を挿入する必要があり、修正
エリアが分岐命令のサイズより小さいと分岐命令自体を
挿入できず、そのままでは適用が困難になるからであ
る。
【0008】本発明はこのような問題点を解決したもの
で、その目的は、修正エリアのサイズがパッチイメージ
のサイズより小さく且つ分岐命令のサイズより小さい場
合であっても、利用者は、他の修正エリアと同様に、修
正エリアの機械語命令列と置換すべきパッチイメージお
よびその修正箇所を示す修正情報を作成して入力するだ
けでパッチによる修正が行えるようにしたコンパイルド
コードオブジェクトのパッチ処理方式を提供することに
ある。
【0009】
【課題を解決するための手段】本発明は上記の目的を達
成するために、ソースプログラムを翻訳してコンパイル
ドコードオブジェクトを出力するコンパイラと該コンパ
イラが出力したコンパイルドコードオブジェクトを記憶
領域にロードして解釈実行するインタプリタとを含む言
語処理システムにおけるコンパイルドコードオブジェク
トのパッチ処理方式において、前記コンパイラに、前記
ソースプログラムの翻訳時に、前記コンパイルドコード
オブジェクト内の機械語命令列に含まれる分岐命令の分
岐先の一覧を示すラベル情報を含むパッチ補助情報を出
力するパッチ補助情報生成手段を備え、前記インタプリ
タ内のローダに、修正箇所を示す修正情報とパッチイメ
ージとを入力し、修正情報で示される修正エリアのサイ
ズがその修正に使用するパッチイメージのサイズより小
さく且つ分岐命令のサイズより小さい場合に、修正エリ
アの直前の領域または直後の領域であって前記ラベル情
報によって分岐先となっていない領域を破壊エリアに決
定し、修正エリアおよび破壊エリアから構成される領域
にパッチエリアへ分岐する命令を挿入すると共にパッチ
エリアのその分岐先にパッチイメージおよび前記破壊エ
リアに存在した機械語命令ならびに修正エリアおよび破
壊エリアから構成される前記領域の直後に分岐する命令
を格納する破壊修正手段を備えている。
【0010】
【作用】本発明のコンパイルドコードオブジェクトのパ
ッチ処理方式においては、コンパイラがソースプログラ
ムを翻訳してコンパイルドコードオブジェクトを生成す
る際に、コンパイラに設けられたパッチ補助情報生成手
段が、コンパイルドコードオブジェクト内の機械語命令
列に含まれる分岐命令の分岐先の一覧を示すラベル情報
を含むパッチ補助情報を出力し、利用者が、修正箇所を
示す修正情報およびパッチイメージを入力してロードを
指示すると、ローダの破壊修正手段が、修正情報で示さ
れる修正エリアのサイズがその修正に使用するパッチイ
メージのサイズより小さく且つ分岐命令のサイズより小
さい場合に、修正エリアの直前の領域または直後の領域
であって前記ラベル情報によって分岐先となっていない
領域を破壊エリアに決定し、修正エリアおよび破壊エリ
アから構成される領域にパッチエリアへ分岐する命令を
挿入すると共にパッチエリアのその分岐先にパッチイメ
ージおよび前記破壊エリアに存在した機械語命令ならび
に修正エリアおよび破壊エリアから構成される前記領域
の直後に分岐する命令を格納する。
【0011】
【実施例】次に本発明の実施例について図面を参照して
詳細に説明する。
【0012】図1を参照すると、本発明を適用した言語
処理システム1は、コンパイラ2とインタプリタ3と記
憶領域4とを含み、コンパイルドコードオブジェクトフ
ァイル9,修正済コンパイルドコードオブジェクトファ
イル10,パッチ補助情報ファイル11およびパッチ生
成手段12が接続されている。
【0013】コンパイラ2は、図示しないソースプログ
ラムを翻訳することによりコンパイルドコードオブジェ
クトを生成出力する。生成出力されるコンパイルドコー
ドオブジェクトには、機械語命令列以外に、そのサイズ
やコンパイルした関数名などを含むヘッダ,実行時に参
照するデータを管理するデータ管理テーブルなどの情報
が含まれている。この生成されたコンパイルドコードオ
ブジェクトは本実施例の場合にはコンパイルドコードオ
ブジェクトファイル9に格納されている。
【0014】コンパイラ2はパッチ補助情報生成手段2
1を有しており、コンパイルドコードオブジェクトの生
成と同時に、このパッチ補助情報生成手段21によりパ
ッチ補助情報を生成してパッチ補助情報ファイル11に
出力する。このパッチ補助情報には以下のような情報が
含まれる。
【0015】○ラベル情報;生成されたコンパイルドコ
ードオブジェクト内の機械語命令列に含まれる分岐命令
の分岐先の一覧。各分岐先は機械語命令列内相対位置で
表現される。 ○リスト情報;生成されたコンパイルドコードオブジェ
クト内の機械語命令(16進表現)毎に、それに対応す
るニーモニック(機械語命令をプログラマが理解できる
形式にしたもの)と機械語命令列内相対位置(相対アド
レス)を対にしたもの。
【0016】インタプリタ3はコンパイルドコードオブ
ジェクトを記憶領域4にロードするローダ5を有し、こ
のローダ5には機械語修正部6とデータ管理テーブル修
正手段7と修正ファイルロード手段8とが設けられてい
る。また、機械語修正部6には判定部61,短命令列修
正手段62,長命令列修正手段63および破壊修正手段
64が設けられている。
【0017】パッチ生成手段12は、修正対象のコンパ
イルドコードオブジェクトに対して修正のために使用す
る機械語命令列であるパッチイメージ14と、修正対象
のコンパイルドコードオブジェクトの修正位置とその修
正位置に適用すべきパッチイメージ14との関係を示す
修正情報13とを作成し、インタプリタ3に入力するた
めの手段である。また、作成したパッチイメージ14中
に新たなデータを参照する機械語命令を含めた場合、そ
の新たなデータを追加データとして含む追加データ情報
15を作成するためにも使用される。このパッチ生成手
段12は、例えばパーソナルコンピュータ等で構成され
る。
【0018】言語処理システム1は、コンパイラ2が出
力したコンパイルドコードオブジェクトをインタプリタ
3が記憶領域4にロードして解釈実行することで所定の
機能を達成しているが、既に存在するコンパイルドコー
ドオブジェクトの一部に不正な機械語命令が含まれてい
ると所期の機能を達成することができない。そこで、コ
ンパイルドコードオブジェクトを正しい機械語命令で置
き換えるパッチ処理を施すわけであるが、本実施例で
は、このパッチ処理を以下のように実施する。
【0019】先ず、利用者はパッチ生成手段12にて修
正情報13とパッチイメージ14と必要に応じて追加デ
ータ情報15とを作成する。この際、修正対象となるフ
ァイル9中のコンパイルドコードオブジェクトに対して
コンパイラ2のパッチ補助情報生成手段21によりファ
イル11に出力されているパッチ補助情報を、パッチ生
成手段12で読み込んで表示装置に表示するか或いはプ
リントアウトすることにより、修正箇所となる機械語命
令やその位置等を容易に確認することができる。本実施
例では、説明の便宜上、以下のような3つの修正にかか
るパッチイメージ14および修正情報13を作成したも
のとする。
【0020】(1)第1の修正;図2に示すように、コ
ンパイルドコードオブジェクトの機械語命令列の100
バイト目から116バイト境界までの16バイトの機械
語命令列の部分を修正するための、機械語命令M11,
M12から成る合計8バイトのパッチイメージ14−1
と、修正開始位置が100バイト目,修正終了位置が1
16バイト目,適用パッチイメージが14−1であるこ
とを示す修正情報13−1。
【0021】(2)第2の修正;図3に示すように、コ
ンパイルドコードオブジェクトの機械語命令列の200
バイト目から208バイト境界までの8バイトの機械語
命令列の部分を修正するための、機械語命令M21〜M
24から成る合計16バイトのパッチイメージ14−2
と、修正開始位置が200バイト目,修正終了位置が2
08バイト目,適用パッチイメージが14−2であるこ
とを示す修正情報13−2。
【0022】(3)第3の修正;図4に示すように、コ
ンパイルドコードオブジェクトの機械語命令列の300
バイト目から304バイト境界までの4バイトの機械語
命令列の部分を修正するための、機械語命令M31〜M
35から成る合計20バイトのパッチイメージ14−3
と、修正開始位置が300バイト目,修正終了位置が3
04バイト目,適用パッチイメージが14−3であるこ
とを示す修正情報13−3。
【0023】以上のようなパッチイメージ14−1〜1
4−3および修正情報13−1〜13−3がパッチ生成
手段12から入力されてインタプリタ3に対しコンパイ
ルドコードオブジェクトのロードが指示されると、ロー
ダ5は、機械語修正部6,データ管理テーブル修正手段
7,修正ファイルロード手段8をこの順に呼び出して、
以下のような処理を行う。
【0024】先ず機械語修正部6の判定部61は、ファ
イル9から修正対象のコンパイルドコードオブジェクト
の内容をその先頭より最小の機械語命令サイズ(例えば
4バイト)ずつ読み込み、この4バイトのアドレスが修
正情報13における修正開始位置に相当する部分である
か否かを判定し、修正開始位置に相当する部分でない場
合には、その内容をそのまま修正済コンパイルドコード
オブジェクトファイル10にコピーする。
【0025】読み込んだ4バイトが修正情報13におけ
る修正開始位置に相当する部分であった場合、その修正
情報13で指示されるパッチイメージ14の機械語命令
列のサイズと修正エリアのサイズと分岐命令のサイズ
(本実施例では8バイトとする)との大小関係を比較
し、その結果に応じて短命令列修正手段62,長命令列
修正手段63,破壊修正手段64の何れを呼び出すかを
決定する。
【0026】即ち、判定部61は、修正エリアのサイズ
がパッチイメージ14の機械語命令列のサイズ以上であ
れば、短命令列修正手段62を呼び出す。従って、図2
に示した第1の修正の場合には短命令列修正手段62が
呼び出される。
【0027】また、判定部61は、修正エリアのサイズ
がパッチイメージ14の機械語命令列のサイズ未満であ
り且つ分岐命令のサイズ以上であれば、長命令列修正手
段63を呼び出す。従って、図3に示した第2の修正の
場合には長命令列修正手段63が呼び出される。
【0028】更に、判定部61はそれ以外の場合、つま
り修正エリアのサイズがパッチイメージ14の機械語命
令列のサイズおよび分岐命令のサイズ未満であれば、破
壊修正手段64を呼び出す。従って、図4に示した第3
の修正の場合には破壊修正手段64が呼び出される。
【0029】短命令列修正手段62は呼び出されると、
図2に示すように、修正情報13−1の修正開始位置で
ある100バイト目以降の修正エリアE1の内容とし
て、元の機械語命令の代わりに、修正情報13−1で示
されるパッチイメージ14−1の機械語命令M11,M
12を出力する。このとき、修正エリアE1のサイズが
パッチイメージ14−1のサイズより大きいので、残り
の修正エリア部分には何もしない命令(NOP命令)を
図2に示すように出力する。
【0030】長命令列修正手段63は呼び出されると、
図3に示すように、先ず、修正済コンパイルドコードオ
ブジェクトファイル10中に作成したパッチエリア10
0のうちの今回使用するエリアの先頭に分岐する分岐命
令を、元の機械語命令の代わりに、修正エリアE2の先
頭に出力する。
【0031】次に、パッチエリア100のうちの今回使
用するエリアの先頭以降のエリアに、修正情報13−2
で示されるパッチイメージ14−2を構成する機械語命
令M21〜M24を図3に示すように出力し、その直後
の領域に、修正エリアE2の直後つまり修正すべき機械
語命令列の次の命令へ分岐する分岐命令を出力する。
【0032】破壊修正手段64は呼び出されると、先
ず、パッチ補助情報ファイル11を参照して、修正情報
13−3で示される修正エリアE3直後の(分岐命令サ
イズ−修正エリアE3サイズ)分の領域に、他の箇所か
ら分岐してくる分岐先が存在するか否かを調べ、存在し
なければ修正エリアE3直後の上記領域を破壊エリアに
決定する。また、その領域に分岐先が存在すれば、修正
エリアE3直前の(分岐命令サイズ−修正エリアE3サ
イズ)分の領域に、他の箇所から分岐してくる分岐先が
存在するか否かを調べ、存在しなければ修正エリアE3
直前の上記領域を破壊エリアに決定する。
【0033】なお、修正エリアE3の直前および直後の
領域が共に分岐先となっている場合、破壊修正手段64
は、例えば、パッチ生成手段12の表示装置に当該修正
エリアE3の前後に分岐先がある為、パッチ修正できな
い旨のメッセージを表示し、ローダ5はロード処理を中
断する。
【0034】図4の場合、修正エリアE3の直前の4バ
イトの領域が破壊エリアに決定された例を示しており、
破壊修正手段64は、この破壊エリアに元設定されてい
た機械語命令を一時退避し、その破壊エリアと修正エリ
アE3との領域に、パッチエリア100のうちの今回使
用するエリアの先頭に分岐する分岐命令を図4に示す如
く出力する。
【0035】次に、パッチエリア100のうちの今回使
用するエリアの先頭以降のエリアに、上記一時退避して
おいた元の機械語命令と修正情報13−3で示されるパ
ッチイメージ14−3を構成する機械語命令M31〜M
35とを図4に示すように出力し、その直後の領域に、
修正エリアE1の直後つまり修正すべき機械語命令列の
次の命令へ分岐する分岐命令を図4に示すように出力す
る。
【0036】機械語修正部6の判定部61は、コンパイ
ルドコードオブジェクトファイル9に格納されたコンパ
イルドコードオブジェクトの全内容について上記の処理
を終えると、制御をデータ管理テーブル修正手段7に移
す。
【0037】以下、データ管理テーブル修正手段7の処
理を説明する。
【0038】一般にこの種の言語処理システム1では、
記憶領域4上に図1および図5に示すようにコンパイル
ドコードオブジェクト40と共にその機械語命令によっ
て参照されるデータ41が格納される。なお、図1およ
び図5中、42はヘッダ、43は機械語命令列、44は
実行時に参照するデータを管理するデータ管理テーブ
ル、45はその1つのエントリである。ここで、記憶領
域4上のデータ41のアドレスはコンパイル時には未定
であり、ロード時に確定する。そのため、コンパイラ2
は、ソースプログラムのコンパイル時には、データ41
を参照する機械語命令として、データ管理テーブル44
の或るエントリ(図では3番目のエントリ)45を経由
してデータ41を参照するような構造の機械語命令を生
成し、インタプリタ3に対して、データ管理テーブル4
4のそのエントリ45にデータ41のアドレスを設定す
ることを依頼する情報をコンパイルドコードオブジェク
トファイル内に生成しておく。インタプリタ3はコンパ
イルドコードオブジェクト40のロード時、その情報に
従って、データ41の確定したアドレスをデータ管理テ
ーブル44の3番目のエントリ45に設定する。このよ
うにすることにより、インタプリタ3の解釈実行に際し
使用されるベースレジスタRがコンパイルドコードオブ
ジェクト40の先頭をポイントし、ヘッダ42+機械語
命令列43のサイズをαバイトとすると、ベースレジス
タRからの相対位置が(αバイト+3エントリ目)とな
るエントリ45に格納されているアドレスが、データ4
1を指すポインタデータとなり、それを使用してデータ
41を参照することができる。
【0039】さて、修正のために使用した上述のパッチ
イメージ14−1〜14−3中の機械語命令が元々存在
するデータを参照するものに過ぎなかった場合は、デー
タ管理テーブル44を修正する必要はないが、新たなデ
ータを参照する機械語命令を含めた場合、データ管理テ
ーブル44にそのデータ用のエントリを作る必要があ
る。
【0040】図1のデータ管理テーブル修正手段7はこ
のような為に設けられており、追加データ情報15を入
力し、この追加データ情報15で示される追加データを
機械語命令から参照されるデータとして修正済コンパイ
ルドコードオブジェクトファイル10に格納すると共
に、修正済コンパイルドコードオブジェクト10中のデ
ータ管理テーブルに、そのデータ用のエントリを追加
し、且つ、インタプリタ3に対してそのエントリに上記
データのアドレスを設定するよう依頼する情報をファイ
ル10内に追加する処理を行う。ここで、複数のデータ
が追加される場合、各データ毎にデータ管理テーブルに
エントリを順次割り当て、それらのエントリにそれらの
データのアドレスを設定するよう依頼する情報をファイ
ル10内に追加する。
【0041】以上のような機械語修正部6およびデータ
管理テーブル修正手段7の処理が完了すると、修正ファ
イルロード手段8が、修正済コンパイルドコードオブジ
ェクトファイル10の内容を入力して、記憶領域4にコ
ンパイルドコードオブジェクト40,データ41および
パッチエリア100をロードする。このとき、前述した
ようにデータ41のアドレスが確定するので、コンパイ
ラ2およびデータ管理テーブル修正手段7によってファ
イル10に出力されている依頼情報に従って、データ管
理テーブル44の各エントリに各データのアドレスを設
定する。
【0042】
【発明の効果】以上説明したように本発明のコンパイル
ドコードオブジェクトのパッチ処理方式によれば、以下
のような効果を得ることができる。
【0043】修正エリアのサイズがパッチイメージのサ
イズより小さく且つ分岐命令のサイズより小さい場合で
あっても、パッチによりコンパイルドコードオブジェク
トを修正することができる。
【0044】破壊エリアが他の機械語命令からの分岐先
である場合、それをパッチエリアに移すと、分岐元の命
令を修正する必要があるため、破壊エリアとしては分岐
先になっていないエリアを使うことが望ましいが、本発
明では、コンパイラのパッチ補助情報生成手段がコンパ
イルドコードオブジェクト内の機械語命令列に含まれる
分岐命令の分岐先の一覧であるラベル情報を生成し、破
壊修正手段がそれを参照して分岐先でないエリアを破壊
エリアに決定するため、利用者は、破壊エリアを事前に
考慮する必要がなく、他の修正エリアと同様に、修正エ
リアの機械語命令列と置換すべきパッチイメージおよび
その修正箇所を示す修正情報を作成して入力するだけで
パッチによる修正が行える。
【0045】データ管理テーブル修正手段および修正フ
ァイルロード手段を備えたことにより、新たなデータを
参照する機械語命令をパッチイメージ中に含めた際に必
要となるデータ管理テーブルの修正も自動的に実施する
ことができる。
【0046】ラベル情報以外にコンパイルドコードオブ
ジェクト内の各機械語命令のニーモニックとその機械語
命令内相対位置とのリスト情報を含むパッチ補助情報を
出力する構成としたことにより、これらの情報を表示す
るか或いはプリントアウトすることにより、利用者は修
正すべき機械語命令やその位置等を容易に把握すること
ができ、パッチイメージや修正情報の作成が容易にな
る。
【図面の簡単な説明】
【図1】本発明の一実施例の構成図である。
【図2】短命令列修正手段によるパッチ処理の説明図で
ある。
【図3】長命令列修正手段によるパッチ処理の説明図で
ある。
【図4】破壊修正手段によるパッチ処理の説明図であ
る。
【図5】データ管理テーブルの説明図である。
【符号の説明】
1…言語処理システム 2…コンパイラ 21…パッチ補助情報生成手段 3…インタプリタ 4…記憶領域 40…コンパイルドコードオブジェクト 41…データ 42…ヘッダ 43…機械語命令列 44…データ管理テーブル 45…エントリ 5…ローダ 6…機械語修正部 61…判定部 62…短命令列修正手段 63…長命令列修正手段 64…破壊修正手段 7…データ管理テーブル修正手段 8…修正ファイルロード手段 9…修正対象となるコンパイルドコードオブジェクトフ
ァイル 10…修正済コンパイルドコードオブジェクトファイル 11…パッチ補助情報ファイル 12…パッチ生成手段 13…修正情報 14…パッチイメージ 15…追加データ情報 100…パッチエリア

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムを翻訳してコンパイル
    ドコードオブジェクトを出力するコンパイラと該コンパ
    イラが出力したコンパイルドコードオブジェクトを記憶
    領域にロードして解釈実行するインタプリタとを含む言
    語処理システムにおけるコンパイルドコードオブジェク
    トのパッチ処理方式において、 前記コンパイラに、 前記ソースプログラムの翻訳時に、前記コンパイルドコ
    ードオブジェクト内の機械語命令列に含まれる分岐命令
    の分岐先の一覧を示すラベル情報を含むパッチ補助情報
    を出力するパッチ補助情報生成手段を備え、 前記インタプリタ内のローダに、 修正箇所を示す修正情報とパッチイメージとを入力し、
    修正情報で示される修正エリアのサイズがその修正に使
    用するパッチイメージのサイズより小さく且つ分岐命令
    のサイズより小さい場合に、修正エリアの直前の領域ま
    たは直後の領域であって前記ラベル情報によって分岐先
    となっていない領域を破壊エリアに決定し、修正エリア
    および破壊エリアから構成される領域にパッチエリアへ
    分岐する命令を挿入すると共にパッチエリアのその分岐
    先にパッチイメージおよび前記破壊エリアに存在した機
    械語命令ならびに修正エリアおよび破壊エリアから構成
    される前記領域の直後に分岐する命令を格納する破壊修
    正手段を備えることを特徴とするコンパイルドコードオ
    ブジェクトのパッチ処理方式。
  2. 【請求項2】 前記ローダに、 パッチイメージ中の機械語命令によって参照されるデー
    タを修正後のコンパイルドコードオブジェクトに追加す
    ると共に、コンパイルドコードオブジェクト中のデータ
    管理テーブルにそのデータのアドレスを格納するための
    エントリを追加し、且つ、そのエントリに前記データの
    アドレスを設定する旨を指示する指示情報を修正後のコ
    ンパイルドコードオブジェクトに付加するデータ管理テ
    ーブル修正手段と、 修正後のコンパイルドコードオブジェクトのロード時
    に、前記指示情報に従って、前記データの確定したアド
    レスを前記データ管理テーブル中のエントリに設定する
    修正ファイルロード手段とを備えることを特徴とする請
    求項1記載のコンパイルドコードオブジェクトのパッチ
    処理方式。
  3. 【請求項3】 前記パッチ補助情報生成手段は、前記ラ
    ベル情報およびコンパイルドコードオブジェクト内の各
    機械語命令のニーモニックとその機械語命令列内相対位
    置とのリスト情報を含むパッチ補助情報を出力する構成
    を有する請求項2記載のコンパイルドコードオブジェク
    トのパッチ処理方式。
JP5208568A 1993-07-30 1993-07-30 コンパイルドコードオブジェクトのパッチ処理方式 Expired - Lifetime JP2864955B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5208568A JP2864955B2 (ja) 1993-07-30 1993-07-30 コンパイルドコードオブジェクトのパッチ処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5208568A JP2864955B2 (ja) 1993-07-30 1993-07-30 コンパイルドコードオブジェクトのパッチ処理方式

Publications (2)

Publication Number Publication Date
JPH0744372A true JPH0744372A (ja) 1995-02-14
JP2864955B2 JP2864955B2 (ja) 1999-03-08

Family

ID=16558342

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5208568A Expired - Lifetime JP2864955B2 (ja) 1993-07-30 1993-07-30 コンパイルドコードオブジェクトのパッチ処理方式

Country Status (1)

Country Link
JP (1) JP2864955B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9928045B2 (en) 2015-08-24 2018-03-27 Fujitsu Limited Information processing apparatus, compile method and non-transitory recording medium storing compile program

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02156332A (ja) * 1988-12-08 1990-06-15 Nec Corp プロセス間共有コード管理方式

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02156332A (ja) * 1988-12-08 1990-06-15 Nec Corp プロセス間共有コード管理方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9928045B2 (en) 2015-08-24 2018-03-27 Fujitsu Limited Information processing apparatus, compile method and non-transitory recording medium storing compile program

Also Published As

Publication number Publication date
JP2864955B2 (ja) 1999-03-08

Similar Documents

Publication Publication Date Title
US6898788B2 (en) System for modifying the functionality of compiled computer code at run-time
US5170465A (en) Incremental-scanning compiler for source-code development system
US5313387A (en) Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers
US5182806A (en) Incremental compiler for source-code development system
US7793270B2 (en) Method and apparatus for performing incremental validation of program code conversion
JP2666847B2 (ja) 異種言語間連絡方式
JPH11242597A (ja) Javaバイトコードデータのフローグラフの生成方法
US5301327A (en) Virtual memory management for source-code development system
US20040015913A1 (en) Method for fast compilation of preverified JAVA TM bytecode to high quality native machine code
EP0406028A2 (en) Incremental compiler for source code development system
JPH0744372A (ja) コンパイルドコードオブジェクトのパッチ処理方式
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
KR900006667B1 (ko) 부분적 프로그램 결합 시스템
EP1183601A2 (en) Exception handling method and apparatus for use in program code conversion
US7353163B2 (en) Exception handling method and apparatus for use in program code conversion
JPS5922140A (ja) 対話型コンパイル方式
JP2000122876A (ja) 情報処理装置
JP3889227B2 (ja) プログラム実行装置、プログラム実行方法、記録媒体、及び制御プログラム
JP3596570B2 (ja) クラスの主記憶装置への配置方法
JP2002259121A (ja) ソースラインデバッグ装置
JP2607975B2 (ja) デバック方式
JP3424596B2 (ja) シンボル参照情報のキャッシュ方法ならびに装置
JPH05257739A (ja) コンパイルドコードオブジェクトのパッチ処理方式
JP5109808B2 (ja) 追加実行可能情報生成装置、情報処理装置、及びプログラム
JP2607976B2 (ja) デバック方式