JPH08123679A - Rom装置およびコンパイラ - Google Patents

Rom装置およびコンパイラ

Info

Publication number
JPH08123679A
JPH08123679A JP6258648A JP25864894A JPH08123679A JP H08123679 A JPH08123679 A JP H08123679A JP 6258648 A JP6258648 A JP 6258648A JP 25864894 A JP25864894 A JP 25864894A JP H08123679 A JPH08123679 A JP H08123679A
Authority
JP
Japan
Prior art keywords
load module
written
header
jump instruction
module
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
JP6258648A
Other languages
English (en)
Inventor
Akinori Shoji
庄司  昭典
Shinpei Kimura
進平 木村
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.)
Toshiba Corp
Toshiba Meter Techno Co Ltd
Original Assignee
Toshiba Corp
Toshiba Meter Techno Co Ltd
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 Toshiba Corp, Toshiba Meter Techno Co Ltd filed Critical Toshiba Corp
Priority to JP6258648A priority Critical patent/JPH08123679A/ja
Publication of JPH08123679A publication Critical patent/JPH08123679A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】 プログラムを書き込んだ後の修正を容易に実
施することができるROM装置およびコンパイラを提供
する。 【構成】 ロードモジュールが書き込まれているROM
装置において、該ロードモジュールの先頭番地へジャン
プするジャンプ命令と、少なくとも一つ以上の再書き込
みが可能な領域を前記ジャンプ命令の後方に配置させた
ヘッダー部を備えたロードモジュールを有する。 【効果】 ソースプログラムを変更してもROM装置を
交換することなく、容易にロードモジュールを変更する
ことができるので、経済性に優れている。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は主としてマイコンとRO
M装置を組み込んだ機器におけるロードモジュールが書
き込まれたROM装置と、前記ロードモジュールを生成
するコンパイラに関する。
【0002】
【従来の技術】マイコン応用製品のプログラムは、RO
M化に対応したコンパイラにより作成されたロードモジ
ュールとしてマスクROMやEPROMに書き込まれ
る。比較的少量生産で低コストのマイコン応用製品には
EPROMよりも安価なワンタイムEPROMが用いら
れるケースが増えている。ワンタイムEPROMには、
EPROMのように消去/再書き込みをすることができ
ないので、一度プログラムを書き込んだ後は特別な場合
を除いて書き込んだ内容を変更することができない。そ
のため、プログラムを書き込んだ後にバグが発見された
場合は、修正箇所が少ないときはROMの内容をオブジ
ェクトレベルで解析し、手作業で修正する。修正箇所が
多いときや修正が困難なときはバグがあるROMを廃棄
し、新しいROMに取り替えている。
【0003】
【発明が解決しようとする課題】しかし、上述した従来
の方法では、一度プログラムが書き込まれたROMを修
正する場合はマイコンに関して高度の知識を有する人が
必要であるばかりか、修正はほとんどが手作業で行なわ
れるので、生産性が低下するという問題があった。ま
た、修正箇所が多くROMを取り替える場合は、最近は
再書き込みが不可能なワンタイムEPROMがマイコン
に内蔵されていることが多いのでマイコンごと取り替え
る必要があり、経済的な損失が大きいという問題があっ
た。
【0004】本発明はこのような従来の問題を解決する
ためになされたものであり、ROMにプログラムを書き
込んだ後の修正を容易に実施することができるROM装
置およびコンパイラを提供することを目的とする。
【0005】
【課題を解決するための手段】上記目的を達成するた
め、請求項1記載のROM装置では、所定の処理を実行
するロードモジュールが書き込まれているROM装置に
おいて、該ロードモジュールの先頭番地へジャンプする
ジャンプ命令と、少なくとも一つ以上の再書き込みが可
能な領域を前記ジャンプ命令の後方に配置させたヘッダ
ー部を備えたロードモジュールが少なくとも一つ以上書
き込まれていることを要旨とする。
【0006】また、請求項2記載の発明では、所定の処
理を実行するロードモジュールが書き込まれているRO
M装置において、該ロードモジュールの先頭番地へジャ
ンプするジャンプ命令と、少なくとも一つ以上の再書き
込みが可能な領域を前記ジャンプ命令の後方に配置させ
たヘッダーモジュールが書き込まれていることを要旨と
する。
【0007】また、請求項3記載の発明では、ソースプ
ログラムからロードモジュールを生成するコンパイラに
おいて、コンパイル処理をする過程で請求項1記載のヘ
ッダー部および請求項2記載のヘッダーモジュールに、
該ロードモジュールの先頭番地へジャンプするジャンプ
命令と、前記再書き込みが可能な領域に所定数の16進
数FFHを書き込むことを要旨とする。
【0008】また、請求項4記載の発明では、ソースプ
ログラムからロードモジュールを生成するコンパイラに
おいて、コンパイル処理をする過程で請求項1記載のヘ
ッダー部および請求項2記載のヘッダーモジュールに書
き込まれているジャンプ命令を16進数の00Hに変更
し、前記再書き込みが可能な領域に該ロードモジュール
の先頭番地へジャンプするジャンプ命令を追記すること
を要旨とする。
【0009】
【作用】請求項1記載の発明はこのような手段を講じた
ことにより、プログラムを実行する場合は該当するロー
ドモジュールのヘッダー部に書かれたジャンプ命令を参
照してロードモジュールの先頭番地へジャンプすること
ができる。また、再書き込みが可能な領域には、請求項
4記載のコンパイラを使用して新たなロードモジュール
へのジャンプ先番地を書き込むことができる。
【0010】また、請求項2記載の発明はこのような手
段を講じたことにより、プログラムを実行する場合はヘ
ッダーモジュールに書かれたジャンプ命令を参照してロ
ードモジュールの先頭番地へジャンプすることができ
る。また、再書き込みが可能な領域には、請求項4記載
のコンパイラを使用して新たなロードモジュールへのジ
ャンプ先番地を書き込むことができる。
【0011】また、請求項3記載の発明はこのような手
段を講じたことにより、コンパイル処理をする過程で請
求項1記載のヘッダー部および請求項2記載のヘッダー
モジュールに、ロードモジュールの先頭番地へジャンプ
するジャンプ命令と、再書き込みが可能な領域に所定数
の16進数FFHを書き込むことができる。
【0012】また、請求項4記載の発明はこのような手
段を講じたことにより、コンパイル処理をする過程で請
求項1記載のヘッダー部および請求項2記載のヘッダー
モジュールに書き込まれているジャンプ命令を16進数
の00Hに変更し、再書き込みが可能な領域にロードモ
ジュールの先頭番地へジャンプするジャンプ命令を追記
することができる。
【0013】
【実施例】実施例の説明に入る前に、先ず本発明の基本
原理について説明する。EPROMはデータを書き込む
前には全てのデータビットが「1」になっていて、デー
タを書き込むときは「0」データのところだけが電気的
に変更される。すなわち、EPROMでは「1」から
「0」への一方向性の状態変化のみが可能であって、
「0」から「1」への状態変化をさせることはできな
い。このため、任意のデータを対象にする再書き込みは
不可能であるが、データビットを「1」から「0」へ変
更するだけで、「0」から「1」への変更を含まない再
書き込みは可能である。つまり、16進数でFFHの領
域は再書き込みが可能な領域である。
【0014】本発明はこのようなEPROMの性質を利
用し、ソースプログラムをコンパイルする過程で、ロー
ドモジュールの先頭部分に設けたヘッダー部に再書き込
みが可能な領域をあらかじめ確保しておく。バグがあっ
た場合は、再書き込みが可能な領域を書き換えることに
よりバグがあるロードモジュールを実行しないで、新し
く修正したロードモジュールを実行するようにジャンプ
先を指定する。
【0015】以下、本発明の実施例を図面を参照して説
明する。図1は本発明の一実施例におけるロードモジュ
ールのメモリマップである。同図において、1はサブル
ーチン、関数など一つのまとまった機能をもったプログ
ラムのロードモジュール本体、2はロードモジュール1
のヘッダー部である。FUNC1はロードモジュール1
のプログラム名称、FUNC1 はロードモジュール1
の実行先頭番地につけたラベル名である。いま、ヘッダ
ー部2の先頭番地をh、ロードモジュール1の先頭番地
をaとするとき、同図(a)に示すようにヘッダー部2
の先頭番地hにはロードモジュール1の先頭番地aへジ
ャンプする命令「JMP FUNC1 」が機械語で書き
込まれている。続く番地h+1,h+2,h+3には全
てのデータビットが「1」である16進数のFFHが書
き込まれている。ロードモジュール1には先頭番地a以
降に実行命令が機械語で書かれている。したがって、メ
インルーチンからFUNC1を呼び出すときはヘッダー
部2の先頭番地hをコールすることにより、FUNC1
の先頭番地aへ制御を移すことができる。FUNC1
の実行後は最終番地a+mの「RET」により再びメ
インルーチンへ制御が戻る。
【0016】次に、同図(b)について説明する。プロ
グラムFUNC1に不具合が見つかった場合、修正した
プログラムのロードモジュールが修正以前のプログラム
FUNC1 の後方の空き番地b以降に書かれる。一
方、ヘッダー部2の先頭番地hはノーオペレーション命
令であるNOPに書き換えられ(ほとんどのCPUでは
NOP命令は00Hである)、次の番地h+1には修正
されたロードモジュール1の実行先頭番地bへジャンプ
する命令「JMP FUNC1 2」が機械語で書き込
まれる。したがって、修正されたFUNC1プログラム
をメインルーチンから呼び出すときは、変更前と同様に
ヘッダー部2の先頭番地hをコールすることにより、F
UNC1 2の先頭番地bへ制御を移すことができる。
FUNC1 2の実行後は最終番地b+nの「RET」に
より再びメインルーチンへ制御が戻る。
【0017】次に、本発明のコンパイラによるコンパイ
ル処理の過程について図面を参照して説明する。図2は
ソースプログラムを最初にコンパイルする場合の処理の
流れを示すフローチャートである。C言語などで記述さ
れたソースプログラムファイル201はプリプロセッサ
202によってマクロ展開などの前処理を施され、コー
ドジェネレータ203によってアセンブラベースに展開
されてアセンブラソースファイル204が出力される。
次に、リロケータブルアセンブラ205によってリロケ
ータブルオブジェクトファイル206が生成される。通
常のコンパイラと違う箇所はコードジェネレータ203
において、ヘッダー部2を生成することである。
【0018】ヘッダー部2は原理的にはロードモジュー
ル1の前方または後方のいずれに設けてもよいが、修正
したロードモジュールを後方へ追加する場合はロードモ
ジュール1の前方に設けるのがよい。ヘッダー部2には
ロードモジュール1の実行先頭番地へジャンプするジャ
ンプ命令と、少なくとも一つ以上のジャンプ命令を書き
込むことができる再書き込みが可能な領域を前記ジャン
プ命令の後方に配置させて構成する。コードジェネレー
タ203は生成したヘッダー部2の先頭番地hにロード
モジュールの実行先頭番地aへジャンプする命令「JM
P FUNC1 」を書き込む。続く番地h+1,h+
2,h+3,…には再書き込みが可能な領域として全て
のデータビットが「1」である16進数のFFHを書き
込む。CPUがZ80の場合はジャンプ命令が3バイト
命令であるから、再書き込みが可能な領域は3の倍数バ
イト確保する。ロードモジュール1の実行先頭番地aに
はラベルFUNC1 を割当てる。
【0019】図3は元のソースプログラムに不具合箇所
があってその一部を変更する場合の処理の流れを示すフ
ローチャートである。変更前のソースプログラムファイ
ル201はコンパイル処理200によって、図2で説明
した過程を経て変更前のリロケータブルオブジェクトフ
ァイル206に変換される。修正したプログラムモジュ
ールのソースファイル301はコンパイル処理200に
よって、同様に図2で説明した過程を経て変更後のリロ
ケータブルオブジェクトファイル302に変換される。
次に、修正を行なったファイルを指定してコンパイラに
よるリンカ処理303を実行し、変更前のリロケータブ
ルオブジェクトファイル206と変更後のリロケータブ
ルオブジェクトファイル302との差分ファイル304
および新しい実行ファイル305を出力する。差分ファ
イル304はEPROMに上書きをするためのファイル
である。
【0020】図4はリンカ処理303の処理過程を詳細
に説明するフローチャートである。変更前のリロケータ
ブルオブジェクトファイル206と変更後のリロケータ
ブルオブジェクトファイル302とから、シンボルのア
ドレス計算401では変更されたオブジェクトに関する
シンボルアドレステーブル403を次のように変更す
る。プログラムFUNC1に不具合が見つかった場合、
修正したプログラムのロードモジュールを修正以前のプ
ログラムFUNC1 の後方の空き番地b以降にアドレ
ッシングし、ラベル名FUNC1 をFUNC1
に、対応するアドレスa(たとえば1000H)をb
(たとえば2000H)に書き換える。実行ファイル生
成402では、ヘッダー部2の先頭番地hをノーオペレ
ーション命令であるNOPに書き換え、次の番地h+1
に修正されたロードモジュールの実行先頭番地bへジャ
ンプする命令「JMP FUNC1 2」を書き込む。
もし、ジャンプ命令が3バイト命令であれば、h+1,
h+2,h+3番地を使用する。404は変更前のオリ
ジナルのヘッダー部の内容を、405は変更後のヘッダ
ー部の内容を示したものである。
【0021】したがって、以上のような実施例の構成に
よれば、ソースプログラムを変更した場合でもROM装
置を交換することなく、容易にロードモジュールを変更
することができる。また、メインプログラムは修正され
たサブプログラムのラベルを意識する必要がないので、
サブプログラム変更の影響を受けないで済む。
【0022】また、請求項2記載の発明によれば、上述
の効果の他に、ヘッダー部をまとめたヘッダーモジュー
ルとして一括して管理することによりメモリを効率的に
使用することができる利点がある。
【0023】
【発明の効果】以上説明したように本発明によれば、ソ
ースプログラムを変更してもROM装置を交換すること
なく、容易にロードモジュールを変更することができる
ので、経済性に優れている。
【図面の簡単な説明】
【図1】本発明の一実施例におけるメモリマップであ
る。
【図2】コンパイル処理のフローチャートである。
【図3】再コンパイル処理のフローチャートである。
【図4】リンカ処理のフローチャートである。
【符号の説明】
1 ロードモジュール 2 ヘッダー部

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 所定の処理を実行するロードモジュール
    が書き込まれているROM装置において、該ロードモジ
    ュールの先頭番地へジャンプするジャンプ命令と、少な
    くとも一つ以上の再書き込みが可能な領域を前記ジャン
    プ命令の後方に配置させたヘッダー部を備えたロードモ
    ジュールが少なくとも一つ以上書き込まれていることを
    特徴とするROM装置。
  2. 【請求項2】 所定の処理を実行するロードモジュール
    が書き込まれているROM装置において、該ロードモジ
    ュールの先頭番地へジャンプするジャンプ命令と、少な
    くとも一つ以上の再書き込みが可能な領域を前記ジャン
    プ命令の後方に配置させたヘッダーモジュールが書き込
    まれていることを特徴とするROM装置。
  3. 【請求項3】 ソースプログラムからロードモジュール
    を生成するコンパイラにおいて、コンパイル処理をする
    過程で請求項1記載のヘッダー部および請求項2記載の
    ヘッダーモジュールに、該ロードモジュールの先頭番地
    へジャンプするジャンプ命令と、前記再書き込みが可能
    な領域に所定数の16進数FFHを書き込むことを特徴
    とするコンパイラ。
  4. 【請求項4】 ソースプログラムからロードモジュール
    を生成するコンパイラにおいて、コンパイル処理をする
    過程で請求項1記載のヘッダー部および請求項2記載の
    ヘッダーモジュールに書き込まれているジャンプ命令を
    16進数の00Hに変更し、前記再書き込みが可能な領
    域に該ロードモジュールの先頭番地へジャンプするジャ
    ンプ命令を追記することを特徴とするコンパイラ。
