JP2000035891A - 組み込みソフトウェアの動的解析方法 - Google Patents

組み込みソフトウェアの動的解析方法

Info

Publication number
JP2000035891A
JP2000035891A JP10202267A JP20226798A JP2000035891A JP 2000035891 A JP2000035891 A JP 2000035891A JP 10202267 A JP10202267 A JP 10202267A JP 20226798 A JP20226798 A JP 20226798A JP 2000035891 A JP2000035891 A JP 2000035891A
Authority
JP
Japan
Prior art keywords
instruction
information
instruction code
simulation
embedded software
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
JP10202267A
Other languages
English (en)
Other versions
JP3492207B2 (ja
Inventor
Katsuya Kinoshita
克弥 木下
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 IC Microcomputer Systems Co Ltd
Original Assignee
NEC IC Microcomputer Systems 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 NEC IC Microcomputer Systems Co Ltd filed Critical NEC IC Microcomputer Systems Co Ltd
Priority to JP20226798A priority Critical patent/JP3492207B2/ja
Publication of JP2000035891A publication Critical patent/JP2000035891A/ja
Application granted granted Critical
Publication of JP3492207B2 publication Critical patent/JP3492207B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 効率良い最適化とコスト低減とを図ることが
できる組み込みソフトウェアの動的解析方法を実現す
る。 【解決手段】 対象となる組み込みソフトウェアを疑似
的に実行させ、命令コードの実行過程を表わすログ情報
を取得し、取得したログ情報を参照して命令コードの変
更、削除および並び替えを施して命令コードを縮小化と
処理速度の高速化を図る為、効率良い最適化を実現する
上、コスト低減を図る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、例えば、LSI等
に組み込まれるソフトウェアを最適化する組み込みソフ
トウェアの動的解析方法に関する。
【0002】
【従来の技術】従来より、ソースコードから生成される
オブジェクトコードについて、その実行順序の従属関係
を調べ、結果を格納するオペランドが後続の命令コード
に与える影響を求め、この影響度の大きい順に命令コー
ドを並べ替えて実行時間を最小にしたり、対象するハー
ドウェアに応じてオブジェクトコードサイズを縮小する
等の最適化を図る解析手法が知られており、この種の技
術としては例えば、特開平2−176938号公報に開
示されている。
【0003】
【発明が解決しようとする課題】ところで、従来の解析
手法に基づき、組み込みソフトウェアの開発を行う場
合、効率よくコードが生成されておらず、コードサイズ
が大きすぎて組み込もうとしているLSIのメモリサイ
ズに収納しきれないことがままある。その為、従来で
は、LSIのメモリ容量を増やしたり、対象となるLS
I自体を変更しなければならなくなる等の弊害があり、
結果的にコスト高を招致する要因にもなっている。ま
た、メモリ容量を増設したりLSI自体の変更を行わな
い場合でも、作成したソースコードを開発者が期待する
コードサイズになるまで何度も最適化し直す場合もあ
り、それによる開発工数の増加により、この点でもコス
ト高を招致する要因になっている。
【0004】さらに、高速化に関してはほとんどがコン
パイラやアセンブラの最適化に任せるしかなく、そうで
ない場合にもコンパイラやアセンブラがどのようなコー
ドを出力するかを考慮してソースコードを記述しなけれ
ばならず、効率良い最適化が望めない現状にある。
【0005】本発明は、このような事情に鑑みてなされ
たもので、効率良い最適化を実現する上、コスト低減を
図ることができる組み込みソフトウェアの動的解析方法
を提供することを目的としている。
【0006】
【課題を解決するための手段】上記目的を達成するた
め、請求項1に記載の発明では、対象となる組み込みソ
フトウェアを疑似的に実行させ、命令コードの実行過程
を表わすログ情報を取得し、取得したログ情報を参照し
て命令コードの変更、削除および並び替えを施して命令
コードを縮小化と処理速度の高速化を図るよう前記組み
込みソフトウェアを再構築することを特徴とする。
【0007】また、好ましい態様として請求項2〜4に
記載の動的解析方法によれば、インライン展開により削
除可能な無条件分岐命令を抽出し、抽出した無条件分岐
命令を削除したり、条件分岐命令の内、分岐先への飛ぶ
回数の多い命令について条件を逆にし、分岐先をこの条
件分岐のあとに挿入して実行時間を短縮化する。あるい
は無条件分岐命令の内、実行回数の多い無条件分岐命令
を削除し、飛び先をその無条件分岐の後に挿入して無条
件分岐命令文のサイズを縮小する。
【0008】本発明では、対象となる組み込みソフトウ
ェアを疑似的に実行させ、命令コードの実行過程を表わ
すログ情報を取得し、取得したログ情報を参照して命令
コードの変更、削除および並び替えを施して命令コード
を縮小化と処理速度の高速化を図る為、効率良い最適化
を実現する上、コスト低減を図ることが可能になる。
【0009】
【発明の実施の形態】以下、図面を参照して本発明の実
施の一形態について説明する。 (1)本発明の概要 本発明は、実際にシミュレータなどで組み込みソフトウ
ェアを実行し、その結果を基にして、命令コードの変更
や並び替えを行うことにより、命令コードのサイズを縮
小或いは拡大して、組み込みソフトウェアをより高速に
或いはよりコンパクトに再構築するものである。
【0010】(2)プログラム構成 次に、図1を参照して本発明による動的解析方法が適用
されるプログラム10の構成について説明する。プログ
ラム10は、組み込みソフトウェアの実行の情報を取得
し保存するログ保存部11と、組み込みソフトウェアを
実際にシミュレートするシミュレーション部12と、ロ
グ保存部11で保存した情報を解析し命令コードの再構
築を行う再構築部13と、再構築前のシミュレーション
の実行結果を保持するシミュレーション結果保持A部1
4と、再構築後のシミュレーションの実行結果を保持す
るシミュレーション結果保持B部15と、シミュレーシ
ョン結果保持A部14とシミュレーション結果保持B部
15とを比較する結果比較部16とから構成される。
【0011】ログ保存部11には、図6に図示する形態
でシミュレーション結果(実行情報)を保持するログ情
報保存テーブルを有しており、このテーブルに格納する
主要な情報としては、実際に実行したアドレス61、実
行した命令の飛び先アドレス62、実行した命令が条件
分岐命令か無条件分岐か或いは、関数呼び出しかなどを
識別する実行命令の属性63、この命令の実行回数6
4、それから条件分岐などの場合に分岐した実行回数6
5が挙げられる。
【0012】シミュレーション結果保持A部14、シミ
ュレーション結果保持B部15については、シミュレー
ションの実行前にあらかじめ残しておきたいメモリのア
ドレスを利用者により指定し、その情報の変更履歴を残
して保持しておく。これらの保存された情報を結果比較
部16で変更後に実行したメモリの情報と変更前に実行
したメモリの情報を比較し同じ変更履歴の情報が得られ
ることで命令コードの変更前と変更後のシミュレーショ
ン結果が同じである為変更後の命令コードが同じ動作と
立証できる。 再構築部13については、ログ保存部1
1で保存された情報を基に、既存の命令コードの並び替
え或いは命令コードの変更、命令コードの削除を行う。
【0013】(3)全体動作 次に、図2〜図13を参照して上記構成によるプログラ
ムの処理動作について説明する。このプログラムでは、
シミュレーション部12で組み込みソフトウェアをシミ
ュレーションし、その実行結果を条件分岐の飛び先アド
レスの情報や、呼び出し関数の情報、無条件分岐命令の
飛び先アドレスの情報などを保存するログ保存部11に
渡し解析データとして保持するようにし、次に図6、図
7、図8,図9、図10、図11、図12に図示する各
処理(後述する)を再構築部13によって解析し、組み
込みソフトウェアのコードサイズの縮小化あるいは、組
み込みソフトウェアの実行処理速度の高速化の為に命令
コードの変更、削除、並び替えを行う。
【0014】すなわち、上記構成によるプログラム10
の起動により、シミュレーション部12が図2に示すス
テップS21〜28を実行する。まずステップS21で
は、処理対象となる組み込みソフトウェアの命令コード
を実行する。そして、ステップS22では、その実行し
た命令が指定されているメモリに対してのアクセス命令
であるか否かを判断する。その判断は、指定したメモリ
へのアクセスした情報を保持するテーブル71を参照し
て行われる。
【0015】このテーブル71は、図7に図示するよう
に、実際にアクセスしたかどうかをチェックの対象とす
るメモリアドレス72とそのメモリアドレスへのアクセ
スした情報を格納してあるテーブル74を指すポインタ
73、そしてアクセスした情報を格納してあるテーブル
には、メモリへリードなのかライトなのかを識別するア
クセス属性75、アクセスしたメモリの値76、メモリ
をアクセスした命令のプログラムカウンタ77、次にこ
のアドレスをアクセスした情報を格納してあるテーブル
へのポインタ78から構成されている。
【0016】さて、こうしたテーブル71を参照して、
実行した命令が指定されているメモリへのアクセス命令
であるかどうかを判断した結果、メモリへのアクセス命
令であると、上記ステップS22の判断結果は「YE
S」となり、ステップS23に処理を進め、そのアクセ
ス情報(書き込みでか読み出しか、そのアクセスしたデ
ータの値など)をシミュレーション結果保持A部14に
情報を格納する。一方、格納処理が終了するか、あるい
は実行した命令が指定したメモリへのアクセスではなか
った場合には、上記ステップS22の判断結果が「N
O」となり、ステップS24に処理を進め、実行した命
令が、ログを残すべき命令(条件分岐、無条件分岐、関
数呼び出しなど)の実行かどうかをチェックする。
【0017】そして、チェックした結果が、ログを残す
命令ではなかった場合には、ここでの判断結果は「N
O」となり、次の命令を実行するために上述したステッ
プS21に処理を戻して次の命令を実行する。これに対
し、上記ステップS24のチェック結果が、ログを残す
命令であった場合には、判断結果が「YES」となり、
次のステップS25に処理を進め、その残すべき情報と
同じ情報がすでに存在しているかどうかを判断する。
【0018】そして、同じ情報がすでに存在している場
合、このステップS25の判断結果が「YES」とな
り、次のステップS26に進み、その情報の実行回数の
カウント値を1インクリントする。一方、同じ情報が存
在しない場合には、判断結果が「NO」となり、この場
合、ステップS27に処理を進めて、初めて実行された
命令として、ログ保存部11へその情報を格納すると同
時に実行回数を1として格納する。
【0019】こうして、保存するログ情報の処理が終了
すると、ステップS28に進み、シミュレーションを続
行するか否かを判断する。ここで、続行であれば、判断
結果が「NO」となり、次に命令を実行するために上述
したステップS21に処理を戻して次の命令を実行する
が、シミュレーション終了であれば、判断結果が「YE
S」となり、図3に示す一連の処理、すなわち、シミュ
レーションの実行でログ保存部11に保存された情報を
解析する再構築部13の処理に移行する。
【0020】さて、図3に示す再構築部13の処理に移
行すると、最初にステップS30において、ログ保存部
11で保存された情報を使って再構築を行うかどうかを
判断する。ここで、再構築の要求が無ければ、判断結果
が「NO」となり、シミュレーション実行および再構築
全ての処理を終了して後述するステップS51に処理を
進める。
【0021】一方、再構築の要求がある場合には、判断
結果が「YES」となり、ステップS31に処理を進
め、再構築部13によってログ保存部11からログ情報
が読み込まれ、続くステップS32では、組み込みソフ
トウェアの命令コードに関する情報(シンボル情報な
ど)を読み込む。そして、ステップS33では、読み込
んだログ情報と命令コードの情報とを基にして、これか
ら解析するために使用する解析用テーブル86(図8参
照)を作成する。
【0022】解析用テーブル86は、図8に図示するよ
うに、シミュレーションの実行に伴って保存しておいた
ログ情報テーブル81と、組み込みソフトウェアのシン
ボル情報や命令コードの情報のテーブル82とを結合し
たテーブルであって、「条件分岐命令の飛び先アドレス
とその回数」の情報か「無条件分岐命令の飛び先アドレ
スとその回数」かなど、ログ保存部11で保持する情報
を識別するログ情報の種類83、それからログ情報テー
ブルへのポインタ84、ソフトウェア情報テーブルへの
ポインタ85を管理するものである。
【0023】さて、こうした解析用テーブル86を基に
して、再構築部13では、図3に示すステップS34〜
S38にて、「条件分岐命令の飛び先アドレスとその回
数」、「無条件分岐命令の飛び先アドレスとその回
数」、「呼び出された関数とその回数」、「一度も実行
されなかった基本ブロック」、「一度も呼び出されなか
った関数」をそれぞれ解析し、それら解析結果から解析
用テーブル91(図9参照)を作成する(ステップS3
9)。この後、図4に示すステップS41に処理を進
め、解析用テーブル91を解析し、その解析結果から組
み込みソフトウェアのサイズを縮小可能かどうかを判断
する(ステップS42)。
【0024】そして、組み込みソフトウェアのサイズが
縮小可能と判断された場合には、ステップS42の判断
結果が「YES」となり、ステップS43に処理を進め
て命令コードの削除などのサイズを縮小する為の命令コ
ードの変更処理を行うが、縮小可能でないか或いは縮小
処理が終了した時には、上記ステップS42の判断結果
が「NO」となり、ステップS44に処理を進め、組み
込みソフトウェアの処理高速化が可能かどうかを判断す
る。
【0025】ここで、高速化が可能であると判断した場
合には、判断結果が「YES」となり、ステップS45
に処理を進め、関数のインライン展開や基本ブロックの
インライン展開など高速化の為の命令コードの変更を行
う。これに対し、高速化が可能でないと判断した場合に
は、ステップS46に処理を進め、その前の命令コード
を縮小する為の命令コード変更を行ったかどうかを判断
する。そして、縮小の為、高速化の為、或いは両方の命
令コードの変更を行った場合には、判断結果が「YE
S」となり、ステップS47に処理を進めて新たに生成
する命令コードのアドレスの解決処理を行う。一方、何
も命令コードに対しての処理を行わなかった場合には、
上記ステップS46の判断結果は「NO」となり、後述
するステップS51に処理を進める。
【0026】続いて、図5に示すステップS51では、
再構築された命令コードの検証を行うかどうかのチェッ
クをし、その必要が無い場合には判断結果が「NO」と
なって全ての処理を終了するが、立証の必要がある場合
には判断結果が「YES」となり、次のステップS52
に処理を進め、再構築された命令コードを使用してのシ
ミュレーションを再実行する。次いで、ステップS53
では、再構築した命令コードに基づき再実行されるシミ
ュレーションの過程で、予め指定したメモリへのアクセ
スを行う命令コードを実行したかどうかを判断する。
【0027】ここで、指定したメモリへのアクセスを行
う命令コードを実行した場合には、判断結果が「YE
S」となり、ステップS54に処理を進め、その情報を
シミュレーション結果保持B15部に格納する。一方、
指定したメモリへのアクセスする命令コードを実行して
いない場合には、上記ステップS53の判断結果は「N
O」となり、ステップS55に処理を進め、シミュレー
ションの継続かどうかをチェックし、継続であれば、再
びシミュレーションを行うべく上記ステップS52に処
理を戻す。
【0028】これに対し、シミュレーションの終了であ
れば、ステップS55の判断結果は「YES」となり、
ステップS56に進み、再構築前に保存しておいたシミ
ュレーション結果保持A部14と再構築後に保存したシ
ミュレーション結果保持B部15とからそれぞれデータ
を取り出して、結果比較部16で2つのデータを比較す
る。そして、ステップS57では、その比較結果が同じ
であるかどうかを判断し、同じであれば全ての処理を終
了するが、不一致である時にはステップS58に処理を
進め、再構築前の命令コードへ戻し、再構築できなかっ
た旨を通知してから処理完了させる。
【0029】(4)詳細動作 次に、命令コード変換、アドレス解決および実行結果比
較の各処理の動作について詳述する。さて、前述したス
テップS34〜S39では、「条件分岐命令の飛び先ア
ドレスとその回数」、「無条件分岐命令の飛び先アドレ
スとその回数」、「呼び出された関数とその回数」、
「一度も実行されなかった基本ブロック」、「一度も呼
び出されなかった関数」をそれぞれ解析し、それら解析
結果から解析用テーブル91を作成するが、この解析用
テーブル91は図9に図示するように、保存したログ情
報毎のテーブル92、93、94、95、96から形成
されるものである。
【0030】こうした再構築用テーブル91を基にし
て、解析結果を反映したテーブルとして、図10に示す
テーブル102、106が作成される。テーブル102
は命令コードを縮小する為の情報を管理するものであ
り、一方、テーブル106は処理を高速化する為の情報
を管理するテーブル106である。これらテーブル10
2,106では、命令コードへの反映のための優先順位
105、109を基にして解析用テーブル91へのポイ
ンタ103、107から実際の情報をたどっていけるよ
うになっている。また実際に命令コードへの反映を行っ
たかどうかを識別する為の情報として実施状況104、
108を有しておき、この情報で同じ事を何度も行わな
い様にする。
【0031】以下、これらテーブルに基づき命令コード
変換、アドレス解決および実行結果比較する各処理につ
いて図11〜図12を参照して詳述する。最初に図11
を参照して命令コード変換により組み込みソフトウェア
の処理高速化を図る為の解析方法について述べる。この
処理では、無条件分岐に着目して、削除可能な無条件分
岐命令を削除することで1命令分の実行時間の短縮が可
能となる。これは、いわゆるインライン展開である。
(111) また、条件分岐命令に着目し、分岐先への
飛ぶ回数の多い命令を条件を逆にし分岐先の基本ブロッ
クをこの条件分岐のあとに挿入することで高速化するこ
とができる。(112)
【0032】次に、図11により命令コードの削除する
ことで命令コードのサイズを小さくすることに関しての
解析方法を述べる。無条件分岐に着目し、実行回数の多
い無条件分岐命令を削除し、飛び先の基本ブロックをそ
の無条件分岐の後に挿入することで、無条件分岐命令文
のサイズを縮小することが可能となる(113)。
【0033】命令コード変更或いは削除によるアドレス
解決の方法に関しては、図12を使って説明する。ま
ず、基本ブロックA121、基本ブロックB122、基
本ブロックC123が変更されたことにより影響があっ
た基本ブロックとした場合、これを仮想のアドレス解決
用の領域124にはめ込んでいく。この仮想のアドレス
解決用の領域の先頭を仮に0x100とした場合そこか
らのオフセットにより、基本ブロックA,B,Cをアド
レス解決していき、最後にこの仮想のアドレス解決用の
領域の先頭アドレスを実際の組み込みソフトウエアの先
頭アドレスに変更し全てのアドレス情報を解決する(1
25)。
【0034】次に、シミュレーション結果保持A部14
とシミュレーション結果保持B部15との比較を行う方
法を述べる。メモリアドレス72(図7参照)から辿る
ことが可能なアクセス情報を格納してあるテーブルを1
つ1つたどりながら、シミュレーション結果保持A部1
4とシミュレーション結果保持B部15の情報を比較し
ていき、情報に過不足或いは情報に差異が無いかをチェ
ックする。この時アクセスしたPCに関しては、命令コ
ードのアドレス解決を行っている可能性があるので無視
する。
【0035】以上のように、本発明では、実際にシミュ
レータなどで組み込みソフトウェアを実行し、その結果
を基にして、命令コードの変更や並び替えを行うことに
より、命令コードのサイズを縮小或いは拡大して、組み
込みソフトウェアをより高速に或いはよりコンパクトに
再構築するようにしたので、指定したメモリサイズ内に
組み込みソフトウェアの命令コードを再構築することが
可能になる。この結果、組み込みソフトウェアが組み込
もうとしているLSIが保持しているメモリ内に収まる
ため、大きいメモリサイズのLSIへの変更が不要とな
り、コストの削減が得られる。
【0036】つまり、実行結果によって不要と判断した
命令コードの削除や命令コードの変更、命令コードの並
び替えによる命令コードの削除等で組み込みソフトウェ
アの命令コードサイズを調整し得る。また、シミュレー
ションの結果(再構築前と再構築後との実行経過情報を
比較した結果)を利用し命令コードを直接変更し再構築
するから、ソースコードの修正をユーザが行わないで済
むためか開発期間を短縮することができる。
【0037】なお、本発明の要旨は上述した実施の一形
態に限定されず、種々変形が可能であり、例えば、図1
3に示す変形例としても良い。すなわち、上述の実施の
一形態では、命令コードのサイズの縮小及び命令コード
の変更による高速化を同時に行っていたが、これにより
命令コードのサイズの縮小と高速化の命令コードの変更
は、相反する命令コードの変更になる場合も考えられ、
その一例としては高速化の為にインライン展開すると命
令コードが増えて命令コードの縮小にはつながらないこ
とが挙げられる。
【0038】そこで、図13に図示するように、まず再
構築用のテーブルを解析し(ステップS131)、再構
築用のテーブルを解析した後、利用者が命令コードの縮
小を希望しているのか、命令コードの変更による高速化
を希望しているのかを判断する(ステップS132)。
そして、もし命令コードの縮小を希望している場合に
は、命令コードの縮小に対応した変更処理のみを行い
(ステップS133)、一方、命令コードの変更による
高速化を希望している場合には、命令コードの縮小処理
に関しては一切無視した形で、高速化に対応した変更処
理のみを行う(ステップS134)。これにより、両方
の命令コードの変更を行い中途半端な変更処理になるの
を防ぐことが可能となる。
【0039】さらに、動的解析を高速にする為に、ログ
保存部11で保持する「条件分岐命令の飛び先アドレス
とその実行回数」、「呼び出された関数とその呼び出し
回数」、「無条件分岐命令の飛び先アドレスとその実行
回数」、「1度も呼び出されなかった関数」、「1度も
実行されなかった基本ブロック(ここでの基本ブロック
とは、分岐命令、ラベルで囲まれた命令コード群のこと
を言う)」および「どこからも呼び出しがない関数(関
数自体の呼び出し命令が無い場合)」を、起動時に利用
者が必要と思われる情報のみを選択し指定可能にするこ
とによってログ情報の格納に費やす時間及びそのログ情
報を基にして再構築するための解析に費やす時間を短縮
する態様としても良い。
【0040】
【発明の効果】本発明によれば、対象となる組み込みソ
フトウェアを疑似的に実行させ、命令コードの実行過程
を表わすログ情報を取得し、取得したログ情報を参照し
て命令コードの変更、削除および並び替えを施して命令
コードを縮小化と処理速度の高速化を図る為、効率良い
最適化を実現する上、コスト低減を図ることができる。
【図面の簡単な説明】
【図1】 本発明の実施の一形態によるプログラム構成
を示すブロック図である。
【図2】 動作を説明するためのフローチャートであ
る。
【図3】 動作を説明するためのフローチャートであ
る。
【図4】 動作を説明するためのフローチャートであ
る。
【図5】 動作を説明するためのフローチャートであ
る。
【図6】 ログ情報保存テーブルの構成を示す図であ
る。
【図7】 テーブル71の構成を示す図である。
【図8】 解析用テーブル86の構成を示す図である。
【図9】 解析用テーブル91の構成を示す図である。
【図10】 テーブル102、106の構成を示す図で
ある。
【図11】 命令コード変換処理を説明するための図で
ある。
【図12】 命令コード変更或いは削除によるアドレス
解決の方法を説明するための図である。
【図13】 変形例を説明するための図である。
【符号の説明】
10 プログラム 11 ログ保存部 12 シミュレーション部 13 再構築部 14 シミュレーション結果保持A部 15 シミュレーション結果保持B部 16 結果比較部
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成11年5月17日(1999.5.1
7)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正内容】
【特許請求の範囲】
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0006
【補正方法】変更
【補正内容】
【0006】
【課題を解決するための手段】上記目的を達成するた
め、請求項1に記載の発明では、処理対象となる組み込
みソフトウェアの命令コードを使用してシミュレーショ
ンを実行し、実行した命令コードが指定したメモリへの
アクセス命令であった場合にそのアクセス情報を第1の
シミュレーション結果保持部に格納すると共に実行した
前記命令コードがログを残すべき命令コードの実行であ
った場合に該当するログ情報とその累積実行回数をログ
保存部へ格納するステップと、前記ログ保存部から読み
込んだログ情報と前記命令コードの情報に基づき、条件
分岐命令の飛び先アドレスとその回数、無条件分岐命令
の飛び先アドレスとその回数、呼び出された関数とその
回数、一度も実行されなかった基本ブロック、一度も呼
び出されなかった関数をそれぞれ解析するステップと、
その解析結果から前記組み込みソフトウェアのサイズが
縮小可能であった場合に当該命令コードの削除又は変更
を行うステップと、前記解析結果から前記組み込みソフ
トウェアの処理高速化が可能であった場合に当該関数又
は当該基本ブロックのインライン展開を行うステップ
と、前記命令コードの削除、変更、又は前記インライン
展開により再構築された命令コードを使用して前記シミ
ュレーションを再実行し、実行した命令コードが指定し
たメモリへのアクセス命令であった場合にそのアクセス
情報を第2のシミュレーション結果保持部に格納するス
テップと、前記第1のシミュレーション結果保持部及び
前記第2のシミュレーション結果保持部に格納されたデ
ータを比較し、再構築前後の命令コードが同じ動作をす
るかどうかを検証するステップとを備えることを特徴と
する。

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 対象となる組み込みソフトウェアを疑似
    的に実行させ、命令コードの実行過程を表わすログ情報
    を取得し、取得したログ情報を参照して命令コードの変
    更、削除および並び替えを施して命令コードを縮小化と
    処理速度の高速化を図るよう前記組み込みソフトウェア
    を再構築することを特徴とする組み込みソフトウェアの
    動的解析方法。
  2. 【請求項2】 インライン展開により削除可能な無条件
    分岐命令を抽出し、抽出した無条件分岐命令を削除して
    実行時間を短縮化することを特徴とする請求項1記載の
    組み込みソフトウェアの動的解析方法。
  3. 【請求項3】 条件分岐命令の内、分岐先への飛ぶ回数
    の多い命令について条件を逆にし、分岐先をこの条件分
    岐のあとに挿入して実行時間を短縮化することを特徴と
    する請求項1記載の組み込みソフトウェアの動的解析方
    法。
  4. 【請求項4】 無条件分岐命令の内、実行回数の多い無
    条件分岐命令を削除し、飛び先をその無条件分岐の後に
    挿入して無条件分岐命令文のサイズを縮小することを特
    徴とする請求項1記載の組み込みソフトウェアの動的解
    析方法。
JP20226798A 1998-07-16 1998-07-16 組み込みソフトウェアの動的解析方法 Expired - Fee Related JP3492207B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20226798A JP3492207B2 (ja) 1998-07-16 1998-07-16 組み込みソフトウェアの動的解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20226798A JP3492207B2 (ja) 1998-07-16 1998-07-16 組み込みソフトウェアの動的解析方法

Publications (2)

Publication Number Publication Date
JP2000035891A true JP2000035891A (ja) 2000-02-02
JP3492207B2 JP3492207B2 (ja) 2004-02-03

Family

ID=16454719

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20226798A Expired - Fee Related JP3492207B2 (ja) 1998-07-16 1998-07-16 組み込みソフトウェアの動的解析方法

Country Status (1)

Country Link
JP (1) JP3492207B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9383980B2 (en) 2013-02-22 2016-07-05 International Business Machines Corporation Determining a method to inline using an actual footprint calculation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9383980B2 (en) 2013-02-22 2016-07-05 International Business Machines Corporation Determining a method to inline using an actual footprint calculation

Also Published As

Publication number Publication date
JP3492207B2 (ja) 2004-02-03

Similar Documents

Publication Publication Date Title
US5325531A (en) Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
US5313387A (en) Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers
US5170465A (en) Incremental-scanning compiler for source-code development system
US5182806A (en) Incremental compiler for source-code development system
US5201050A (en) Line-skip compiler for source-code development system
US5193191A (en) Incremental linking in source-code development system
US9009726B2 (en) Deterministic sharing of data among concurrent tasks using pre-defined deterministic conflict resolution policies
US9015690B2 (en) Proactive loop fusion of non-adjacent loops with intervening control flow instructions
JP5681473B2 (ja) プログラムの最適化装置、最適化方法および最適化プログラム
US7584462B2 (en) System for optimizing application start-up
JP2000507373A (ja) インタラクティブソフトウェア開発システム
JP4181326B2 (ja) コード最適化のための方法、装置及びプログラム
US20100095286A1 (en) Register reduction and liveness analysis techniques for program code
JP2010211816A (ja) プログラムコード変換方法
US7908592B2 (en) Software/hardware partitioning program and method
US5937191A (en) Determining and reporting data accessing activity of a program
JP4833206B2 (ja) 最適化されたプログラムのためのアンワインド情報の生成
JPH11110194A (ja) 外部ライブラリ関数との結合方法ならびに同方法がプログラムされ記録される記録媒体
US20050028148A1 (en) Method for dynamic recompilation of a program
Guihot Pro Android apps performance optimization
JP2007304840A (ja) コンパイル方法、デバッグ方法、コンパイルプログラムおよびデバッグプログラム
US5301327A (en) Virtual memory management for source-code development system
US6519768B1 (en) Instruction translation method
US7779393B1 (en) System and method for efficient verification of memory consistency model compliance
EP0406028A2 (en) Incremental compiler for source code development system

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20010619

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071114

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081114

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081114

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091114

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091114

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101114

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101114

Year of fee payment: 7

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101114

Year of fee payment: 7

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111114

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111114

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121114

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121114

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131114

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees