JP2007034650A - ソフトウェア開発システム - Google Patents

ソフトウェア開発システム Download PDF

Info

Publication number
JP2007034650A
JP2007034650A JP2005216662A JP2005216662A JP2007034650A JP 2007034650 A JP2007034650 A JP 2007034650A JP 2005216662 A JP2005216662 A JP 2005216662A JP 2005216662 A JP2005216662 A JP 2005216662A JP 2007034650 A JP2007034650 A JP 2007034650A
Authority
JP
Japan
Prior art keywords
program
target program
software development
development system
compiler
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.)
Withdrawn
Application number
JP2005216662A
Other languages
English (en)
Inventor
Kazuo Nishikata
和夫 西片
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 Electronics Corp
Original Assignee
NEC Electronics Corp
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 Electronics Corp filed Critical NEC Electronics Corp
Priority to JP2005216662A priority Critical patent/JP2007034650A/ja
Publication of JP2007034650A publication Critical patent/JP2007034650A/ja
Withdrawn legal-status Critical Current

Links

Images

Abstract

【課題】ソフトウェアの開発効率の向上。
【解決手段】本発明に係るソフトウェア開発システム100は、原始プログラム11をコンパイルし目的プログラム12を生成するコンパイラと、その目的プログラム12を実行する実行モジュール30とを備える。コンパイラ20は、アドレス更新機能付きメモリアクセス命令をサポートするプロセッサ1に対応するように、目的プログラム12の最適化を行う。その最適化において、コンパイラ20は、条件分岐を挟んで実行されるアドレス更新とメモリアクセスを、条件分岐の前に実行される1ステップの命令にまとめる。更に、コンパイラ20は、目的プログラム12中の最適化が行われた位置を示す最適化位置データ13を生成する。実行モジュール30は、未初期化・未定義のメモリ領域へのアクセスが行われる場合に警告を発する機能を有する。この実行モジュール30は、上記最適化位置データ13に示された位置のコードを実行する際は、警告を発しない。
【選択図】 図4

Description

本発明は、ソフトウェアを開発するための技術に関する。
ソフトウェアの開発において、コンパイラは重要な役割を果たす。コンパイラは、原始プログラム(ソースコード)をコンパイルし、目的プログラム(実行コード)を生成する。また、コンパイラは、目的プログラムのサイズや効率が向上するように、プログラム構成を最適化する。その最適化手法は、目的プログラムを実行するプロセッサの機能によって大きく異なってくる。言い換えれば、あるプロセッサに関して、どのような最適化方法を用いるかによって、目的プログラムの性能に大きな差が生じてしまう。このように、目的プログラムが適用されるシステムの性能を最大限に引き出す上で、コンパイラにおける最適化技術は、非常に重要な役割を果たす。
コンパイルに関連する技術は、例えば特許文献1に開示されている。特許文献1に記載されたコンパイル装置は、分岐履歴情報採取コード生成手段と、分岐パターン解析手段と、ループ最適化手段とを含む。分岐履歴情報採取コード生成手段は、オブジェクトプログラムに含まれる各ループ処理の実行毎の繰り返し数と該ループ処理内の条件分岐命令の分岐履歴の情報とを採取するためのコードを生成する。分岐パターン解析手段は、分岐履歴情報ファイルに記録された情報に基づいて、対象となるループ処理内の分岐パターンの解析を行う。ループ最適化手段は、分岐パターン解析手段による解析結果に基づいて、対象となるループ処理を効率良く実行するのに最適なコードを生成する。
あるプロセッサの機能として、「アドレス更新機能付きメモリアクセス機能」が知られている。図1は、その機能を説明するための概念図である。図1には、アドレス更新機能付きメモリアクセス機能を有するプロセッサ1と、そのプロセッサ1がアクセスするメインメモリ2が示されている。プロセッサ1は、レジスタdp0やレジスタr0を含んでいる。レジスタdp0には、メインメモリ2のアドレス(番地)を示す値“0x100”が格納されているとする。このようなプロセッサ1において、例えば、次のような命令が実行される場合を考える。
r0 = *++dp0
この命令は、「レジスタdp0の値を1増加させ、レジスタdp0で示されるアドレスからデータを読み出し、そのデータをレジスタr0にセットする」という命令である。この場合、レジスタdp0の値がインクリメントされ、“0x101”になる。また、メインメモリ2の番地0x101から、値“0xff”が読み出される。その値“0xff”は、レジスタr0に格納される。
上述の例において、レジスタdp0の値を1増加させる動作が「アドレス更新」であり、レジスタdp0で示されるアドレスからデータを読み出す動作が「メモリアクセス」である。上述の命令によれば、アドレス更新とメモリアクセスが1ステップで実行される。このような命令が、「アドレス更新機能付きメモリアクセス命令」と呼ばれる。図1におけるプロセッサ1は、このアドレス更新機能付きメモリアクセス命令をサポートしており、アドレス更新機能付きメモリアクセス機能を有している。
このような機能を有するプロセッサ1に対応するコンパイラの最適化手法として、図2に示された手法が知られている。図2には、あるプログラムの流れの一部が示されている。最適化が行われない場合、まずアドレス更新が行われる(ステップS1)。次に、ある条件が満たされているか否かの判定が行われる(ステップS2)。その条件が満たされている場合(ステップS2;Yes)、続けて第1処理(ステップS3)、メモリアクセス(ステップS4)、及び第2処理(ステップS5)が実行される。その条件が満たされない場合(ステップS2;No)、ステップS3〜S5は実行されない。
プロセッサ1がアドレス更新機能付きメモリアクセス機能を有する場合、コンパイラは、上記処理を次のように最適化することができる。すなわち、まず「アドレス更新機能付きメモリアクセス命令」が実行される(ステップS11)。次に、上記条件が満たされているか否かの判定が行われる(ステップS12)。その条件が満たされている場合(ステップS12;Yes)、続けて第1処理(ステップS13)及び第2処理(ステップS14)が実行される。その条件が満たされない場合(ステップS12;No)、ステップS13〜S14は実行されない。
このように、条件分岐を挟んで実行される2つの「アドレス更新」と「メモリアクセス」を、条件分岐の前に実行される1つの「アドレス更新機能付きメモリアクセス」にまとめることが可能である。これにより、コードのサイズが削減される。また、条件分岐において条件が満たされる場合(ステップS2、S12;Yes)、続けて行われる処理ステップの数が1つだけ減少する。その結果、プログラムの実行速度が向上する。すなわち、図2に示される最適化を行うことにより、目的プログラムの効率や性能を向上させることが可能となる。メモリアクセスが条件分岐前に実行され、アドレス更新が条件分岐後に実行される場合であっても、同様の最適化が可能である。
図3は、一般的なソフトウェア開発環境を説明するための図である。コンパイラ80は、原始プログラム11をコンパイルすることにより、目的プログラム12を生成する。開発される目的プログラム12(ソフトウェア)は、マイコンなどの製品3に搭載される。この製品3は、「アドレス更新機能付きメモリアクセス機能」を有する上記プロセッサ1を備えており、目的プログラム12はそのプロセッサ1により実行される。そのため、コンパイラ80は、図2に示された手法に基づいて、目的プログラム12の最適化を行う。
尚、上述の最適化が行われる場合、条件分岐の前に、プログラム開発者の意図しないメモリアクセスが発生するという副作用も発生する。つまり、原始プログラム11が意図通りに作成されたとしても、コンパイラ80によるコンパイルの結果、目的プログラム12は、プログラム開発者の意図しないメモリアクセスを含んでしまう。但し、この副作用は、プログラムの正常な実行を妨げるわけでは無いので、通常は無視される。意図しないメモリアクセスを含む目的プログラム12がそのまま製品3に搭載されても、特に問題は生じない。
特開平10−240573号公報
ソフトウェアの開発において、生成される目的プログラム12のデバッグや動作検証も必要である。例えば図3に示されるように、シミュレーションモジュール90が用いられる。このシミュレーションモジュール90は、プロセッサ1と目的プログラム12を搭載した製品3をシミュレートするように構成されたハードウェアあるいはソフトウェアである。シミュレーションモジュール90は、目的プログラム12を実行する実行部91を備えている。この実行部91は、目的プログラム12の実行中に未初期化・未定義のメモリ領域へのアクセスが行われた場合、開発者に対して警告を発する「警告機能」を備えている。この警告機能は、開発者が目的プログラム12中の不具合を発見する助けとなる。
上述の通り、コンパイラ80により最適化された目的プログラム12は、プログラム開発者の意図しないメモリアクセスを含んでいる。そのようなメモリアクセスは、プログラムの正常動作を妨げるわけではないが、シミュレーションモジュール90は、そのようなメモリアクセスに対しても警告を発する可能性がある。しかしながら、開発者は、そのようなメモリアクセスによる警告と、本当の不具合による警告とを区別することはできない。従って、警告が発せられた場合、開発者は、問題点やプログラムの解析を無駄に行ってしまう可能性がある。これは、時間の無駄であり、開発効率の低下を招く。
以下に、[発明を実施するための最良の形態]で使用される番号・符号を用いて、[課題を解決するための手段]を説明する。これらの番号・符号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
本発明に係るソフトウェア開発システム(100)は、原始プログラム(11)をコンパイルし目的プログラム(12)を生成するコンパイラと、その目的プログラム(12)を実行する実行モジュール(30)とを備える。その実行モジュール(30)は、例えば、目的プログラム(12)が搭載される製品(3)をシミュレートするためのシミュレーションモジュール(30)である。
コンパイラ(20)は、アドレス更新とメモリアクセスを1ステップで実行する「第1命令(アドレス更新機能付きメモリアクセス命令)」をサポートするプロセッサ(1)に対応するように、目的プログラム(12)の最適化を行う。その最適化において、コンパイラ(20)は、条件分岐を挟んで実行されるアドレス更新とメモリアクセスを、条件分岐の前に実行される1ステップの上記第1命令にまとめる。更に、コンパイラ(20)は、目的プログラム(12)中の最適化が行われた位置を示す最適化位置データ(13)を生成する。
実行モジュール(30)は、未初期化・未定義のメモリ領域へのアクセスが行われる場合に警告を発する機能を有する。この実行モジュール(30)は、上記最適化位置データ(13)に示された位置を参照しながら、目的プログラム(12)を実行する。具体的には、実行モジュール(30)は、目的プログラム(12)中の上記位置のコードを実行する際は、警告を発しない。つまり、実行モジュール(30)は、無視可能な未初期化・未定義のメモリ領域へのアクセスに対して警告を行わず、本当の不具合に起因する警告のみを発する。
従って、開発者は無駄なプログラム解析を行う必要がなくなり、開発時間の浪費が抑制される。また、開発者は、本来の警告機能を有効に活用することが可能となる。その結果、ソフトウェアの開発効率が向上する。
本発明に係るソフトウェア開発システムによれば、開発効率が向上する。
添付図面を参照して、本発明によるソフトウェア開発システムを説明する。
図4は、本発明の実施の形態に係るソフトウェア開発環境を説明するための図である。コンパイラ20は、原始プログラム11をコンパイルすることにより、目的プログラム12を生成する。その目的プログラム12(ソフトウェア)は、マイコンなどの製品に搭載される。その製品は、「アドレス更新機能付きメモリアクセス機能」を有するプロセッサ1を備えており、目的プログラム12はそのプロセッサ1により実行される。そのため、コンパイラ20は、図2に示された手法に基づいて、プロセッサ1に対応するように目的プログラム12の最適化を行う。すなわち、コンパイラ20は、条件分岐を挟んで実行される「アドレス更新」と「メモリアクセス」を、条件分岐の前に実行される1ステップの「アドレス更新機能付きメモリアクセス命令」にまとめる。
また、本実施の形態に係るコンパイラ20は、目的プログラム12中の最適化が行われた位置を示す最適化位置データ13を生成する。つまり、最適化位置データ13は、条件分岐前後の「アドレス更新」と「メモリアクセス」がまとめられた「アドレス更新機能付きメモリアクセス命令」の位置を示す。更に言い換えれば、最適化位置データ13は、図2に示されたステップS11の位置を示す。目的プログラム12中の位置とは、ステップS11の目的プログラム12内でのアドレス(オフセット位置)を意味する。例えば、最適化位置データ13には、“0x010”といったアドレスを示す値が格納される。
コンパイラ20によって生成された目的プログラム12は、実行モジュールにより実行される。図4において、その実行モジュールの例として、生成された目的プログラム12のデバッグや動作検証を行うためのシミュレーションモジュール30が示されている。このシミュレーションモジュール30は、プロセッサ1と目的プログラム12を搭載した製品をシミュレートするように構成される。後述されるように、このシミュレーションモジュール30は、ハードウェアで構成されてもよいし、ソフトウェアで構成されてもよい。
目的プログラム12のデバッグや動作検証を行うためには、プログラムの異常動作を検知し開発者に通知する機能が必要である。そのため、本実施の形態に係るシミュレーションモジュール30は、目的プログラム12の実行中に未初期化・未定義のメモリ領域へのアクセスが行われた場合、開発者に対して警告を発する機能を備えている。この機能は、以下「警告機能」と参照される。シミュレーションモジュール30の警告機能は、開発者が目的プログラム12中の不具合を発見する助けとなる。
図4に示されるように、シミュレーションモジュール30は、実行部31と判定部32を有している。実行部31は、目的プログラム12を実行する。実行中の目的プログラム12の不具合を検出するため、この実行部31は、上述の警告機能を有する。判定部32は、最適化位置データ13を読み込む。そして、判定部32は、現在実行中の目的プログラム12の位置が、最適化位置データ13に示されている位置と一致するかどうか判定する。一致する場合、判定部32は、実行部31にマスク信号を出力する。実行部31は、マスク信号を受け取った場合、未初期化・未定義のメモリ領域へのアクセスが行われたとしても、警告を発しない。
図5は、シミュレーションモジュール30による処理を示すフローチャートである。シミュレーションモジュール30は、目的プログラム12の実行を開始する(ステップS100)。目的プログラム12中のある位置で、メインメモリに対するアクセスが行われる(ステップS110)。そのメモリアクセスが未初期化・未定義のメモリ領域へのアクセスではない場合(ステップS111;No)、処理が引き続き実行される(ステップS120)。
未初期化・未定義のメモリ領域へのアクセスが行われた時は(ステップS111;Yes)、警告が発せられる場合と、警告が発せられない場合がある。ステップS111におけるメモリアクセスが、最適化位置データ13に示された位置のメモリアクセスである場合(ステップS112;Yes)、判定部32は、実行部31にマスク信号を出力している。従って、シミュレーションモジュール30は、警告を出さずに処理を続行する(ステップS120)。つまり、シミュレーションモジュール30は、未初期化・未定義のメモリ領域へのアクセスが行われていないように振る舞う。
一方、ステップS111におけるメモリアクセスが、最適化位置データ13に示された位置のメモリアクセスではない場合(ステップS112;No)、シミュレーションモジュール30は、開発者に警告を与える(ステップS200)。この場合の警告は無視できない本当の不具合に起因する可能性が高い。未初期化・未定義のメモリ領域へのアクセスの原因は、原始プログラム11に存在する可能性が高い。従って、開発者は、プログラムの解析を行い、問題点を検討する(ステップS210)。
目的プログラム12が最後まで実行されると(ステップS130;Yes)、シミュレーションモジュール30の処理は終了する。
このように、本実施の形態に係るシミュレーションモジュール30は、最適化位置データ13に示された位置情報を参照しながら目的プログラム12を実行し、不必要な場合は警告を発しない。具体的には、最適化位置データ13に示された位置の「アドレス更新機能付きメモリアクセス命令」を実行する際、シミュレーションモジュール30は、警告を発しない。すなわち、シミュレーションモジュール30は、無視可能な未初期化・未定義のメモリ領域へのアクセスに対して警告を行わず、本当の不具合に起因する警告のみを発する。従って、開発者は無駄なプログラム解析を行う必要がなくなり、開発時間の浪費が抑制される。また、開発者は、本来の警告機能を有効に活用することが可能となる。その結果、ソフトウェアの開発効率が向上する。
以上に説明されたソフトウェア開発を実現するための具体的なシステム構成が、以下に例示される。
図6は、ソフトウェア開発システム100の一例を示している。このソフトウェア開発システム100は、目的プログラム開発装置200と目的プログラム実行装置300を含んでいる。目的プログラム開発装置200は、目的プログラム12を開発するための装置であり、例えばパーソナルコンピュータにより実現される。目的プログラム実行装置300は、目的プログラム12を実行するための装置であり、上記シミュレーションモジュール(実行モジュール)30に対応している。
目的プログラム開発装置200は、演算処理装置210、メインメモリ220、記憶装置230、入力装置240、表示装置250、及びインタフェース260を備えており、それらはバスを介して互いに通信可能に接続されている。記憶装置230としては、ハードディスクドライブが例示される。この記憶装置230には、原始プログラム11、目的プログラム12、最適化位置データ13、コンパイラ20、及びデバッガ40が格納されている。入力装置240としては、マウスやキーボードが例示される。表示装置250としては、液晶ディスプレイが例示される。
目的プログラム実行装置300は、ハードウェアであり、製品と同じように目的プログラム12を実行できるように構成される。具体的には、目的プログラム実行装置300は、プロセッサ310、メインメモリ320、格納部330、及びインタフェース360を備えており、それらはバスを介して互いに通信可能に接続されている。格納部330は、最適化位置データ13を格納するための記憶領域であり、その格納部330として、不揮発性メモリが例示される。
プロセッサ310は、上述の実行部31に対応している。目的プログラム12を実行するため、プロセッサ310は、「アドレス更新機能付きメモリアクセス機能」を有している。つまり、プロセッサ310は、アドレス更新機能付きメモリアクセス命令をサポートしている。また、プロセッサ310は、目的プログラム12の実行中に未初期化・未定義のメモリ領域へのアクセスが行われた場合に警告を発する「警告機能」も有している。更に、プロセッサ310は、最適化位置データ13を参照する上述の判定部32も有している。
目的プログラム開発装置200と目的プログラム実行装置300は、インタフェース260及び360を介して、互いに通信可能に接続される。これにより、目的プログラム開発装置200と目的プログラム実行装置300との間で、データのやりとりを行うことが可能である。
このようなソフトウェア開発システム100を用いて、ソフトウェアは次のように開発される。開発者は、表示装置250に表示される情報を参照し、入力装置240を用いることによって原始プログラム11を編集する。次に、開発者は、コンパイラ20を起動する。このコンパイラ20は、演算処理装置210によって、メインメモリ220にロードされ実行される。コンパイラ20の命令に従って、演算処理装置210は、次のような処理を行う。すなわち、演算処理装置210は、記憶装置230から原始プログラム11を読み込み、その原始プログラム11をコンパイルする。ここで、図2に示された最適化が行われる。このコンパイルの結果、最適化された目的プログラム12と、最適化された位置を示す最適化位置データ13が生成される。演算処理装置210は、これら目的プログラム12及び最適化位置データ13を、記憶装置230に格納する。
次に、開発者は、デバッガ40を起動する。このデバッガ40は、演算処理装置210によって、メインメモリ220にロードされ実行される。デバッガ40の命令に従って、演算処理装置210は、目的プログラム12と最適化位置データ13を、記憶装置230から目的プログラム実行装置300に送信する。目的プログラム12は、メインメモリ320に格納され、プロセッサ310により実行される。最適化位置データ13は、格納部330に格納される。開発者による指示に応答して、デバッガ40は、目的プログラム実行装置300に目的プログラム12の実行を開始させる。
目的プログラム実行装置300において、プロセッサ310は、図5に示された処理を実行する。つまり、プロセッサ310は、最適化位置データ13を参照しながら、目的プログラム12を実行する。最適化位置データ13に示された位置のコードを実行する際、プロセッサ310は警告を出力しない。一方、未初期化・未定義のメモリ領域へのアクセスが行われ、そのコードの位置が最適化位置データ13に示された位置と一致しない場合、プロセッサ310は警告を出力する。その警告を示す信号は、目的プログラム開発装置200に送られ、表示装置250には警告メッセージが表示される。不具合を通知された開発者は、原始プログラム11や目的プログラム12の解析を行う。
また、シミュレーションモジュール30は、ソフトウェア的に構成されてもよい。図7は、シミュレーションモジュール30がソフトウェアで構成された場合のソフトウェア開発システム100’を示している。図7において、図6と同様の構成には同一の符号が付され、その説明は適宜省略される。
図7において、記憶装置230には、ソフトウェアとしてのシミュレータ300’が格納されている。このシミュレータ300’が、上記シミュレーションモジュール(実行モジュール)30に対応している。このシミュレータ300’は、演算処理装置210によって実行されるソフトウェアであり、図6に示された目的プログラム実行装置300の機能をソフトウェア的に実現している。つまり、上述のプロセッサ310やメインメモリ320は、仮想的にコンピュータ上に構築される。
目的プログラム12と最適化位置データ13が生成された後、開発者は、シミュレータ300’を起動する。このシミュレータ300’は、演算処理装置210によって、メインメモリ220にロードされ実行される。シミュレータ300’の命令に従って、演算処理装置210は、記憶装置230に格納された目的プログラム12と最適化位置データ13を読み込む。目的プログラム12は、このシミュレータ300’上において実行される、すなわち、仮想的なプロセッサ310により実行される。シミュレータ300’の処理内容は、目的プログラム実行装置300の処理内容と同一である。
本発明に係るソフトウェア開発システム100、100’によれば、開発者は無駄なプログラム解析を行う必要がなくなる。よって、開発時間の浪費が抑制される。また、開発者は、シミュレーションモジュールの本来の警告機能を有効に活用することが可能となる。その結果、ソフトウェアの開発効率が向上する。
図1は、アドレス更新機能付きメモリアクセス機能を説明するための概念図である。 図2は、コンパイラによる最適化の例を示す図である。 図3は、従来のソフトウェア開発環境を示すブロック図である。 図4は、本発明に係るソフトウェア開発環境を示すブロック図である。 図5は、本発明に係るシミュレーションモジュールによる目的プログラムの実行処理を示すフローチャートである。 図6は、本発明に係るソフトウェア開発システムの構成の一例を示すブロック図である。 図7は、本発明に係るソフトウェア開発システムの構成の他の例を示すブロック図である。
符号の説明
1 プロセッサ
11 原始プログラム
12 目的プログラム
13 最適化位置データ
20 コンパイラ
30 シミュレーションモジュール
31 実行部
32 判定部
40 デバッガ
100 ソフトウェア開発システム
200 目的プログラム開発装置
210 演算処理装置
220 メインメモリ
230 記憶装置
240 入力装置
250 表示装置
260 インタフェース
300 目的プログラム実行装置
300’ シミュレータ
310 プロセッサ
320 メインメモリ
330 格納部
360 インタフェース

Claims (10)

  1. 原始プログラムをコンパイルし目的プログラムを生成するコンパイラと、
    前記目的プログラムを実行する実行モジュールと
    を備え、
    前記コンパイラは、アドレス更新とメモリアクセスを1ステップで実行する第1命令をサポートするプロセッサに対応するように前記目的プログラムの最適化を行い、また、前記目的プログラム中の前記最適化が行われた位置を示す最適化位置データを生成し、
    前記実行モジュールは、前記最適化位置データに示された前記位置を参照しながら、前記目的プログラムを実行する
    ソフトウェア開発システム。
  2. 請求項1に記載のソフトウェア開発システムであって、
    前記実行モジュールは、未初期化・未定義のメモリ領域へのアクセスが行われる場合に警告を発する機能を有し、前記目的プログラム中の前記位置のコードを実行する際は、前記警告を発しない
    ソフトウェア開発システム。
  3. 請求項1又は2に記載のソフトウェア開発システムであって、
    前記最適化において、前記コンパイラは、条件分岐を挟んで実行されるアドレス更新とメモリアクセスを、前記条件分岐の前に実行される1ステップの前記第1命令にまとめる
    ソフトウェア開発システム。
  4. 請求項3に記載のソフトウェア開発システムであって、
    前記最適化位置データは、前記目的プログラム中の前記まとめられた前記第1命令の位置を示す
    ソフトウェア開発システム。
  5. 請求項1乃至4のいずれかに記載のソフトウェア開発システムであって、
    前記コンパイラを実行する演算処理装置と、
    前記原始プログラムが格納される記憶装置と
    を更に備え、
    前記演算処理装置は、前記記憶装置から前記原始プログラムを読み込み、前記コンパイラの命令に従って前記原始プログラムをコンパイルし、生成される前記目的プログラム及び前記最適化位置データを前記記憶装置に格納する
    ソフトウェア開発システム。
  6. 請求項5に記載のソフトウェア開発システムであって、
    前記実行モジュールは、前記演算処理装置により実行されるソフトウェアであり、
    前記演算処理装置は、前記実行モジュールの命令に従い、前記記憶装置に格納された前記目的プログラム及び前記最適化位置データを読み込み、
    前記ソフトウェア上において前記目的プログラムが実行される
    ソフトウェア開発システム。
  7. 請求項5に記載のソフトウェア開発システムであって、
    前記実行モジュールは、前記記憶装置と通信可能なハードウェアであり、前記第1命令をサポートする第1プロセッサを備え、
    前記第1プロセッサは、前記記憶装置から送信される前記目的プログラムを実行する
    ソフトウェア開発システム。
  8. 目的プログラムを開発するためのプログラム開発装置と、
    前記プログラム開発装置と通信可能に接続されたプログラム実行装置と
    を具備し、
    前記プログラム実行装置は、アドレス更新とメインメモリへのアクセスを1ステップで実行する第1命令をサポートするプロセッサを備え、
    前記プロセッサは、未初期化・未定義のメモリ領域へのアクセスが行われる場合に警告を発する機能を有し、
    前記プログラム開発装置は、原始プログラムをコンパイルすることによって前記目的プログラムを生成するコンパイラを備え、
    前記コンパイラは、前記プロセッサに対応するように前記目的プログラムの最適化を行い、また、前記目的プログラム中の前記最適化が行われた位置を示す最適化位置データを生成し、
    前記プログラム実行装置は、前記目的プログラムと前記最適化位置データを前記プログラム開発装置から受け取り、
    前記プロセッサは、前記最適化位置データを参照しながら前記目的プログラムを実行し、前記目的プログラム中の前記位置のコードを実行する際は、前記警告を発しない
    ソフトウェア開発システム。
  9. 請求項8に記載のソフトウェア開発システムであって、
    前記最適化において、前記コンパイラは、条件分岐を挟んで実行されるアドレス更新とメモリアクセスを、前記条件分岐の前に実行される1ステップの前記第1命令にまとめる
    ソフトウェア開発システム。
  10. 請求項9に記載のソフトウェア開発システムであって、
    前記最適化位置データは、前記目的プログラム中の前記まとめられた前記第1命令の位置を示す
    ソフトウェア開発システム。
JP2005216662A 2005-07-27 2005-07-27 ソフトウェア開発システム Withdrawn JP2007034650A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005216662A JP2007034650A (ja) 2005-07-27 2005-07-27 ソフトウェア開発システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005216662A JP2007034650A (ja) 2005-07-27 2005-07-27 ソフトウェア開発システム

Publications (1)

Publication Number Publication Date
JP2007034650A true JP2007034650A (ja) 2007-02-08

Family

ID=37793838

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005216662A Withdrawn JP2007034650A (ja) 2005-07-27 2005-07-27 ソフトウェア開発システム

Country Status (1)

Country Link
JP (1) JP2007034650A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944037A (zh) * 2009-07-06 2011-01-12 北京中电华大电子设计有限责任公司 一种开发系统仿真智能卡芯片ram随机性的方法
US8930905B2 (en) 2012-03-05 2015-01-06 Samsung Electronics Co., Ltd. System and method for providing a guideline for optimizing platform

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101944037A (zh) * 2009-07-06 2011-01-12 北京中电华大电子设计有限责任公司 一种开发系统仿真智能卡芯片ram随机性的方法
US8930905B2 (en) 2012-03-05 2015-01-06 Samsung Electronics Co., Ltd. System and method for providing a guideline for optimizing platform

Similar Documents