JP6258648A 1994-10-25 1994-10-25 Rom装置およびコンパイラ Pending JPH08123679A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6258648A JPH08123679A (ja) 1994-10-25 1994-10-25 Rom装置およびコンパイラ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6258648A JPH08123679A (ja) 1994-10-25 1994-10-25 Rom装置およびコンパイラ

Publications (1)

Publication Number Publication Date
JPH08123679A true JPH08123679A (ja) 1996-05-17

Family

ID=17323187

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6258648A Pending JPH08123679A (ja) 1994-10-25 1994-10-25 Rom装置およびコンパイラ

Country Status (1)

Country Link
JP (1) JPH08123679A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002529812A (ja) * 1998-10-30 2002-09-10 セガソフト, インコーポレイテッド 実行時にコンパイルされたコンピュータコードの機能を改変するためのシステム
WO2010010597A1 (ja) * 2008-07-23 2010-01-28 富士通株式会社 静的にリンクされた実行形式プログラムファイルにおけるオブジェクトを結合するオブジェクト結合装置、オブジェクトの結合方法およびそのプログラム

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002529812A (ja) * 1998-10-30 2002-09-10 セガソフト, インコーポレイテッド 実行時にコンパイルされたコンピュータコードの機能を改変するためのシステム
WO2010010597A1 (ja) * 2008-07-23 2010-01-28 富士通株式会社 静的にリンクされた実行形式プログラムファイルにおけるオブジェクトを結合するオブジェクト結合装置、オブジェクトの結合方法およびそのプログラム
US8561047B2 (en) 2008-07-23 2013-10-15 Fujitsu Limited Object linkage device for linking objects in statically linked executable program file, method of linking objects, and computer readable storage medium storing program thereof
JP5402930B2 (ja) * 2008-07-23 2014-01-29 富士通株式会社 静的にリンクされた実行形式プログラムファイルにおけるオブジェクトを結合するオブジェクト結合装置、オブジェクトの結合方法およびそのプログラム

