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

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

Info

Publication number
JP3492207B2
JP3492207B2 JP20226798A JP20226798A JP3492207B2 JP 3492207 B2 JP3492207 B2 JP 3492207B2 JP 20226798 A JP20226798 A JP 20226798A JP 20226798 A JP20226798 A JP 20226798A JP 3492207 B2 JP3492207 B2 JP 3492207B2
Authority
JP
Japan
Prior art keywords
instruction
instruction code
embedded software
information
executed
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.)
Expired - Fee Related
Application number
JP20226798A
Other languages
English (en)
Other versions
JP2000035891A (ja
Inventor
克弥 木下
Original Assignee
Necマイクロシステム株式会社
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マイクロシステム株式会社 filed Critical Necマイクロシステム株式会社
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

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

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、例えば、LSI等
に組み込まれるソフトウェアを最適化する組み込みソフ
トウェアの動的解析方法に関する。
【0002】
【従来の技術】従来より、ソースコードから生成される
オブジェクトコードについて、その実行順序の従属関係
を調べ、結果を格納するオペランドが後続の命令コード
に与える影響を求め、この影響度の大きい順に命令コー
ドを並べ替えて実行時間を最小にしたり、対象するハー
ドウェアに応じてオブジェクトコードサイズを縮小する
等の最適化を図る解析手法が知られており、この種の技
術としては例えば、特開平2−176938号公報に開
示されている。
【0003】
【発明が解決しようとする課題】ところで、従来の解析
手法に基づき、組み込みソフトウェアの開発を行う場
合、効率よくコードが生成されておらず、コードサイズ
が大きすぎて組み込もうとしているLSIのメモリサイ
ズに収納しきれないことがままある。その為、従来で
は、LSIのメモリ容量を増やしたり、対象となるLS
I自体を変更しなければならなくなる等の弊害があり、
結果的にコスト高を招致する要因にもなっている。ま
た、メモリ容量を増設したりLSI自体の変更を行わな
い場合でも、作成したソースコードを開発者が期待する
コードサイズになるまで何度も最適化し直す場合もあ
り、それによる開発工数の増加により、この点でもコス
ト高を招致する要因になっている。
【0004】さらに、高速化に関してはほとんどがコン
パイラやアセンブラの最適化に任せるしかなく、そうで
ない場合にもコンパイラやアセンブラがどのようなコー
ドを出力するかを考慮してソースコードを記述しなけれ
ばならず、効率良い最適化が望めない現状にある。
【0005】本発明は、このような事情に鑑みてなされ
たもので、効率良い最適化を実現する上、コスト低減を
図ることができる組み込みソフトウェアの動的解析方法
を提供することを目的としている。
【0006】
【課題を解決するための手段】上記目的を達成するた
め、請求項1に記載の発明では、処理対象となる組み込
みソフトウェアの命令コードを使用してシミュレーショ
ンを実行し、実行した命令コードが指定したメモリへの
アクセス命令であった場合にそのアクセス情報を第1の
シミュレーション結果保持部に格納すると共に実行した
前記命令コードがログを残すべき命令コードの実行であ
った場合に該当するログ情報とその累積実行回数をログ
保存部へ格納するステップと、前記ログ保存部から読み
込んだログ情報と前記命令コードの情報に基づき、条件
分岐命令の飛び先アドレスとその回数、無条件分岐命令
の飛び先アドレスとその回数、呼び出された関数とその
回数、一度も実行されなかった基本ブロック、一度も呼
び出されなかった関数をそれぞれ解析するステップと、
その解析結果から前記組み込みソフトウェアのサイズが
縮小可能であった場合に当該命令コードの削除又は変更
を行うステップと、前記解析結果から前記組み込みソフ
トウェアの処理高速化が可能であった場合に当該関数
当該基本ブロックのインライン展開を行うステップ
と、前記命令コードの削除、変更、又は前記インライン
展開により再構築された命令コードを使用して前記シミ
ュレーションを再実行し、実行した命令コードが指定し
たメモリへのアクセス命令であった場合にそのアクセス
情報を第2のシミュレーション結果保持部に格納するス
テップと、前記第1のシミュレーション結果保持部及び
前記第2のシミュレーション結果保持部に格納されたデ
ータを比較し、再構築前後の命令コードが同じ動作をす
るかどうかを検証するステップとを備えることを特徴と
する。
【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 結果比較部
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平9−319587(JP,A) 特開 平4−273533(JP,A) 特開 昭63−276127(JP,A) 特開 平2−176938(JP,A) 特開 平9−114677(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/44 G06F 9/06 G06F 11/34

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 処理対象となる組み込みソフトウェアの
    命令コードを使用してシミュレーションを実行し、実行
    した命令コードが指定したメモリへのアクセス命令であ
    った場合にそのアクセス情報を第1のシミュレーション
    結果保持部に格納すると共に実行した前記命令コードが
    ログを残すべき命令コードの実行であった場合に該当す
    るログ情報とその累積実行回数をログ保存部へ格納する
    ステップと、 前記ログ保存部から読み込んだログ情報と前記命令コー
    ドの情報に基づき、条件分岐命令の飛び先アドレスとそ
    の回数、無条件分岐命令の飛び先アドレスとその回数、
    呼び出された関数とその回数、一度も実行されなかった
    基本ブロック、一度も呼び出されなかった関数をそれぞ
    れ解析するステップと、 その解析結果から前記組み込みソフトウェアのサイズが
    縮小可能であった場合に当該命令コードの削除又は変更
    を行うステップと、 前記解析結果から前記組み込みソフトウェアの処理高速
    化が可能であった場合に当該関数及び当該基本ブロック
    のインライン展開を行うステップと、 前記命令コードの削除、変更、又は前記インライン展開
    により再構築された命令コードを使用して前記シミュレ
    ーションを再実行し、実行した命令コードが指定したメ
    モリへのアクセス命令であった場合にそのアクセス情報
    を第2のシミュレーション結果保持部に格納するステッ
    プと、 前記第1のシミュレーション結果保持部及び前記第2の
    シミュレーション結果保持部に格納されたデータを比較
    し、再構築前後の命令コードが同じ動作をするかどうか
    を検証するステップとを備えることを特徴とする組み込
    みソフトウェアの動的解析方法。
  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 JP2000035891A (ja) 2000-02-02
JP3492207B2 true 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)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6080602B2 (ja) 2013-02-22 2017-02-15 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 実フットプリント算出方法、該算出方法を用いたインラインするメソッドの決定方法、装置及びプログラム

Also Published As

Publication number Publication date
JP2000035891A (ja) 2000-02-02

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
KR101354796B1 (ko) 소프트웨어 트랜잭션 메모리 블록들을 포함하는 프로그램의컴파일을 위한 방법
US7921407B2 (en) System and method for supporting multiple alternative methods for executing transactions
US9015690B2 (en) Proactive loop fusion of non-adjacent loops with intervening control flow instructions
US7779393B1 (en) System and method for efficient verification of memory consistency model compliance
JP2000507373A (ja) インタラクティブソフトウェア開発システム
US5937191A (en) Determining and reporting data accessing activity of a program
JP2010532530A (ja) メモリトランザクションのグループ化
JP2007286671A (ja) ソフトウェア/ハードウェア分割プログラム、および分割方法。
CN110990001A (zh) Ivr流程执行方法及装置
US5301327A (en) Virtual memory management for source-code development system
EP0406028A2 (en) Incremental compiler for source code development system
JP3492207B2 (ja) 組み込みソフトウェアの動的解析方法
KR0125605B1 (ko) 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치
JP5186562B2 (ja) トランザクションメモリのオブジェクトモデル
JPH10320212A (ja) キャッシュ向け最適化方法
JP5276094B2 (ja) トランザクション・メモリ・システムにおけるトランザクション・コード・ブロックを効果的に検索する方法
US6782523B2 (en) Parallel configurable IP design methodology
US8732672B2 (en) Constraint derivation in context following for use with object code insertion
US20230266950A1 (en) Methods and devices for compiler function fusion

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