Publication Publication Date Title
US6587995B1 (en) Enhanced programmable core model with integrated graphical debugging functionality
US8170859B1 (en) Methods, apparatuses and computer program products for simulating arbitrary unmodified code
US20090144705A1 (en) Debugging device and debugging method
JPH11232138A (ja) エミュレーション方法
US9292265B2 (en) Method for convergence analysis based on thread variance analysis
US8359561B2 (en) Equivalence verification between transaction level models and RTL at the example to processors
EP2223213B1 (en) Multi language software code analysis
US20110307688A1 (en) Synthesis system for pipelined digital circuits
JPH11194957A (ja) デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体
Bouchhima et al. Automatic instrumentation of embedded software for high level hardware/software co-simulation
JP6342129B2 (ja) 混合モードプログラムのソースコードエラー位置検出装置及び方法
US20100275185A1 (en) System and Method for High Performance Coverage Analysis
US7240334B1 (en) Methods, systems, and computer program products for deferred computer program tracing
US20130024675A1 (en) Return address optimisation for a dynamic code translator
US10380313B1 (en) Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration
US20080127118A1 (en) Method and system for dynamic patching of software
JPH0748182B2 (ja) プログラム・エラー検出方法
US7243059B2 (en) Simulation of hardware based on smart buffer objects
JP2007034650A (ja) ソフトウェア開発システム
Chen et al. CARE: Compiler-assisted recovery from soft failures
US20030070117A1 (en) Simulation apparatus and simulation method
Langdon Debugging cuda
JPH06309193A (ja) 機械語プログラムの動作検証方法および装置
Hexsel cMIPS–a synthesizable VHDL model for the classical five stage pipeline
JP2011145880A (ja) 半導体集積回路の論理検証にて使用するテストタスクの生成方法

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20081007