Similar Documents

Publication Publication Date Title
CN112506535B (zh) 一种汽车ECU控制器更新升级Bootloader软件的方法
EP0833246B1 (en) A method of producing a computer program
US6484313B1 (en) Compiling and persisting of intermediate language code
JP5226328B2 (ja) コード変換装置
JPH1115674A (ja) 異なるランタイム環境において実行するための実行可能プログラムにおいて機能的に類似したコードシーケンスを発生するコンパイラ
JPH1115673A (ja) 異なるランタイム環境において実行するための実行可能プログラムにおけるコードシーケンスを機能的に類似したコードシーケンスと条件付きで置き換えるローダ
US20070101115A1 (en) Information processing device, bios processing method and program
EP3314418B1 (en) Method and system for preparing code to be executed by programmable control devices
JPH08123679A (ja) Rom装置およびコンパイラ
JPH10133884A5 (ja)
JPH11259308A (ja) プログラマブルコントローラ
US20070169086A1 (en) System and method for updating in-system program
JP2827724B2 (ja) プログラムデバッグ処理方法
JP2002229781A (ja) プログラム、電子制御装置、プログラムの製造方法
JPH064298A (ja) プログラム開発環境構築システム
JP2004013370A (ja) フラッシュromプログラム書き込み方法およびプログラム開発ツール
KR19990030244A (ko) 2단 점프를 이용하여 소오스 프로그램으로부터 오브젝트 프로그램을 생성하는 언어처리 시스템 및 방법
JP2005301415A (ja) コンパイル方式、シミュレータ、エミュレータおよびプログラム開発支援システム
JPH0319972B2 (ja)
KR20050039235A (ko) 고정 베이스 레지스터를 이용한 컴파일러의 어셈블리 코드생성 방법
JPH05119982A (ja) コンパイラ
JP2007080207A (ja) プログラム開発支援システム及びリンカ
JP2001195258A (ja) コンピュータ組み込みシステム
JPH06119203A (ja) デバック行削除装置
JPH03100730A (ja) 高級言語による緊急修正データ作成処理方法