JP4632666B2 - コンパイラ生成プログラムコードの最適化 - Google Patents

コンパイラ生成プログラムコードの最適化 Download PDF

Info

Publication number
JP4632666B2
JP4632666B2 JP2003584915A JP2003584915A JP4632666B2 JP 4632666 B2 JP4632666 B2 JP 4632666B2 JP 2003584915 A JP2003584915 A JP 2003584915A JP 2003584915 A JP2003584915 A JP 2003584915A JP 4632666 B2 JP4632666 B2 JP 4632666B2
Authority
JP
Japan
Prior art keywords
code
library
program code
program
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.)
Expired - Fee Related
Application number
JP2003584915A
Other languages
English (en)
Other versions
JP2005522772A5 (ja
JP2005522772A (ja
Inventor
バルディシュヴァイラー,ミヒァエル
ネス,ヴェルナー
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.)
Giesecke and Devrient GmbH
Original Assignee
Giesecke and Devrient GmbH
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 Giesecke and Devrient GmbH filed Critical Giesecke and Devrient GmbH
Publication of JP2005522772A publication Critical patent/JP2005522772A/ja
Publication of JP2005522772A5 publication Critical patent/JP2005522772A5/ja
Application granted granted Critical
Publication of JP4632666B2 publication Critical patent/JP4632666B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • G06F8/4436Exlining; Procedural abstraction

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

本発明は携帯型データ記憶媒体のプログラミング及び携帯型データ記憶媒体によるプログラムの実行に関する。本明細書の意図する範囲にある携帯型データ記憶媒体は、特に、様々な構成の、ICカード(スマートカード)またはICモジュールとすることができる。
今日普通に用いられているような携帯型データ記憶媒体は、プロセッサコア及び様々な技術でつくられた複数のメモリを有する。代表的構成においては、例えば、マスクプログラムROM,電気的に消去及びプログラミングすることが可能なEEPROM及び書込可能なRAMが備えられる。RAMはプログラム実行中の作業メモリとしてはたらき、一方、プロセッサコアにより実行されるべきプログラムコードはROM及び/またはEEPROMに格納することができる。データ記憶媒体の上記及び同様の構成は非特許文献1に説明されている。
一般に、EEPROMのメモリセルはROMメモリセルのほぼ4倍のチップ面積を占める。したがって、チップ面積を節約するため、または同じ面積で利用できるメモリ容量をより大きくするため、実行可能なプログラムコードはROMに可能な限り大規模に収められることが望ましい。しかし、マスクプログラムROMの内容は、大多数のデータ記憶媒体に対し、マスクプログラムの生産段階の初期に変更不能な態様で定められる必要がある。対照的に、EEPROMの書込は、あるシリーズのデータ記憶媒体の完成及び初期化時、あるいは個々のデータ記憶媒体が個人化されるときに限り、行なわれる。したがって、より高いフレキシビリティのため、実行可能なプログラムコードはEEPROMに可能な限り大規模に格納されることが有利である。このことは、少生産量のデータ記憶媒体並びに大量生産の場合の欠陥の訂正及び付加機能の導入のいずれにも当てはまる。
ダブリュー・ランクル(W. Rankl)及びダブリュー・エッフィング(W. Effing)著,「ICカードハンドブック(Handbuch der Chipkarten)」,第3版,ハンザー・ヴァーラグ(Hanser Verlag),1999年,第3.4節
本発明の課題は、携帯型データ記憶媒体のプログラミングにおいて、一方では可能な限り大規模にマスクプログラムROMまたは同等のメモリを用い、他方では、プログラム変更のため及び/または少生産量におけるデータ記憶媒体の生産のために可能な限り高いフレキシビリティを達成することにある。
上記課題は、本発明によれば、特許請求項1の特徴を有する方法、特許請求項8にしたがうコンピュータプログラム製品及び特許請求項10にしたがう携帯型データ記憶媒体により、完全にまたはある程度解決される。従属請求項は本発明の好ましい発展形を定める。方法に関する特許請求項において箇条書きにされているステップのシーケンスは、保護の範囲を限定するものとして理解されるべきではない。むしろ、本発明の発展形は、これらのステップが異なるシーケンスで、あるいは完全にまたは部分的に並行に、あるいは完全にまたは部分的に互いにインターリーブされて、実施される態様で提供される。
本発明は、プログラムコードを最適化する目的のために多数のライブラリコードフラグメントを収めている既定のライブラリを使用するという基本概念に基づく。本発明にしたがう最適化法では、最適化されるべきプログラムコードから、その一部について、効果または機能がそれぞれ1つのライブラリコードフラグメントに対応しているプログラムコードフラグメントを探す検索がなされる。そのようなプログラムコードフラグメントは、対応するライブラリコードフラグメントのそれぞれ1つのコールで置き換えられる。最適化されたプログラムコードはデータ記憶媒体の第1のメモリ領域(例えばEEPROM)に格納され、一方、ライブラリは第2のメモリ領域(例えばROM)に格納されて提供される。
発明者等により実施された試験では、本発明にしたがう最適化手順により、第1のメモリ領域に与えられるプログラムコードサイズが著しく縮小した。現実的な大きさのライブラリでは、ライブラリコードフラグメントに対応するプログラムコードの部分はごくわずかしか見つからないであろうと誰もが直感的にみなすであろうから、この結果は予想外である。
本発明によりもたらされるコードサイズの縮小により、あらかじめ定められた大きさのメモリをもつデータ記憶媒体の場合に、付加機能のためのプログラムコードを第1のメモリ領域に含めることができるという結果が得られる。第1のメモリ領域がEEPROMとして、または同等な技術で、構成されていれば、このプログラムコードは、データ記憶媒体の完成時または初期化時または個人化時にロードするだけでよい。したがって、多数の機能を実施するプログラムコードは、コンパクトであることから、高速に、少生産量のデータ記憶媒体の場合も、あるいはただ1つのデータ記憶媒体の場合であっても、変更するかまたは新たに書き込むことができる。
本発明にしたがえば、既定のライブラリは第2のメモリ領域、すなわち、例えばマスクプログラムROMにおかれる。通常、本発明にしたがう最適化により達成されるプログラムコードの節約分は、ライブラリサイズより小さい。しかし、そのような場合であっても、貴重な第1のメモリ領域がより有効に利用されるから、本発明の適用が有利である。コンパイラ生成プログラムコードにおいては、多くのコードフラグメントがあり、いずれの場合においても、コードフラグメント群をライブラリのそれぞれ1つの単一コードフラグメントで置き換えることができ、ライブラリが必要とされないわずかなコードフラグメントしかもっていない場合、それでも、最適化によりライブラリ長より大きくプログラムコードが縮小されるという結果を得ることができる。この場合、第1及び第2のメモリ領域が1つの同じ物理メモリ領域の論理区画であったとしても、本発明の使用が有利である。
本発明にしたがえば、最適化の目的のため、プログラムコードフラグメントを探す検索、すなわち対応するライブラリコードフラグメントで置き換えることができるコンパイラ生成プログラムコードの区画についての検索が実施される。これに続く最適化手順は、プログラム作成中にプログラマが考慮する必要はない。詳しくは、プログラマがライブラリルーチンのコールに対してプログラムで準備しておく必要はない。すなわち、本発明によりプログラミングがさらに困難になることは決してない。
本明細書における用語の選択において、“プログラムコード”または“コードフラグメント”は、リンクの前後で実行可能な機械コード及び対応するアッセンブラソースコードの両方を表すとされる。言い換えれば、本発明の様々な発展形において、本発明にしたがう最適化手順は、コンパイラ生成アッセンブラソースコードベースでも、既にアッセンブルされた機械コードベースでも、実行され得る。コンパイラ生成アッセンブラソースコードベースの場合、アッセンブル及び、必要であればリンクが、最適化後にのみ実施される。同様に、ライブラリは最適化中にアッセンブラソースコードとしておよび/または既にアッセンブルされた機械コードとして利用可能とすることができる。
一般に、ライブラリコードフラグメントによるプログラムコードフラグメントの置換は、いずれのコードフラグメントも相互に対応する機能を果たす場合には必ず可能である。この関係において、例えば、コードフラグメント内の個々の命令が何の問題もない態様で交換されるとしても、置換手順を開始するためにコードフラグメントの正確な効果に関して複雑な計算が実施され得る。対照的に、特に単純な例示的実施形態においては、コードフラグメントがコードフラグメントにより定められる機械コードに関して一致している場合に限り置換が実施される。しかし、この単純な発展形の場合においてさえ、例えば、コードフラグメント内にないジャンプ先をもつジャンプを有するコードフラグメントは一般に置き換えることができないという事実により、コードフラグメントの確実な解析が必要である。
手続きコールと同様の態様で、1つまたはそれより多くのパラメータ(例えば、メモリアドレスまたは数値)をもつパラメータ化されたコードフラグメントが用いられる場合に置き換えがおこる場合がある。
ライブラリコードフラグメントは通常、プログラムコードに挿入されたサブルーチンコール命令によりコールされることが好ましい。次いで、ライブラリコードフラグメントに続いて直ちに、復帰命令がライブラリに与えられる。いくつかの実施形態において、置き換えられるべきコードフラグメントがプログラムフローと干渉する場合に、このルールの例外が適用され得る。例えば、コードフラグメントがサブルーチン復帰命令で終わっている場合は、通常、ジャンプ命令を用いてコールが実施され得る。
本発明にしたがえば、用いられるライブラリは既定である。すなわち、その時の最適化実行で処理されるプログラムコードに依存しない。しかし、可能な最善の最適化結果を達成するため、頻繁に発生するプログラムコード構造に対する適切なコードフラグメントを収録するように、ライブラリが設計されることが好ましい。そのような頻繁に発生するコード区画は、特に、ハードウエア及び/またはデータ記憶媒体のオペレーティングシステム及び/またはコンパイラ生成プログラムコードの生成に用いられるコンパイラに依存し得る。
本発明にしたがって提供されるコンピュータプログラム製品は、特に、例えば電子的または磁気的または光学的なメモリ媒体のようなコンピュータ読出可能なデータ記憶媒体とすることができるが、物理的データ記憶媒体に限定されない。コンピュータプログラム製品は、本発明にしたがう最適化ステップを実行するプログラムコードをもつ。コンピュータプログラム製品は、さらに、コンパイラ及び/またはアッセンブラ及び/またはリンカー及び/またはローダープログラムを含むことが好ましい。
本発明にしたがうコンピュータプログラム製品及び本発明にしたがう携帯型データ記憶媒体は、上に説明された特徴/または方法に関する特許請求項に述べられる特徴に相当する特徴をもって開発されることが好ましい。
本発明にしたがうコンピュータプログラム製品及び本発明にしたがう携帯型データ記憶媒体は、上に説明された特徴/または方法に関する特許請求項に述べられる特徴に相当する特徴をもって開発されることが好ましい。
本発明のさらなる特徴、目的及び利点は、以下の例示的実施形態及び複数の代替実施形態の説明によって開示される。
唯一の図面(図1)に示される略図を参照する。
本発明は、本明細書に説明される例示的実施形態では、ICカードとして構成される、携帯型データ記憶媒体10のプログラミングに用いられる。データ記憶媒体10は、既知のいずれかの態様で、プロセッサコア12を有する半導体IC、マスクプログラムROM14、EEPROM16、RAM18、及び無接触または接触型通信のためのインターフェース20を備える。上記の構成要素はバス22を介して相互に接続されている。別の実施形態において、3つのメモリ領域14,16,18は別の技術によって構成することもでき、特に、フラッシュメモリ技術をROM24及び/またはEEPROM16に用いることができる。
第1及び第2のメモリ領域24,26はメモリ領域14,16,18に論理的に設けられる。第1のメモリ領域24は実行可能な機械コードの形態の最適化されたプログラムコードを受け取る働きをする。同様に実行可能な機械コードの形態の既定のライブラリ28が第2のメモリ領域26に格納される。本明細書に説明される例示的実施形態では、第1のメモリ領域24はEEPROM16に位置し、第2のメモリ領域26はROM14に位置している。既知のいずれかの態様で、ROM14は、第2のメモリ領域26に加えて、さらに、例えばデータ記憶媒体10のオペレーティングシステムを構成する、不変のあらかじめ定められたルーチンをもつ。EEPROM16はさらに、データ記憶媒体10に不揮発性データとして格納されるべきデータのためのファイルシステムを含む。
ライブラリ28は多数のあらかじめ定められたライブラリコードフラグメント30A,30B,30C,...を有し、これらは以下で全体として30xで表される。図1において、より明解な表示のため、ライブラリコードフラグメント30xはアッセンブラソースコードとして示される。通常、それぞれのライブラリコードフラグメント30xの直後には(以下で全体として32xで表される)サブルーチン復帰命令32A,32B,...が続く。しかし、例えば、ライブラリコードフラグメント30xのプログラムフローのそれぞれがEXIT命令で終了するか、またはライブラリコードフラグメント30xに含まれるサブルーチン復帰命令で終了するという事実により、ライブラリコードフラグメント30xの実行に至ることができなければ、サブルーチン復帰命令32xを省略することができる。
携帯型データ記憶媒体10のためのプログラム開発は、図1にプログラム言語Cで例示的に表される高水準言語ソースコード34が基になる。図1に示される区画は、入力レジスタINPORTの1の位から数えて第3ビットが値“0”をとるまで待ち、次いで出力レジスタOUTPORTを16進数値“FF”に設定する。既知のいずれかのコンパイラ36が高水準言語ソースコード34を、図1では6805命令セットに対するアッセンブラソースコードの形態で表されているコンパイラ生成プログラムコード38に変換する。別の実施形態では、それぞれがプロセッサコア12にしたがう別の命令セットが提供される。
最適化プログラム40が、本例示的実施形態に肝要な最適化ステップを実行する。最適化プログラム40は、コンパイラ生成プログラムコード38を処理し、さらに、ライブラリ28に収められているライブラリコードフラグメント30xに関する情報にアクセスする。別の実施形態の変形例において、この情報は、例えば、ライブラリ28のアッセンブラソースコードでのコピー及び/またはライブラリ28の実行可能な機械コードでのコピー及び/または適切な記述言語での個々のライブラリコードフラグメント30xの効果の仕様を含むことができる。さらに、最適化プログラム40により実施される検索手順の速度を高めるため、例えばインデックスまたはハッシュテーブルのような、付加情報が提供され得る。
最適化プログラム40は、プロセッサコア12による実行において、ライブラリ28に収められているライブラリコードフラグメント30xの機能と同じ機能を有する、コンパイラ生成プログラムコード38に含まれるプログラムコードフラグメント42を識別する。本例示的実施形態においては、この目的のため、コンパイラ生成プログラムコード38がライブラリ28内の個々の収録項目とアッセンブラソーステキストレベルで比較される、比較的単純な手順が用いられる。この場合、短形の命令並びにアドレス及び数値情報に関しては、テキスト上での比較を実施することができる。対照的に、記号ジャンプ先は、比較に先立ち、標準化された形または相対数値に変換される必要がある。別の実施形態では、対照的に、アッセンブルされた機械コードの形態で既に存在するコンパイラ生成プログラムコード38に基づいて最適化が実施され得る。
比較手順において対応するライブラリコードフラグメント30xが見いだされたプログラムコードフラグメント42が、最適化手順において、このライブラリコードフラグメント30xのコールで置き換えられる。例えば、図1において、プログラムコードフラグメント42とライブラリコードフラグメント30Bが、ジャンプ先の記号指定を除いて一致している。したがって、最適化されたプログラムコード44において、最適化プログラム40はこのプログラムコードフラグメント42をライブラリコードフラグメント30Bのコールで置き換える。本例において、このコールはサブルーチンコール命令46として構成される。本例において、プログラムコードフラグメント42は7バイト長の機械コードに相当し、サブルーチンコール命令46には3バイトしか必要ではないから、最適化されたプログラムコード44に必要なメモリ空間は置換によってかなり縮小された。
最適化の完了に続いて、最適化済プログラムコード44は、アッセンブラ48により、プロセッサコア12で実行され得る機械コードに変換される。おそらくは必要な別のプログラム部分とのリンク操作に続いて、データ記憶媒体10の完成時または初期化時または個人化時に、コードが第1のメモリ領域24にロードされる。ライブラリ28は、データ記憶媒体10のためのICが作成されたときから既に第2のメモリ領域26に存在している。よって、データ記憶媒体10は使用の準備ができている。上述した翻訳、最適化及びアッセンブルステップは、コンパイラ36,最適化プログラム40及びアッセンブラ48を実行する(図1には示されていない)汎用コンピュータで実施される。
データ記憶媒体10の動作において、プロセッサコア12によるプログラム実行が第1のメモリ領域24におけるサブルーチンコール命令46の位置に達すると、第2のメモリ領域26にあるライブラリコードフラグメント30Bがサブルーチンとして実行される。実際上、実行される命令は最適化時に取り除かれたプログラムコードフラグメント42に正確に一致する。これらの命令の実行に続いて、サブルーチン復帰コマンド32Bがトリガとなって、プロセッサコア12は、サブルーチンコール命令46の直後にある第1のメモリ領域24の命令への復帰を実行する。
最適化中にプログラムの機能が変わらないことが保証されなければならない。したがって、例えば、プログラムコードフラグメント42の外にあるジャンプ先を有するかもしれないジャンプ命令を有するプログラムコードフラグメント42は、精密な解析後にのみ置き換えられるべきである。プログラムコードフラグメント42の可能なフローのそれぞれがEXIT命令またはサブルーチン復帰命令で終了していれば置換が許容される。しかし、そのような場合、対応するライブラリコードフラグメント30xはサブルーチンコール命令を用いるのではなく、通常のジャンプ命令を用いてコールされる。ライブラリ28がそれ以上の制約なしに用いられ得るようなライブラリコードフラグメント30xだけをもつように、これらの要件を正にライブラリ28の作成時に含めることもできる。
ライブラリ28は可能な限り頻繁に適切なライブラリコードフラグメント32xを提供し、よって可能な限り多くの最適化可能性を提供するような構成をもつべきである。すなわち、例えば、図1のライブラリコードフラグメント30Bはデータ記憶媒体10のハードウエア特性に整合される。このライブラリコードフラグメント30Bにおいて要求される入力ビットが頻繁に要求される信号値に相当すれば、対応するプログラムコードフラグメント42が、データ記憶媒体10の大きく異なる用途に対してさえもコンパイラ生成プログラムコード38に再三再四現れると想定されるべきである。同様に、頻繁に現れるオペレーティングシステムコールを、対応するライブラリコードフラグメント30xによってカバーすることができる。コンパイラ生成プログラムコード38において反復するコードフラグメントの別のソースは、コンパイラ36におけるコード生成が一定の方式にしたがって実施され、この結果、反復して発生するコード構造が生成されるという事実から生じる。
したがって、全体として、ライブラリ28の作成の目的のためには、データ記憶媒体10のハードウエア及びオペレーティングシステムに対して選定される多数の用途についてコンパイラ36により生成されるプログラムコード38を統計的に評価することが有利である。
携帯型データ記憶媒体及び本発明の例示的実施形態におけるプログラムコードの様々なバージョンの図を示す
符号の説明
10 携帯型データ記憶媒体
12 プロセッサコア
24,26 プログラム領域
28 既定ライブラリ
30x ライブラリコードフラグメント
34 高水準言語ソースコード
36 コンパイラ
38 コンパイラ生成プログラムコード
42 プログラムコードフラグメント
44 最適化済プログラムコード
46 サブルーチンコール命令

Claims (12)

  1. プロセッサコア(12)並びに第1及び第2のメモリ領域(24,26)を有する携帯型データ記憶媒体(10)を対象とするコンパイラ生成プログラムコード(38)を最適化するための方法において、
    − 前記第1のメモリ領域(24)は最適化されたプログラムコード(44)を受け取るように準備され、
    − 前記第2のメモリ領域(26)は多数のライブラリコードフラグメント(30x)を有する既定のライブラリ(28)を受け取るように準備され、
    前記既定のライブラリ(28)の内容が、最適化実行で処理される前記コンパイラ生成プログラムコード(38)から独立したものであり、
    前記方法最適化プログラム(40)を実行する汎用コンピュータが、前記コンパイラ生成プログラムコード(38)から、少なくともそれぞれの効果に関して、前記ライブラリコードフラグメント(30x)のそれぞれ1つに対応しているプログラムコードフラグメント(42)を探す検索行な、これにより見いだされた前記プログラムコードフラグメント(42)前記汎用コンピュータが、前記対応するライブラリコードフラグメント(30x)のそれぞれ1つのコールで置き換える最適化の手順を含むものである
    ことを特徴とする方法。
  2. プログラムコードフラグメント(42)とライブラリコードフラグメント(30x)の実行可能な機械コードとしての形態が一致する場合にのみ、前記汎用コンピュータが、プログラムコードフラグメント(42)ライブラリコードフラグメント(30x)置き換えることを特徴とする請求項1に記載の方法。
  3. 前記コンパイラ生成プログラムコード(38)がアッセンブラソースコードの形態で存在し、前記最適化の手順がソースコードレベルで実施されることを特徴とする請求項1記載の方法。
  4. 前記ライブラリコードフラグメント(30x)の内の少なくともいくつかが、パラメータとして1つまたはそれ以上のメモリアドレス又は数値を伴って呼び出されるものであることを特徴とする請求項1に記載の方法。
  5. 前記汎用コンピュータが、前記プログラムコードフラグメント(42)、前記対応するライブラリコードフラグメント(30x)へのサブルーチンコール命令(46)に置き換えることを特徴とする請求項1から4のいずれか1項に記載の方法。
  6. 前記プログラムコードフラグメント(42)がサブルーチン復帰命令で終わっている場合は、前記プログラムコードフラグメント(42)を、前記対応するライブラリコードフラグメント(30x)へのジャンプ命令に置き換えることを特徴とする請求項5に記載の方法。
  7. 前記既定のライブラリ(28)が、前記携帯型データ記憶媒体(10)のハードウエア及び/または前記携帯型データ記憶媒体(10)のオペレーティングシステム及び/または前記コンパイラ生成プログラムコード(38)の生成に用いられるコンパイラ(36)に依存するライブラリコードフラグメント(30x)を含むように設計されていることを特徴とする請求項1から6のいずれか1項に記載の方法。
  8. 前記第1のプログラム領域(24)が電気的にプログラム可能であることを特徴とする請求項1から7のいずれか1項に記載の方法。
  9. 前記第2のメモリ領域(26)が、マスクプログム可能であることを特徴とする請求項1から8のいずれか1項に記載の方法。
  10. 前記携帯型データ記憶媒体において前記第1のメモリ領域(24)が占有するメモリセル当りのチップ面積が前記第2のメモリ領域(26)により占有されるメモリセル当りのチップ面積より大きいことを特徴とする請求項1から9のいずれか1項に記載の方法。
  11. 求項1から10のいずれか1項に記載の方法をコンピュータに実行させるためのプログラム。
  12. 水準言語ソースコード(34)を前記コンパイラ生成プログラムコード(38)に変換する手順をコンピュータに実行させるためのコンパイラ(36)をさらに有することを特徴とする請求項10に記載のコンピュータプログラム。
JP2003584915A 2002-04-15 2003-04-11 コンパイラ生成プログラムコードの最適化 Expired - Fee Related JP4632666B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10216602A DE10216602A1 (de) 2002-04-15 2002-04-15 Optimierung von compilergeneriertem Programmcode
PCT/EP2003/003803 WO2003088039A2 (de) 2002-04-15 2003-04-11 Optimierung von compilergeneriertem programmcode

Publications (3)

Publication Number Publication Date
JP2005522772A JP2005522772A (ja) 2005-07-28
JP2005522772A5 JP2005522772A5 (ja) 2009-10-01
JP4632666B2 true JP4632666B2 (ja) 2011-02-16

Family

ID=28685070

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003584915A Expired - Fee Related JP4632666B2 (ja) 2002-04-15 2003-04-11 コンパイラ生成プログラムコードの最適化

Country Status (9)

Country Link
US (1) US7805718B2 (ja)
EP (1) EP1497722B1 (ja)
JP (1) JP4632666B2 (ja)
CN (1) CN100370424C (ja)
AU (1) AU2003222291A1 (ja)
DE (1) DE10216602A1 (ja)
ES (1) ES2442842T3 (ja)
IL (1) IL164582A (ja)
WO (1) WO2003088039A2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102004014885B4 (de) * 2004-03-26 2016-04-14 Giesecke & Devrient Gmbh Verfahren zur Optimierung eines Programms eines tragbaren Datenträgers
US20060242631A1 (en) * 2005-04-22 2006-10-26 Andersen Jakob R Process and system for sharing program fragments
WO2007099320A1 (en) * 2006-03-01 2007-09-07 Symbian Software Limited Code size reduction by outlining specific functions in a library
WO2007099322A2 (en) * 2006-03-01 2007-09-07 Symbian Software Limited Procedural abstraction for executable code
GB0607068D0 (en) * 2006-04-07 2006-05-17 Symbian Software Ltd Improvement relating to method of embedding software in computing devices
WO2007099324A1 (en) * 2006-03-01 2007-09-07 Symbian Software Limited Duplicate code detection
JP4968325B2 (ja) * 2007-03-08 2012-07-04 富士通セミコンダクター株式会社 ソフトウェア最適化装置、および最適化方法
US8359586B1 (en) * 2007-08-20 2013-01-22 The Mathworks, Inc. Code generation
CN102998541B (zh) * 2011-09-08 2015-04-15 立讯精密工业(昆山)有限公司 连接线自动测量方法及装置
JP2013210920A (ja) * 2012-03-30 2013-10-10 Nec Corp コンパイル装置、コンパイル方法及びコンパイラ
CN102902548B (zh) * 2012-10-24 2016-08-03 中国科学院声学研究所 汇编级内存复制标准库函数的生成方法及装置
CN103049302B (zh) * 2012-12-28 2016-03-16 中国科学院声学研究所 由程序生成优化的strcpy标准库函数汇编代码的方法
CN103901810B (zh) * 2012-12-31 2017-04-12 施耐德电器工业公司 可编程控制器用户应用的优化系统及方法
WO2014209337A1 (en) * 2013-06-28 2014-12-31 Intel Corporation Compatibility and optimization of web applications across independent application stores
GB2505564B (en) 2013-08-02 2015-01-28 Somnium Technologies Ltd Software development tool
US9280339B1 (en) * 2013-12-12 2016-03-08 Amazon Technologies, Inc. Class replacer during application installation
US9495138B1 (en) * 2016-01-04 2016-11-15 International Business Machines Corporation Scheme for verifying the effects of program optimizations
CN106874577A (zh) * 2017-01-20 2017-06-20 上海新储集成电路有限公司 一种存储器编译器

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55137360A (en) * 1979-04-16 1980-10-27 Nissan Motor Co Ltd Controller for automobile
JPH0795275B2 (ja) * 1987-11-13 1995-10-11 富士通株式会社 コンパイル処理装置
JPH03291786A (ja) * 1990-04-10 1991-12-20 Matsushita Electric Ind Co Ltd Icカード
US5339428A (en) * 1991-09-04 1994-08-16 Digital Equipment Corporation Compiler allocating a register to a data item used between a use and store of another data item previously allocated to the register
JPH08263299A (ja) 1995-03-27 1996-10-11 Sanyo Electric Co Ltd プログラム変換方法
US5794044A (en) * 1995-12-08 1998-08-11 Sun Microsystems, Inc. System and method for runtime optimization of private variable function calls in a secure interpreter
US5815721A (en) * 1996-04-25 1998-09-29 Hewlett-Packard Company Method and apparatus for optimizing complex control structures using abstract web patterns
JP2000514584A (ja) * 1996-10-25 2000-10-31 シュルンベルジェ システーム 高級プログラミング言語を用いたマイクロコントローラ
US5903795A (en) * 1997-05-23 1999-05-11 Eastman Kodak Company Photographic processor
US5903759A (en) * 1997-06-04 1999-05-11 3 Com Corporation Software performance analysis using hardware analyzer
AU2069199A (en) 1998-01-22 1999-08-09 Mondex International Limited Codelets
JPH11327887A (ja) * 1998-05-13 1999-11-30 Nec Corp 自動部品化機能付コンパイラシステムおよび記録媒体
FR2783065B1 (fr) * 1998-09-07 2001-01-19 Rue Cartes Et Systemes De Procede de compression de code interpretable
US6263429B1 (en) * 1998-09-30 2001-07-17 Conexant Systems, Inc. Dynamic microcode for embedded processors
FR2785695B1 (fr) * 1998-11-06 2003-01-31 Bull Cp8 Procede de compactage d'un programme de type code objet intermediaire executable dans un systeme embarque muni de ressources de traitement de donnees, systeme compacteur et systeme embarque multi-applications correspondants
JP3507728B2 (ja) * 1999-06-07 2004-03-15 エヌイーシーソフト沖縄株式会社 メモリ削減方法および装置
JP4041248B2 (ja) * 1999-07-09 2008-01-30 松下電器産業株式会社 コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法
US6718543B2 (en) * 1999-11-08 2004-04-06 Hewlett-Packard Development Company, L.P. Method and apparatus for optimization of the performance of an application program in a computer system while preserving the system behavior
JP3650713B2 (ja) * 2000-02-04 2005-05-25 松下電器産業株式会社 プログラム変換装置、プログラム変換方法及びプログラム記憶媒体

Also Published As

Publication number Publication date
EP1497722B1 (de) 2013-11-13
IL164582A (en) 2012-03-29
WO2003088039A3 (de) 2004-11-04
CN100370424C (zh) 2008-02-20
ES2442842T3 (es) 2014-02-13
AU2003222291A1 (en) 2003-10-27
DE10216602A1 (de) 2003-10-30
US7805718B2 (en) 2010-09-28
IL164582A0 (ja) 2005-12-18
JP2005522772A (ja) 2005-07-28
EP1497722A2 (de) 2005-01-19
WO2003088039A2 (de) 2003-10-23
CN1703674A (zh) 2005-11-30
US20050235268A1 (en) 2005-10-20

Similar Documents

Publication Publication Date Title
JP4632666B2 (ja) コンパイラ生成プログラムコードの最適化
JP5118745B2 (ja) メモリアクセス命令のベクトル化
US7207038B2 (en) Constructing control flows graphs of binary executable programs at post-link time
US8341614B2 (en) Memory management for closures
JPH10320214A (ja) コンパイルシステム及びコンピュータプログラム製品
JPH04322329A (ja) 多機種対応型情報処理システム、および、方法
US8555260B1 (en) Direct hardware processing of internal data structure fields
JPH01201729A (ja) デコード方法
US6738966B1 (en) Compiling device, computer-readable recording medium on which a compiling program is recorded and a compiling method
JP4638484B2 (ja) データ処理装置におけるデータ整合性
JP2005202936A (ja) Java(登録商標)仮想マシンの性能を向上させる方法及びその方法により動作されるシステム
CN113468079B (zh) 内存访问方法及装置
CN101334737A (zh) 一种嵌入式设备的启动或复位方法
US8423984B2 (en) System and method generating object code
JP2000010790A (ja) グロ―バル衝突判定用のユニタリデ―タ構造体のシステム、方法及びコンピュ―タプログラム製品
WO2007070578A1 (en) Partitioning of non-volatile memories for vectorization
US20130275688A1 (en) Data processing device and method
WO2020166159A1 (ja) マイクロプロセッサ及びその動作方法
US6442058B2 (en) Control circuit and semiconductor device including same
KR100478463B1 (ko) 응용 프로그램의 동적링크 방법
US6886159B2 (en) Computer system, virtual machine, runtime representation of object, storage media and program transmission apparatus
CN115906014A (zh) 一种数据处理方法及相关装置
JP2006293673A (ja) マイクロプロセッサおよびその制御方法
US7565646B2 (en) Method for compression of object code interpreted by tree-structured expression factorization
KR100470822B1 (ko) 마이크로 컨트롤러의 메모리 어드레싱 방법 및 페이지매핑장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090210

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090511

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090518

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20090810

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100622

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100922

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101019

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101116

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees