JPH04321135A - コンパイラのオブジェクト修正指示方式 - Google Patents
コンパイラのオブジェクト修正指示方式Info
- Publication number
- JPH04321135A JPH04321135A JP11656391A JP11656391A JPH04321135A JP H04321135 A JPH04321135 A JP H04321135A JP 11656391 A JP11656391 A JP 11656391A JP 11656391 A JP11656391 A JP 11656391A JP H04321135 A JPH04321135 A JP H04321135A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- compiler
- object code
- instructions
- modification
- 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
- 238000012986 modification Methods 0.000 claims description 30
- 230000004048 modification Effects 0.000 claims description 30
- 238000000034 method Methods 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 101100490566 Arabidopsis thaliana ADR2 gene Proteins 0.000 description 1
- 101100269260 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ADH2 gene Proteins 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は、ソースプログラムを入
力してオブジェクトコードを生成するコンパイラの方式
に係わり、特に生成されるオブジェクトコードに対して
、修正する指示を与えることにより、その指示に従って
修正を加えたオブジェクトコードを生成するようにした
、コンパイラのオブジェクト修正指示方式に関する。
力してオブジェクトコードを生成するコンパイラの方式
に係わり、特に生成されるオブジェクトコードに対して
、修正する指示を与えることにより、その指示に従って
修正を加えたオブジェクトコードを生成するようにした
、コンパイラのオブジェクト修正指示方式に関する。
【0002】
【従来の技術】従来、コンパイラが生成したオブジェク
トプログラムを最適化し実行効率を向上させるため、あ
るいはオブジェクトプログラム中の命令コードの誤りを
修正するために、オブジェクトコードを一時的に修正し
たい場合には、生成されたオブジェクトプログラムの修
正したい番地と修正後の機械語命令を指定し、生成済オ
ブジェクトプログラム中の指定した番地の命令を、指定
した機械語命令で書き換えることにより行っていた。こ
の方式は、一般に「パッチをかける。」方式として知ら
れている。
トプログラムを最適化し実行効率を向上させるため、あ
るいはオブジェクトプログラム中の命令コードの誤りを
修正するために、オブジェクトコードを一時的に修正し
たい場合には、生成されたオブジェクトプログラムの修
正したい番地と修正後の機械語命令を指定し、生成済オ
ブジェクトプログラム中の指定した番地の命令を、指定
した機械語命令で書き換えることにより行っていた。こ
の方式は、一般に「パッチをかける。」方式として知ら
れている。
【0003】特に命令を追加または挿入する場合には、
挿入や追加が予想される部分に、置換されるべき領域と
して予め何もしない命令を用意しておくか、または実行
されることのない命令領域に、一般にパッチエリアと呼
ばれる予備領域を予め確保しておき、命令を挿入または
追加したい部分の命令を前記予備領域への分岐命令で置
換するとともに、分岐先の予備領域を、分岐命令で置換
された元の命令、挿入または追加したい命令、および置
換した分岐命令の次の番地への分岐命令で置換すること
により、命令の挿入や追加を実現していた。
挿入や追加が予想される部分に、置換されるべき領域と
して予め何もしない命令を用意しておくか、または実行
されることのない命令領域に、一般にパッチエリアと呼
ばれる予備領域を予め確保しておき、命令を挿入または
追加したい部分の命令を前記予備領域への分岐命令で置
換するとともに、分岐先の予備領域を、分岐命令で置換
された元の命令、挿入または追加したい命令、および置
換した分岐命令の次の番地への分岐命令で置換すること
により、命令の挿入や追加を実現していた。
【0004】また命令を削除する場合には、削除したい
命令を何もしない命令で置き換えることにより実現して
いた。
命令を何もしない命令で置き換えることにより実現して
いた。
【0005】
【発明が解決しようとする課題】上述したように従来の
技術では、命令を挿入または追加する場合には、挿入や
追加が予想される部分に、置換されるべき領域として予
め何もしない命令を用意しておくか、または実行される
ことのない命令領域に、一般にパッチエリアと呼ばれる
予備領域を予め確保しておかなければならなかった。ま
た命令を削除する場合にはなにもしない命令で置換する
ために、冗長なオブジェクトにならざるを得なかった。
技術では、命令を挿入または追加する場合には、挿入や
追加が予想される部分に、置換されるべき領域として予
め何もしない命令を用意しておくか、または実行される
ことのない命令領域に、一般にパッチエリアと呼ばれる
予備領域を予め確保しておかなければならなかった。ま
た命令を削除する場合にはなにもしない命令で置換する
ために、冗長なオブジェクトにならざるを得なかった。
【0006】さらに、一つの命令を置換することにより
後続の命令も置換しなければならないことが明らかであ
っても、変更したい命令の番地すべてに対し、置き換え
るべき機械語命令を指示しなければならなかった。例え
ば、一群の命令列で使用するレジスタを変更したいとき
、変更したいレジスタを使用している命令すべてに対し
て、その番地と変更後の機械語命令を指示する必要があ
った。
後続の命令も置換しなければならないことが明らかであ
っても、変更したい命令の番地すべてに対し、置き換え
るべき機械語命令を指示しなければならなかった。例え
ば、一群の命令列で使用するレジスタを変更したいとき
、変更したいレジスタを使用している命令すべてに対し
て、その番地と変更後の機械語命令を指示する必要があ
った。
【0007】本発明は上記の点に鑑み考案されたもので
あり、その目的とするところは、オブジェクトコードの
修正指示をコンパイラに対して与え、コンパイラのオブ
ジェクト生成部にその修正指示を解釈する機能を持たせ
ることにより、オブジェクトコードを容易に修正でき、
かつ冗長な命令を残さない最適なオブジェクトを生成す
る、コンパイラのオブジェクト修正指示方式を提供する
ことにある。
あり、その目的とするところは、オブジェクトコードの
修正指示をコンパイラに対して与え、コンパイラのオブ
ジェクト生成部にその修正指示を解釈する機能を持たせ
ることにより、オブジェクトコードを容易に修正でき、
かつ冗長な命令を残さない最適なオブジェクトを生成す
る、コンパイラのオブジェクト修正指示方式を提供する
ことにある。
【0008】
【課題を解決するための手段】本発明のコンパイラのオ
ブジェクト修正指示方式は、ソースプログラムを入力し
てオブジェクトコードを生成するコンパイラにおいて、
オブジェクトコードに対して作成した修正指示を入力す
る修正指示入力手段と、コンパイラのコード生成部にお
いて、入力した修正指示に従って、修正したオブジェク
トコードを生成する修正オブジェクトコード生成手段と
から構成するようにしている。
ブジェクト修正指示方式は、ソースプログラムを入力し
てオブジェクトコードを生成するコンパイラにおいて、
オブジェクトコードに対して作成した修正指示を入力す
る修正指示入力手段と、コンパイラのコード生成部にお
いて、入力した修正指示に従って、修正したオブジェク
トコードを生成する修正オブジェクトコード生成手段と
から構成するようにしている。
【0009】
【実施例】以下、本発明について図面を参照して説明す
る。
る。
【0010】図1は、本発明のコンパイラのオブジェク
ト修正指示方式の一実施例を示す構成図である。
ト修正指示方式の一実施例を示す構成図である。
【0011】図1において、1はソースプログラム、2
はコンパイラ、3は修正指示、4は修正指示入力手段、
5はコンパイラのオブジェクト生成部、6は修正オブジ
ェクトコード生成手段、7はオブジェクトコードである
。
はコンパイラ、3は修正指示、4は修正指示入力手段、
5はコンパイラのオブジェクト生成部、6は修正オブジ
ェクトコード生成手段、7はオブジェクトコードである
。
【0012】コンパイラ2はソースプログラム1を入力
してコンパイルを行い、オブジェクト生成部5がオブジ
ェクトコード7を生成する。このとき修正指示入力手段
4は、予め決めておいた規約に基づいて利用者が作成し
た修正指示3を読み込んで修正オブジェクトコード生成
手段6に渡す。修正オブジェクトコード生成手段6は、
予め決めておいた規約に基づいて修正指示を解釈し、与
えられた修正指示に従ってコードを修正しながらオブジ
ェクトコード7を生成する。
してコンパイルを行い、オブジェクト生成部5がオブジ
ェクトコード7を生成する。このとき修正指示入力手段
4は、予め決めておいた規約に基づいて利用者が作成し
た修正指示3を読み込んで修正オブジェクトコード生成
手段6に渡す。修正オブジェクトコード生成手段6は、
予め決めておいた規約に基づいて修正指示を解釈し、与
えられた修正指示に従ってコードを修正しながらオブジ
ェクトコード7を生成する。
【0013】次に、本発明のコンパイラのオブジェクト
修正指示方式を適用する例を示す。
修正指示方式を適用する例を示す。
【0014】図2は、本発明を適用せずに生成されたオ
ブジェクトコード7の例である。すなわち命令21は領
域DATA1からレジスタR1にデータをロードする命
令、命令22はレジスタR1のデータを領域DATA2
にストアする命令、命令23は領域DATA4のデータ
をレジスタR2にロードする命令である。
ブジェクトコード7の例である。すなわち命令21は領
域DATA1からレジスタR1にデータをロードする命
令、命令22はレジスタR1のデータを領域DATA2
にストアする命令、命令23は領域DATA4のデータ
をレジスタR2にロードする命令である。
【0015】今、図2のオブジェクトプログラムにおい
て、レジスタR1を破壊したくないため、命令21と命
令22で使用するレジスタをR2に変更したいとする。 また同時に、命令21で領域DATA1のデータをレジ
スタにロードした後、領域DATA3のデータを加算し
てから領域DATA2にデータをストアするようにオブ
ジェクトを変更したいとする。
て、レジスタR1を破壊したくないため、命令21と命
令22で使用するレジスタをR2に変更したいとする。 また同時に、命令21で領域DATA1のデータをレジ
スタにロードした後、領域DATA3のデータを加算し
てから領域DATA2にデータをストアするようにオブ
ジェクトを変更したいとする。
【0016】このとき指定する修正指示3の例を図3に
示す。
示す。
【0017】すなわち、修正指示31は、オブジェクト
コードの100番地から101番地までの命令を、次の
行の指示で修正することを示す。修正指示32は、直前
の修正指示で示した範囲で使用するレジスタR1を全て
R2に変更する指示を示す。修正指示33は、オブジェ
クトコードの101番地の直前に、次の行の指示で示す
命令を挿入することを示す。修正指示34は直前の修正
指示で示した位置に命令 ADR2 DATA3 を挿入することを示す。
コードの100番地から101番地までの命令を、次の
行の指示で修正することを示す。修正指示32は、直前
の修正指示で示した範囲で使用するレジスタR1を全て
R2に変更する指示を示す。修正指示33は、オブジェ
クトコードの101番地の直前に、次の行の指示で示す
命令を挿入することを示す。修正指示34は直前の修正
指示で示した位置に命令 ADR2 DATA3 を挿入することを示す。
【0018】図3の修正指示3を入力し、修正オブジェ
クトコード生成手段6が図2のオブジェクトコードを修
正した結果出力されるオブジェクトコード7を図4に示
す。
クトコード生成手段6が図2のオブジェクトコードを修
正した結果出力されるオブジェクトコード7を図4に示
す。
【0019】すなわち命令41と命令43は、領域DA
TA1のデータをレジスタR2にロードし、レジスタR
2のデータを領域DATA2にストアする命令である。 この命令41と命令43は、命令21と命令22が修正
指示31と修正指示32に従って修正されて生成された
命令である。命令42は、レジスタR2に領域DATA
3のデータを加算する命令であり、指示33と指示34
に従って生成され挿入された命令である。命令23は、
修正指示が無いために命令44と全く同じであるが、命
令42が修正指示により挿入されたため、番地が一つ増
加している。
TA1のデータをレジスタR2にロードし、レジスタR
2のデータを領域DATA2にストアする命令である。 この命令41と命令43は、命令21と命令22が修正
指示31と修正指示32に従って修正されて生成された
命令である。命令42は、レジスタR2に領域DATA
3のデータを加算する命令であり、指示33と指示34
に従って生成され挿入された命令である。命令23は、
修正指示が無いために命令44と全く同じであるが、命
令42が修正指示により挿入されたため、番地が一つ増
加している。
【0020】
【発明の効果】以上説明したように本発明によれば、オ
ブジェクトコードを修正する際に、複数の命令を一つの
指示で修正できると同時に、命令の挿入や追加のために
予め何もしない命令や予備領域を用意する必要が無く、
冗長な命令を残さずにオブジェクトコードを容易に修正
することができるという効果がある。
ブジェクトコードを修正する際に、複数の命令を一つの
指示で修正できると同時に、命令の挿入や追加のために
予め何もしない命令や予備領域を用意する必要が無く、
冗長な命令を残さずにオブジェクトコードを容易に修正
することができるという効果がある。
【図1】本発明の一実施例を示す構成図である。
【図2】本発明を適用する前のオブジェクトコードの例
を示す図である。
を示す図である。
【図3】修正指示の例を示す図である。
【図4】本発明により修正して生成されるオブジェクト
コードの例を示す図である。
コードの例を示す図である。
図1において、
1 ソースプログラム、
2 コンパイラ、
3 修正指示、
4 修正指示入力手段、
5 オブジェクト生成部、
6 修正オブジェクトコード生成手段、7
オブジェクトコード。 図2において、 21 ロード命令、 22 ストア命令、 23 ロード命令。 図3において、 31 修正指示、 32 修正指示、 33 修正指示、 34 修正指示。 図4において、 41 ロード命令、 42 加算命令、 43 ストア命令、 44 ロード命令。
オブジェクトコード。 図2において、 21 ロード命令、 22 ストア命令、 23 ロード命令。 図3において、 31 修正指示、 32 修正指示、 33 修正指示、 34 修正指示。 図4において、 41 ロード命令、 42 加算命令、 43 ストア命令、 44 ロード命令。
Claims (1)
- 【請求項1】 ソースプログラムを入力してオブジェ
クトコードを生成するコンパイラにおいて、オブジェク
トコードに対して作成した修正指示を入力する修正指示
入力手段と、コンパイラのコード生成部において、入力
した修正指示に従って、修正したオブジェクトコードを
生成する修正オブジェクトコード生成手段とを有するこ
とを特徴とする、コンパイラのオブジェクト修正指示方
式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP11656391A JPH04321135A (ja) | 1991-04-22 | 1991-04-22 | コンパイラのオブジェクト修正指示方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP11656391A JPH04321135A (ja) | 1991-04-22 | 1991-04-22 | コンパイラのオブジェクト修正指示方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04321135A true JPH04321135A (ja) | 1992-11-11 |
Family
ID=14690209
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP11656391A Pending JPH04321135A (ja) | 1991-04-22 | 1991-04-22 | コンパイラのオブジェクト修正指示方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH04321135A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011090511A (ja) * | 2009-10-22 | 2011-05-06 | Fujitsu Ltd | 実行プログラム、コンパイラ、実行プログラム動作修正装置及び実行プログラム動作修正方法 |
-
1991
- 1991-04-22 JP JP11656391A patent/JPH04321135A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2011090511A (ja) * | 2009-10-22 | 2011-05-06 | Fujitsu Ltd | 実行プログラム、コンパイラ、実行プログラム動作修正装置及び実行プログラム動作修正方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR930005765B1 (ko) | 마이크로 콘트롤러 | |
| US6002876A (en) | Maintaining code consistency among plural instruction sets via function naming convention | |
| EP0633526B1 (en) | Language processing system and method therefor | |
| US20060015856A1 (en) | Modification method for modifying a source code | |
| JPH03171243A (ja) | データ・ストリーム修正方法 | |
| US7739696B2 (en) | Message translation systems and methods | |
| JP2624676B2 (ja) | プログラム世代管理方法 | |
| US7228527B1 (en) | Method and system for structuring a procedure | |
| KR100673313B1 (ko) | 코드조각 번호 매김을 이용한 프로그램 간의 코드조각결합방법 | |
| US5136698A (en) | Method for selective back-tracking in a hierarchical system containing a flag which indicates the validity of a choice-point | |
| CN107239303A (zh) | 应用程序更新包生成及应用程序更新的方法、装置 | |
| JPH04321135A (ja) | コンパイラのオブジェクト修正指示方式 | |
| JP4876537B2 (ja) | プログラマブルコントローラのプログラミング装置 | |
| JP2009048259A (ja) | プログラム変換方法及び変換用プログラム | |
| US7024664B2 (en) | Symbolic assembly language | |
| US6718459B1 (en) | Device and method for arithmetic processing | |
| JPH05257739A (ja) | コンパイルドコードオブジェクトのパッチ処理方式 | |
| JPH05257672A (ja) | コンパイルドコードオブジェクトのパッチ処理方式 | |
| JPH04287134A (ja) | 簡易トレース情報取得方式 | |
| JPH05120067A (ja) | プログラムパツチ方式 | |
| US20040111721A1 (en) | Method for branch slamming as a safe mechanism for binary code editing | |
| JPH05100865A (ja) | コンパイル方式 | |
| JPS6345603A (ja) | プログラマブルコントロ−ラのプログラム格納方式 | |
| CN118916015A (zh) | 一种基于模式匹配的目标代码生成方法 | |
| JP3041919B2 (ja) | プログラム結合処理装置 |