JP2000347878A - メモリ削減方法および装置 - Google Patents

メモリ削減方法および装置

Info

Publication number
JP2000347878A
JP2000347878A JP11159205A JP15920599A JP2000347878A JP 2000347878 A JP2000347878 A JP 2000347878A JP 11159205 A JP11159205 A JP 11159205A JP 15920599 A JP15920599 A JP 15920599A JP 2000347878 A JP2000347878 A JP 2000347878A
Authority
JP
Japan
Prior art keywords
program
file
code
pattern
subroutine
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
JP11159205A
Other languages
English (en)
Other versions
JP3507728B2 (ja
Inventor
Satoshi Serikaku
智 勢理客
Hiroshi Tsuruta
洋 鶴田
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 Software Okinawa Ltd
Original Assignee
NEC Software Okinawa 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 NEC Software Okinawa Ltd filed Critical NEC Software Okinawa Ltd
Priority to JP15920599A priority Critical patent/JP3507728B2/ja
Publication of JP2000347878A publication Critical patent/JP2000347878A/ja
Application granted granted Critical
Publication of JP3507728B2 publication Critical patent/JP3507728B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 ミスを生じさせず短時間でプログラム容量の
削減ができるメモリ削減方法および装置を提供する。 【解決手段】 実装プログラムのプログラムサイズを削
減するメモリ削減方法において、プログラム上の重複す
る処理を自動的に検索しサブルーチン化する。実行プロ
グラムファイルを読み込んでその実行プログラムのコー
ドを解析し、よりプログラムサイズが少なくなるように
プログラムコードを書き替え、別ファイルとして出力す
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、メモリ削減方法
および装置に関し、特に、ROM(Read Only
Memory)実装の実行プログラム作成におけるメ
モリ削減方法および装置に関する。
【0002】
【従来の技術】従来、ROM実装の実行プログラム作成
において、ROMに入り切れないような場合が生じる
と、ソース見直しを行い、同様な処理を行っている個所
はその個所をサブルーチン化して、容量の削減を行って
いた。
【0003】
【発明が解決しようとする課題】しかしながら、従来の
容量削減の場合、削減処理を機械的に行うことができず
人手で行うことから、対応者の技量によって結果が異な
り一様な効果(削減容量)が得られないため、修正に時
間を要しミスを生じさせる可能性があった。
【0004】この発明の目的は、ミスを生じさせず短時
間でプログラム容量の削減ができるメモリ削減方法およ
び装置を提供することである。
【0005】
【課題を解決するための手段】上記目的を達成するた
め、この発明に係るメモリ削減方法は、実装プログラム
のプログラムサイズを削減するメモリ削減方法におい
て、プログラム上の重複する処理を自動的に検索しサブ
ルーチン化することを特徴としている。
【0006】上記構成を有することにより、実装プログ
ラムのプログラムサイズを削減するメモリ削減方法にお
いて、プログラム上の重複する処理が自動的に検索され
サブルーチン化される。これにより、ミスを生じさせず
短時間でプログラム容量の削減ができる。
【0007】また、この発明に係るメモリ削減装置によ
り、上記メモリ削減方法を実現することができる。
【0008】
【発明の実施の形態】以下、この発明の実施の形態につ
いて図面を参照して説明する。
【0009】図1は、この発明の実施の形態に係るメモ
リ削減装置の構成を示すブロック図である。図1に示す
ように、メモリ削減装置10は、ファイル読み込み処理
部11、ファイルヘッダ解析部12、コード部解析処理
部13、コードパターンテーブル14、プログラムイメ
ージ展開テーブル15、パターン抽出処理部16、サブ
ルーチン格納テーブル17、パターン置換部18、及び
ファイル書き出し処理部19を有する。
【0010】ファイル読み込み処理部11は、指定され
たファイルをファイルヘッダ部とプログラムコード部と
に分けて、指定されたメモリに読み込む。ファイルヘッ
ダ解析部12は、読み込まれたファイルヘッダ部から、
プログラム・スタート・アドレス及びプログラム・エン
ド・アドレスを取り出す。
【0011】コード部解析処理部13は、ファイル読み
込み処理部11で読み込まれたプログラムコード部を、
オペランドのパターンを格納しているコードパターンテ
ーブル14に登録されているオペランド規則に従い、オ
ペランドコード単位でプログラムイメージ展開テーブル
15へ転送し格納する。
【0012】なお、コード部解析処理部13において
は、オペランド・コード解析処理過程でJMP命令やC
ALL命令等を検出した場合、その飛び先アドレスにつ
いても、プログラムイメージ展開テーブル15の飛び先
格納エリアへ格納する。
【0013】図2は、コードパターンテーブルの説明図
である。図2に示すように、コードパターンテーブル1
4は、オペランドとして成り立つ条件を基に、常に一定
値をとる値のレングスを格納している固定データ長エリ
アと、必要データ長エリアと、一定値をとるオペランド
格納エリアとを備える。図中のアセンブライメージは、
この発明を説明する上で擬似的に追加した情報である。
【0014】図3は、プログラムイメージ展開テーブル
の説明図である。図3に示すように、プログラムイメー
ジ展開テーブル15は、オペランド、元アドレス、飛び
先アドレス、及びエントリーナンバーの各格納エリアを
備える。
【0015】元アドレス格納エリアは、そのオペランド
が元々存在していたアドレスを格納する。飛び先アドレ
ス格納エリアは、JMP命令やCALL命令のように指
定の番地に飛ぶような命令について、その飛び先のアド
レスを格納する。エントリーナンバー格納エリアは、サ
ブルーチン格納テーブルとの関係を示すために用いる。
図中のアセンブライメージは、この発明を説明する上で
擬似的に追加した情報である。
【0016】パターン抽出処理部16は、プログラムイ
メージ展開テーブル15に格納されたオペランドコード
単位のマシン語群の中から、5バイト以上のコードによ
り構成される同一パターンのコードを検索する。検索の
結果、同一パターンがあった場合は、そのパターンをサ
ブルーチン格納テーブル17に格納し、その最後尾に復
帰命令(RET)を付加する。
【0017】また、そのパターンがあったプログラムイ
メージ展開テーブル15のエントリーナンバー格納エリ
アに、サブルーチン格納テーブル17のエントリーナン
バーを格納する。
【0018】図4は、サブルーチン格納テーブルの説明
図である。図4に示すように、サブルーチン格納テーブ
ル17は、オペランド及びエントリーナンバーをそれぞ
れ格納するエリアを備えるワークエリアである。
【0019】パターン置換処理部18は、全てのパター
ン抽出の終了後、プログラムイメージ展開テーブル15
のエントリーナンバー格納エリアを検索し、CALL命
令に必要な分を除き、プログラムイメージ展開テーブル
15に格納されているデータを前にシフトする。全ての
シフトが終わると、プログラムイメージ展開テーブル1
5の最後尾にサブルーチン格納テーブル17に格納され
ているサブルーチンを転送し、シフトされた結果、飛び
先が変更になったCALL、JMP命令を変更する。
【0020】ファイル書き出し処理部19は、パターン
置換処理部18で変更されたプログラムイメージ展開テ
ーブル15を基に、プログラム・エンド・アドレスを算
出し、先ず、ファイルヘッダ部のプログラム・スタート
・アドレス及びプログラム・エンド・アドレスを変更
し、ファイルヘッダ部をファイルに書き出す。次に、プ
ログラムイメージ展開テーブル15のオペランド格納エ
リアに格納されている、変更後のプログラムイメージデ
ータを書き出す。これにより、実行プログラムのメモリ
サイズを削減可能にする。
【0021】次に、図1のメモリ削減装置10の動作を
説明する。図5は、図1のメモリ削減装置の動作を説明
するフローチャートであり、図6は、シフト後のプログ
ラム・イメージ展開テーブルの説明図である。
【0022】図5に示すように、先ず、ファイル読み込
み処理部11は、実行プログラムを読み出し、ファイル
ヘッダ部とプログラムコード部と分けて、ワークエリア
に読み込む(ステップS101)。読み込まれたファイ
ルヘッダ部から、ファイルヘッダ解析部12を使用し
て、プログラム・スタート・アドレス及びプログラム・
エンド・アドレスを取得する(ステップS102)。
【0023】ステップS101において、読み込んだプ
ログラムコード部の先頭が“E910005056…”
と仮定し説明すると、コード部解析処理部13では、先
ず、プログラムイメージ展開テーブル15を値0で初期
化し、次に、プログラムコードデータの先頭から、コー
ドパターンテーブル(図2参照)と比較しながらプログ
ラムイメージ展開テーブル15に展開していく。ここで
は、先頭の“E9”で始まるものを、コードパターンテ
ーブルから検索する。
【0024】検索の結果、先頭レコードのものが検出さ
れ、そのレコードの固定データ長エリアが1で必要デー
タ長エリアが3であるため、“E91000”が意味の
あるオペランドとして、プログラムイメージ展開テーブ
ル15(図3参照)の先頭レコードに格納される。
【0025】引き続き、“5056”に対しコードパタ
ーンテーブル(図2参照)を基に検索が行われ、“5
0”、“56”がそれぞれ別レコードとしてプログラム
イメージ展開テーブル15に格納される。この処理を、
プログラム・エンド・アドレスまで繰り返し、プログラ
ムコードデータ全てをプログラムイメージ展開テーブル
15に展開する(ステップS103)。
【0026】次に、プログラムイメージ展開テーブル1
5に展開されているレコードより、5バイト以上になる
単位で検索するパターンを生成する(ステップS10
4)。検索パターンの生成が成功したか否かを判断し
(ステップS105)、生成に成功した(Yes)場
合、そのパターンが他に存在しないかプログラムイメー
ジ展開テーブル15を検索する(ステップS106)。
【0027】検索により、同一のパターンがあるかを判
断し(ステップS107)、同一のパターンが見つかっ
た(Yes)場合、プログラムイメージ展開テーブル1
5の該当レコードのエントリーナンバー格納エリアに、
エントリーナンバーを格納する(ステップS109)。
その後、ステップS104へ戻る。
【0028】このときのエントリーナンバーは、同一パ
ターン検索の1番目のパターンであれば01をセット
し、n番目のパターンであればnをセットする。その
際、その検索パターンをサブルーチン格納テーブル(図
4参照)にエントリーナンバーと共に格納し、最後尾に
復帰命令を付加する(ステップS108)。
【0029】以下、ステップS104からステップS1
09迄の流れを具体的に説明する。プログラムイメージ
展開テーブル15が図3に示すような場合、とが同
一パターンと見なされ、この部分が、図4のにあるよ
うにサブルーチン格納テーブルに格納され、復帰命令
(RET)が付加されることになる。
【0030】次に、全てのパターン検索が終わると、プ
ログラムイメージ展開テーブル15のエントリー格納エ
リアの値が1以上のものについて、そのレコードより上
位3バイトのみを残し1レコードとして格納し、残りは
前にシフトする(ステップS110)。全てのシフトが
完了すると、プログラムイメージ展開テーブル15の最
後尾に、ステップS108で格納したサブルーチン群を
転送する(ステップS111)。
【0031】次に、ステップS110において、プログ
ラムイメージ展開テーブル15に3バイト確保したオペ
ランド格納エリアのコードを、CALL命令に変更し、
そのエントリーナンバーに対応するサブルーチン(ステ
ップS111において最後尾に転送したサブルーチン)
を呼び出すように変更する(ステップS112)。図6
のの場合は、エントリー01番のサブルーチンを呼び
出すように変更する。
【0032】続いて、ステップS112までで生成され
たプログラムイメージ展開テーブル15の最終アドレス
を取得し、先ず、ステップS101において読み込んだ
ファイルヘッダ部のプログラム・エンドアドレスを変更
し書き出す。次に、プログラムイメージ展開テーブル1
5のオペランド格納エリアに格納されている変更後の情
報を、追加の形で書き出す。これにより、プログラムサ
イズを圧縮した新たな実行プログラムが生成される。
【0033】このように、この発明によれば、実行プロ
グラムファイルを読み込み、その実行プログラムのコー
ドを解析し、よりプログラムサイズが少なくなるように
プログラムコードを書き替えて、別ファイルとして出力
することができる。
【0034】これにより、同一パターンの処理を行うよ
うなものについてサブルーチン化が自動的に行えるた
め、ROM実装プログラム等のように、プログラムサイ
ズ削減が厳しく要求されるような場合において、ミスを
生じさせず短時間でプログラム容量の削減ができる。
【0035】なお、上記実施の形態においては、一つの
実行プラグラムに対するメモリ削減方法について述べた
が、複数のプログラムに跨って同一パターンのロジック
を抜き出し、それぞれのプログラムで共通して使用可能
にしてもよい。これにより、システム全体としてのメモ
リ削減が可能となる。
【0036】
【発明の効果】以上説明したように、この発明によれ
ば、実装プログラムのプログラムサイズを削減するメモ
リ削減方法において、プログラム上の重複する処理が自
動的に検索されサブルーチン化されるので、ミスを生じ
させず短時間でプログラム容量の削減ができる。
【0037】また、この発明に係るメモリ削減装置によ
り、上記メモリ削減方法を実現することができる。
【図面の簡単な説明】
【図1】この発明の実施の形態に係るメモリ削減装置の
構成を示すブロック図である。
【図2】コードパターンテーブルの説明図である。
【図3】プログラムイメージ展開テーブルの説明図であ
る。
【図4】サブルーチン格納テーブルの説明図である。
【図5】図1のメモリ削減装置の動作を説明するフロー
チャートである。
【図6】シフト後のプログラム・イメージ展開テーブル
の説明図である。
【符号の説明】
10 メモリ削減方法および装置 11 ファイル読み込み処理部 12 ファイルヘッダ解析部 13 コード部解析処理部 14 コードパターンテーブル 15 プログラムイメージ展開テーブル 16 パターン抽出処理部 17 サブルーチン格納テーブル 18 パターン置換部 19 ファイル書き出し処理部

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】実装プログラムのプログラムサイズを削減
    するメモリ削減方法において、 プログラム上の重複する処理を自動的に検索しサブルー
    チン化することを特徴とするメモリ削減方法。
  2. 【請求項2】実行プログラムファイルを読み込んでその
    実行プログラムのコードを解析し、よりプログラムサイ
    ズが少なくなるようにプログラムコードを書き替え、別
    ファイルとして出力することを特徴とする請求項1に記
    載のメモリ削減方法。
  3. 【請求項3】実行プログラムを読み出し、ワークエリア
    に読み込まれたファイルヘッダ部から、プログラム・ス
    タート・アドレス及びプログラム・エンド・アドレスを
    取得し、プログラムコードデータ全てをプログラムイメ
    ージ展開テーブルに展開する処理と、 プログラムイメージ展開テーブルに展開されているレコ
    ードより検索パターンを生成し、プログラムイメージ展
    開テーブルの検索により同一のパターンが見つかった場
    合、その検索パターンをサブルーチン格納テーブルにエ
    ントリーナンバーと共に格納し、最後尾に復帰命令を付
    加する処理と、 全てのパターン検索が終わると、プログラムイメージ展
    開テーブルのエントリー格納エリアを検索し、CALL
    命令に必要な分を除き、プログラムイメージ展開テーブ
    ルに格納されているデータを前にシフトし、全てのシフ
    トが終わると、プログラムイメージ展開テーブルの最後
    尾にサブルーチン格納テーブルに格納されているサブル
    ーチンを転送する処理と、 変更されたプログラムイメージ展開テーブルを基に、プ
    ログラム・エンド・アドレスを算出し、変更したファイ
    ルヘッダ部をファイルに書き出し、プログラムイメージ
    展開テーブルのオペランド格納エリアに格納されてい
    る、変更後のプログラムイメージデータを書き出す処理
    とを有することを特徴とする請求項1または2に記載の
    メモリ削減方法。
  4. 【請求項4】複数のプログラムに跨って同一パターンの
    ロジックを抜き出し、それぞれのプログラムで共通して
    使用可能にすることを特徴とする請求項1から3のいず
    れかに記載のメモリ削減装置。
  5. 【請求項5】実装プログラムのプログラムサイズを削減
    するメモリ削減装置において、 実行プログラムファイルを読み込んでその実行プログラ
    ムのコードを解析し、よりプログラムサイズが少なくな
    るようにプログラムコードを書き替え、別ファイルとし
    て出力することにより、プログラム上の重複する処理を
    自動的に検索しサブルーチン化することを特徴とするメ
    モリ削減装置。
  6. 【請求項6】実行プログラムを読み出すファイル読み込
    み処理部と、 ワークエリアに読み込まれたファイルヘッダ部から、プ
    ログラム・スタート・アドレス及びプログラム・エンド
    ・アドレスを取得するファイルヘッダ解析部と、 オペランドのパターンを格納しているコードパターンテ
    ーブルに登録されているオペランド規則に従い、オペラ
    ンドコード単位でプログラムイメージ展開テーブルへ転
    送し格納するコード部解析処理部と、 プログラムイメージ展開テーブルに展開されているレコ
    ードより検索パターンを生成し、プログラムイメージ展
    開テーブルの検索により同一のパターンが見つかった場
    合、その検索パターンをサブルーチン格納テーブルにエ
    ントリーナンバーと共に格納し、最後尾に復帰命令を付
    加するパターン抽出処理部と、 全てのパターン検索が終わると、プログラムイメージ展
    開テーブルのエントリー格納エリアを検索し、CALL
    命令に必要な分を除き、プログラムイメージ展開テーブ
    ルに格納されているデータを前にシフトし、全てのシフ
    トが終わると、プログラムイメージ展開テーブルの最後
    尾にサブルーチン格納テーブルに格納されているサブル
    ーチンを転送するパターン置換処理部と、 変更されたプログラムイメージ展開テーブルを基に、プ
    ログラム・エンド・アドレスを算出し、変更したファイ
    ルヘッダ部をファイルに書き出し、プログラムイメージ
    展開テーブルのオペランド格納エリアに格納されてい
    る、変更後のプログラムイメージデータを書き出すファ
    イル書き出し処理部とを有することを特徴とする請求項
    5に記載のメモリ削減装置。
JP15920599A 1999-06-07 1999-06-07 メモリ削減方法および装置 Expired - Fee Related JP3507728B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP15920599A JP3507728B2 (ja) 1999-06-07 1999-06-07 メモリ削減方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP15920599A JP3507728B2 (ja) 1999-06-07 1999-06-07 メモリ削減方法および装置

Publications (2)

Publication Number Publication Date
JP2000347878A true JP2000347878A (ja) 2000-12-15
JP3507728B2 JP3507728B2 (ja) 2004-03-15

Family

ID=15688628

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15920599A Expired - Fee Related JP3507728B2 (ja) 1999-06-07 1999-06-07 メモリ削減方法および装置

Country Status (1)

Country Link
JP (1) JP3507728B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005522772A (ja) * 2002-04-15 2005-07-28 ギーゼッケ ウント デフリエント ゲーエムベーハー コンパイラ生成プログラムコードの最適化
JP2008282336A (ja) * 2007-05-14 2008-11-20 Canon Inc ワークフロー生成装置、ワークフロー生成方法及びプログラム
JP2013210920A (ja) * 2012-03-30 2013-10-10 Nec Corp コンパイル装置、コンパイル方法及びコンパイラ

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005522772A (ja) * 2002-04-15 2005-07-28 ギーゼッケ ウント デフリエント ゲーエムベーハー コンパイラ生成プログラムコードの最適化
US7805718B2 (en) 2002-04-15 2010-09-28 Giesecke & Devrient Gmbh Optimisation of a compiler generated program code
JP2008282336A (ja) * 2007-05-14 2008-11-20 Canon Inc ワークフロー生成装置、ワークフロー生成方法及びプログラム
JP2013210920A (ja) * 2012-03-30 2013-10-10 Nec Corp コンパイル装置、コンパイル方法及びコンパイラ

Also Published As

Publication number Publication date
JP3507728B2 (ja) 2004-03-15

Similar Documents

Publication Publication Date Title
US7734091B2 (en) Pattern-matching system
JPH0784799A (ja) キャッシュ競合削減コンパイル方法
JP2000347878A (ja) メモリ削減方法および装置
US6343378B1 (en) Method of making link directive file and tool for making link directive file
JPH11272503A (ja) プログラムのテストデータ自動生成装置
JP3495230B2 (ja) エミュレーション処理方式
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
JP4362777B2 (ja) プログラミング装置、シンボル自動登録方法、プログラムおよび記録媒体
JP3758984B2 (ja) マイクロプロセッサ用目的コードの最適化装置、最適化方法及び最適化プログラムを記録した記録媒体
JPH09274570A (ja) コンパイル方法及びコンパイラシステム
JP3130870B2 (ja) メモリダンプファイル再構成方式
JPH06230951A (ja) プログラム開発支援装置
JPH08297569A (ja) ソースプログラム修正支援装置
JP3487936B2 (ja) 文字列データ検索装置
JP2001236243A (ja) デバッグ方法、および、デバッグ用プログラムを記録した記録媒体
JPH11327887A (ja) 自動部品化機能付コンパイラシステムおよび記録媒体
JPH08194685A (ja) 有限要素法における節点情報検索装置
JP2000132405A (ja) インライン展開処理装置及び方法
JP2001195257A (ja) プログラムをローディングする装置
CN117033260A (zh) 一种指令高速缓存中函数定位方法、装置、设备及介质
JP2616203B2 (ja) 翻訳システムにおける名標テーブルの管理方式
JPH04365135A (ja) 名前検索処理装置
JPH10254710A (ja) アセンブルリスト生成方式
JP2004295557A (ja) プログラムコードの入力支援装置
JPH0449421A (ja) ファイル編集方式

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20031209

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20031219

LAPS Cancellation because of no payment of annual fees