JP4652680B2 - コンパイル方法および装置、ならびにコンパイラ - Google Patents
コンパイル方法および装置、ならびにコンパイラ Download PDFInfo
- Publication number
- JP4652680B2 JP4652680B2 JP2003424043A JP2003424043A JP4652680B2 JP 4652680 B2 JP4652680 B2 JP 4652680B2 JP 2003424043 A JP2003424043 A JP 2003424043A JP 2003424043 A JP2003424043 A JP 2003424043A JP 4652680 B2 JP4652680 B2 JP 4652680B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- argument
- passing
- value
- pass
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 86
- 230000006870 function Effects 0.000 claims description 436
- 238000006243 chemical reaction Methods 0.000 claims description 95
- 230000015654 memory Effects 0.000 claims description 18
- 238000000605 extraction Methods 0.000 claims description 14
- 238000012545 processing Methods 0.000 description 39
- 239000011800 void material Substances 0.000 description 26
- 238000005457 optimization Methods 0.000 description 15
- 238000007796 conventional method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 239000000284 extract Substances 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
Description
Scott Meyers著、吉川邦夫訳、「Effective C++ 改訂2版」、アスキー、1998年5月1日、22項「値渡しよりも、リファレンス渡しを使おう」
また、参照渡しを使用すると、エイリアシング問題(同じオブジェクトに対して複数の名前が使用されるため、意図せずにオブジェクトの状態を変更させる危険性がある問題)を引き起こす可能性がある。よって、プログラムにバグが混入しやすいという課題がある。
また、値渡しを使用した場合でも、コードサイズの小さいオブジェクトコードを生成することができる。
なお、ユーザーが高級言語プログラム内に直接アセンブラ言語を記述する構文(asm文構文など)を用いて、値渡し引数を持つ関数を呼び出す関数を参照渡し引数を持つ関数を呼び出す関数に変換することにより中間コードを最適化するステップおよび値渡し引数を持つ関数の値渡しによる引数受け渡しを参照渡しによる引数受け渡しに変換することにより中間コードを最適化するステップのいずれか一方に準拠したアセンブラコードをソースプログラムを記述した場合であっても同様の効果が得られる。
図1は、コンパイラを実行するコンパイラ装置の外観図である。コンパイラ装置22は、コンピュータ34と、モニタ装置32と、キーボード36と、マウス38と、CD−ROM(Compact Disc-Read Only Memory)装置40とを備えている。
コンピュータ34は、コンパイラ等のプログラムを実行する処理装置である。モニタ装置32は、処理結果等を表示するための表示装置である。キーボード36およびマウス38の各々は、コンピュータ34に接続され、コンピュータ34に対して指示等を入力するための入力装置である。CD−ROM装置40は、CD−ROM42に記録されたコンパイラ等のプログラムを読み込むための装置である。
CPU44は、コンパイラ等の各種プログラムを実行する処理部である。ROM46は、各種プログラムや各種データを記憶する記憶部である。RAM48は、CPU44で実行されるプログラムや、当該プログラム実行時に生成されるデータを一時的に記憶する記憶部である。ハードディスク50は、各種プログラムや、各種データを記憶する記憶装置であり、ヘッダファイルやソースプログラムを記憶するプログラム記憶部56と、後述する値渡し引数更新情報を記憶する値渡し引数更新情報記憶部58と、オブジェクトプログラムを記憶する生成コード記憶部60とを含む。通信モデム52は、インターネット等のネットワークを介してプログラムをダウンロードするための装置である。バス54は、コンピュータ34の各処理部を接続するための信号線である。
コンパイラは、プログラム記憶部56に記憶されているヘッダファイルおよびソースプログラムを読み込む(S1)。コンパイラは、読み込んだソースプログラムの構文を解析し、シンボルテーブルの生成や構文木の生成などを行なう(S2)。次に、コンパイラは、生成された構文木を元に、中間コードを生成する(S3)。その後、コンパイラは、生成された中間コードに対して各種最適化を実行する(S4)。また、コンパイラは、最適化された中間コードに含まれるすべての変数に対してレジスタやメモリなどのハードウェア資源を割り付け(S5)、資源割付された中間コードをオブジェクトコードに変換してオブジェクトプログラムを生成コード記憶部60に出力する(S6)。
値渡し引数更新情報抽出処理(S11)は、中間コードに基づいて、「値渡し引数を持つ関数」と、「値渡し引数を持つ関数を直接呼び出す関数」と、「値渡し引数を持つ関数を間接的に呼び出す可能性のある関数」と、「値渡し引数」と、値渡し引数が関数定義内で更新されているかどうかを示す「更新判定情報」とを抽出する処理である。
値渡し関数定義参照渡し変換処理(S13)は、値渡し引数更新情報抽出処理(S11)で抽出された情報を元に、参照渡し変換が可能かどうかを判定し、値渡し関数の値による引数受け渡しを、参照による引数受け渡しに変換する処理である。
なお、値渡し関数呼び出し参照渡し変換処理(S12)および値渡し関数定義参照渡し変換処理(S13)は順序に依存せず、どちらから先に行なっても構わない。
その他の最適化処理(S14)は、一般的な最適化処理であり、本発明の要旨ではないため、その説明は省略する。
以下、本発明の主眼である値渡し引数更新情報抽出処理(S11)、値渡し関数呼び出し参照渡し変換処理(S12)および値渡し関数定義参照渡し変換処理(S13)について順次説明する。
コンパイラは、現コンパイル対象の中間コードからすべての関数宣言、定義の情報を抽出する(S21)。この場合のコンパイル対象は、単一の翻訳単位(単一のソースプログラム)に対するコンパイルであっても、複数にわたる翻訳単位(複数のソースプログラム)に対するコンパイルであっても構わない。
間接的に呼び出す可能性のある関数が存在しない場合には(S34でNo)、各「値渡し引数」について、ループ処理(S35)を実行する。ループ処理(S35)では、値渡し引数が更新されているかどうかの判定を行なう(S36)。値渡し引数が更新されていれば(S36でYes)、参照渡し変換不可能と判定して、判定結果を値渡し引数更新情報62の「参照渡し変換判定情報」に記録する(S38)。値渡し引数が更新されていなければ(S36でNo)、参照渡し変換可能と判定して、判定結果を値渡し引数更新情報62の「参照渡し変換判定情報」に記録する(S37)。
一方、強制的な変換を行なう場合は(S31でYes)、登録されている値渡し引数更新情報62のすべての値渡し引数に対して、「参照渡し変換判定情報」に参照渡し変換可能である情報を記録し、値渡し引数による呼び出しを参照渡しによる呼び出しに変換する(S41,S42,S43,S44,S45)。
以上の処理を実施することにより、変換候補となる値渡し引数による引数受け渡しを参照渡しによる引数受け渡しに変換することができる。
(具体例1)
図10(a)は、プログラム記憶部56に記憶されているヘッダファイルの一例を示し、図10(b)は、プログラム記憶部56に記憶されているソースプログラムの一例を示す。以下では、このヘッダファイルおよびソースプログラムを入力した場合のコンパイラの動作を説明する。
図16(a)は、プログラム記憶部56に記憶されているヘッダファイルの一例を示し、図16(b)は、プログラム記憶部56に記憶されているソースプログラムの一例を示す。以下では、このヘッダファイルおよびソースプログラムを入力した場合のコンパイラの動作を説明する。
値渡しによる引数受け渡しを参照渡しによる受け渡しに変換しているので、スタックフレームは具体例1と同じく図14に示すようになる。
図20(a)は、プログラム記憶部56に記憶されているヘッダファイルの一例を示し、図20(b)は、プログラム記憶部56に記憶されているソースプログラムの一例を示す。以下では、このヘッダファイルおよびソースプログラムを入力した場合のコンパイラの動作を説明する。
以上、本発明の実施の形態に係るコンパイラについて説明したが、本発明は、この実施の形態に限定されるものではない。
58 値渡し引数更新情報記憶部
60 生成コード記憶部
62 値渡し引数更新情報
Claims (14)
- コンパイル装置が、高級言語で記述されたソースプログラムをオブジェクトコードに変換するコンパイル方法であって、
前記コンパイル装置の中間コード生成手段が、プログラム記憶部に記憶されているソースプログラムから中間コードを生成し、生成した前記中間コードをメモリに記憶する中間コード生成ステップと、
前記コンパイル装置の値渡し関数呼び出し参照渡し変換手段が、前記メモリに記憶されている前記中間コードにおいて、値渡し引数を持つ関数を間接的に呼び出す可能性のある関数がなく、かつ前記値渡し引数が当該値渡し引数を持つ関数の定義内で更新されていない場合に、前記値渡し引数を持つ関数を呼び出す関数を参照渡し引数を持つ関数を呼び出す関数に変換する値渡し関数呼び出し参照渡し変換ステップと、
前記コンパイル装置の値渡し関数定義参照渡し変換手段が、前記メモリに記憶されている前記中間コードにおいて、値渡し引数を持つ関数を間接的に呼び出す可能性のある関数がなく、かつ前記値渡し引数が当該値渡し引数を持つ関数の定義内で更新されていない場合に、値渡し引数を持つ関数の値渡しによる引数受け渡しを参照渡しによる引数受け渡しに変換する値渡し関数定義参照渡し変換ステップと、
前記コンパイル装置のオブジェクトコード変換手段が、前記メモリに記憶されている前記中間コードをオブジェクトコードに変換し、前記オブジェクトコードを生成コード記憶部に記憶するオブジェクトコード変換ステップとを含む
ことを特徴とするコンパイル方法。 - 前記コンパイル方法は、さらに、
前記コンパイル装置の値渡し引数更新情報抽出部が、前記メモリに記憶されている前記中間コードから、少なくとも、値渡し引数を持つ関数と、当該値渡し引数を持つ関数を直接呼び出す関数と、当該値渡し引数を持つ関数を間接的に呼び出す可能性のある関数と、当該値渡し引数を持つ関数の値渡し引数と、当該値渡し引数が値渡し引数を持つ関数の定義内で更新されているか否かを示す更新判定情報とを含む値渡し引数更新情報を抽出し、抽出した前記値渡し引数更新情報を値渡し引数更新情報記憶部に書き込む値渡し引数更新情報抽出ステップを含み、
前記値渡し関数定義参照渡し変換ステップでは前記値渡し関数定義参照渡し変換手段が、前記値渡し関数呼び出し参照渡し変換ステップでは前記値渡し関数呼び出し参照渡し変換手段が、それぞれ、前記値渡し引数更新情報記憶部に記憶されている前記値渡し引数更新情報に基づき、値渡し引数を持つ関数を間接的に呼び出す可能性のある関数がなく、かつ前記値渡し引数が当該値渡し引数を持つ関数の定義内で更新されていない場合を特定する
ことを特徴とする請求項1に記載のコンパイル方法。 - 前記値渡し関数呼び出し参照渡し変換ステップでは、値渡し引数を持つ関数を呼び出す関数を参照渡し引数を持つ関数を呼び出す関数に強制的に変換せよとの指定がない場合には、前記値渡し関数呼び出し参照渡し変換手段が前記値渡し引数更新情報記憶部に記憶されている前記値渡し引数更新情報に基づいて、前記値渡し引数を持つ関数を間接的に呼び出す可能性のある関数がなく、かつ前記値渡し引数が値渡し引数を持つ関数の定義内で更新されていない場合に、前記値渡し引数を持つ関数を直接呼び出す関数を参照渡し引数を持つ関数を直接呼び出す関数に変換する
ことを特徴とする請求項2に記載のコンパイル方法。 - 前記値渡し関数呼び出し参照渡し変換ステップでは、値渡し引数を持つ関数を呼び出す関数を参照渡し引数を持つ関数を呼び出す関数に強制的に変換せよとの指定がある場合には、当該指定がある値渡し引数を持つ関数について、前記値渡し関数呼び出し参照渡し変換手段が前記値渡し引数更新情報記憶部に記憶されている前記値渡し引数更新情報に基づいて、前記値渡し引数を持つ関数を直接呼び出す関数および前記値渡し引数を持つ関数を間接的に呼び出す可能性のある関数を、参照渡し引数を持つ関数を直接呼び出す関数および参照渡し引数を持つ関数を間接的に呼び出す可能性のある関数にそれぞれ変換する
ことを特徴とする請求項2または3に記載のコンパイル方法。 - 前記値渡し関数定義参照渡し変換ステップでは、値渡し引数を持つ関数の値渡しによる引数受け渡しを参照渡しによる引数受け渡しに強制的に変換せよとの指定がない場合には、前記値渡し関数定義参照渡し変換手段が、前記値渡し引数更新情報記憶部に記憶されている前記値渡し引数更新情報に基づいて、前記値渡し引数を持つ関数を間接的に呼び出す可能性のある関数がなく、かつ前記値渡し引数が値渡し引数を持つ関数の定義内で更新されていない場合に、前記値渡し引数を持つ関数の値渡しによる引数受け渡しを参照渡しによる引数受け渡しに変換する
ことを特徴とする請求項2に記載のコンパイル方法。 - 前記値渡し関数定義参照渡し変換ステップでは、値渡し引数を持つ関数の値渡しによる引数受け渡しを参照渡しによる引数受け渡しに強制的に変換せよとの指定がある場合には、当該指定がある値渡し引数を持つ関数について、前記値渡し関数定義参照渡し変換手段が、前記値渡し引数更新情報記憶部に記憶されている前記値渡し引数更新情報に基づいて、前記値渡し引数を持つ関数の値渡しによる引数受け渡しを参照渡しによる引数受け渡しに変換し、前記値渡し引数が関数定義内で更新されていれば、前記中間コードにおいて実際に値が更新される部分よりも前に、変換された参照渡し引数から引数値を参照してそのコピーを生成し、当該コピーを参照先に設定する
ことを特徴とする請求項2または5に記載のコンパイル方法。 - 高級言語で記述されたソースプログラムをオブジェクトコードに変換するコンパイラであって、
請求項1〜6のいずれか1項に記載のコンパイル方法に含まれる各ステップをコンピュータに実行させる
ことを特徴とするコンパイラ。 - 請求項7に記載のコンパイラを記録したコンピュータ読取可能な記録媒体。
- 高級言語で記述されたソースプログラムをオブジェクトコードに変換するコンパイル装置であって、
プログラム記憶部に記憶されているソースプログラムから中間コードを生成し、生成した前記中間コードをメモリに記憶する中間コード生成手段と、
前記メモリに記憶されている前記中間コードにおいて、値渡し引数を持つ関数を間接的に呼び出す可能性のある関数がなく、かつ前記値渡し引数が当該値渡し引数を持つ関数の定義内で更新されていない場合に、前記値渡し引数を持つ関数を呼び出す関数を参照渡し引数を持つ関数を呼び出す関数に変換する値渡し関数呼び出し参照渡し変換手段と、
前記メモリに記憶されている前記中間コードにおいて、値渡し引数を持つ関数を間接的に呼び出す可能性のある関数がなく、かつ前記値渡し引数が当該値渡し引数を持つ関数の定義内で更新されていない場合に、値渡し引数を持つ関数の値渡しによる引数受け渡しを参照渡しによる引数受け渡しに変換する値渡し関数定義参照渡し変換手段と、
前記メモリに記憶されている前記中間コードをオブジェクトコードに変換し、前記オブジェクトコードを生成コード記憶部に記憶するオブジェクトコード変換手段とを備える
ことを特徴とするコンパイル装置。 - 前記コンパイル装置は、さらに、
前記メモリに記憶されている前記中間コードから、少なくとも、値渡し引数を持つ関数と、当該値渡し引数を持つ関数を直接呼び出す関数と、当該値渡し引数を持つ関数を間接的に呼び出す可能性のある関数と、当該値渡し引数を持つ関数の値渡し引数と、当該値渡し引数が値渡し引数を持つ関数の定義内で更新されているか否かを示す更新判定情報とを含む値渡し引数更新情報を抽出し、抽出した前記値渡し引数更新情報を値渡し引数更新情報記憶部に記憶する値渡し引数更新情報抽出部を備え、
前記値渡し関数定義参照渡し変換手段および前記値渡し関数呼び出し参照渡し変換手段は、それぞれ、前記値渡し引数更新情報記憶部に記憶されている前記値渡し引数更新情報に基づき、値渡し引数を持つ関数を間接的に呼び出す可能性のある関数がなく、かつ前記値渡し引数が当該値渡し引数を持つ関数の定義内で更新されていない場合を特定する
ことを特徴とする請求項9に記載のコンパイル装置。 - 前記値渡し関数呼び出し参照渡し変換手段は、値渡し引数を持つ関数を呼び出す関数を参照渡し引数を持つ関数を呼び出す関数に強制的に変換せよとの指定がない場合には、前記値渡し引数更新情報記憶部に記憶されている前記値渡し引数更新情報に基づいて、前記値渡し引数を持つ関数を間接的に呼び出す可能性のある関数がなく、かつ前記値渡し引数が値渡し引数を持つ関数の定義内で更新されていない場合に、前記値渡し引数を持つ関数を直接呼び出す関数を参照渡し引数を持つ関数を直接呼び出す関数に変換する
ことを特徴とする請求項10に記載のコンパイル装置。 - 前記値渡し関数呼び出し参照渡し変換手段は、値渡し引数を持つ関数を呼び出す関数を参照渡し引数を持つ関数を呼び出す関数に強制的に変換せよとの指定がある場合には、当該指定がある値渡し引数を持つ関数について、前記値渡し引数更新情報記憶部に記憶されている前記値渡し引数更新情報に基づいて、前記値渡し引数を持つ関数を直接呼び出す関数および前記値渡し引数を持つ関数を間接的に呼び出す可能性のある関数を、参照渡し引数を持つ関数を直接呼び出す関数および参照渡し引数を持つ関数を間接的に呼び出す可能性のある関数にそれぞれ変換する
ことを特徴とする請求項10または11に記載のコンパイル装置。 - 前記値渡し関数定義参照渡し変換手段は、値渡し引数を持つ関数の値渡しによる引数受け渡しを参照渡しによる引数受け渡しに強制的に変換せよとの指定がない場合には、前記値渡し引数更新情報記憶部に記憶されている前記値渡し引数更新情報に基づいて、前記値渡し引数を持つ関数を間接的に呼び出す可能性のある関数がなく、かつ前記値渡し引数が値渡し引数を持つ関数の定義内で更新されていない場合に、前記値渡し引数を持つ関数の値渡しによる引数受け渡しを参照渡しによる引数受け渡しに変換する
ことを特徴とする請求項10に記載のコンパイル装置。 - 前記値渡し関数定義参照渡し変換手段は、値渡し引数を持つ関数の値渡しによる引数受け渡しを参照渡しによる引数受け渡しに強制的に変換せよとの指定がある場合には、当該指定がある値渡し引数を持つ関数について、前記値渡し引数更新情報記憶部に記憶されている前記値渡し引数更新情報に基づいて、前記値渡し引数を持つ関数の値渡しによる引数受け渡しを参照渡しによる引数受け渡しに変換し、前記値渡し引数が関数定義内で更新されていれば、前記メモリに記憶されている前記中間コードにおいて実際に値が更新される部分よりも前に、変換された参照渡し引数から引数値を参照してそのコピーを生成し、当該コピーを参照先に設定する
ことを特徴とする請求項10または13に記載のコンパイル装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003424043A JP4652680B2 (ja) | 2003-12-22 | 2003-12-22 | コンパイル方法および装置、ならびにコンパイラ |
US11/016,934 US7458071B2 (en) | 2003-12-22 | 2004-12-21 | Compilation method, compiler apparatus and compiler |
CNB2004101037298A CN100476732C (zh) | 2003-12-22 | 2004-12-22 | 编译方法、编译装置及编译程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003424043A JP4652680B2 (ja) | 2003-12-22 | 2003-12-22 | コンパイル方法および装置、ならびにコンパイラ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005182562A JP2005182562A (ja) | 2005-07-07 |
JP4652680B2 true JP4652680B2 (ja) | 2011-03-16 |
Family
ID=34675385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003424043A Expired - Lifetime JP4652680B2 (ja) | 2003-12-22 | 2003-12-22 | コンパイル方法および装置、ならびにコンパイラ |
Country Status (3)
Country | Link |
---|---|
US (1) | US7458071B2 (ja) |
JP (1) | JP4652680B2 (ja) |
CN (1) | CN100476732C (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100683853B1 (ko) * | 2005-02-04 | 2007-02-16 | 삼성전기주식회사 | 프리 컴파일링 장치 |
US7861234B1 (en) * | 2005-02-23 | 2010-12-28 | Oracle America, Inc. | System and method for binary translation to improve parameter passing |
US7802239B2 (en) * | 2005-11-09 | 2010-09-21 | Oracle America, Inc. | Supporting method references in the JAVA language |
EP1818814A1 (en) * | 2006-02-07 | 2007-08-15 | Alexandr Savinov | Method for indirect representation and access in an object-oriented programming language |
US20080127142A1 (en) * | 2006-11-28 | 2008-05-29 | Microsoft Corporation | Compiling executable code into a less-trusted address space |
US8806503B2 (en) * | 2011-01-24 | 2014-08-12 | Nec Laboratories America, Inc. | Method and system for memory aware runtime to support multitenancy in heterogeneous clusters |
EP2687981B1 (en) * | 2012-07-18 | 2017-12-27 | MStar Semiconductor, Inc. | Automated compiler specialisation for global optimisation |
CN104756078B (zh) * | 2012-08-20 | 2018-07-13 | 唐纳德·凯文·卡梅伦 | 处理资源分配的装置和方法 |
US9329844B2 (en) * | 2014-05-30 | 2016-05-03 | Apple Inc. | Programming system and language for application development |
CN107003884B (zh) * | 2014-12-04 | 2019-12-24 | 华为技术有限公司 | 编译器以及用于编译源代码的方法 |
JP6651974B2 (ja) | 2016-05-10 | 2020-02-19 | 富士通株式会社 | 情報処理装置、コンパイル方法及びコンパイラプログラム |
US10241764B2 (en) | 2017-05-05 | 2019-03-26 | National Instruments Corporation | Automatically transform pass-by-value semantics into pass-by-reference implementation |
CN109240666B (zh) * | 2018-06-22 | 2020-08-25 | 北京大学 | 基于调用栈和依赖路径的函数调用代码生成方法及系统 |
CN109491667A (zh) * | 2018-12-21 | 2019-03-19 | 芯海科技(深圳)股份有限公司 | 一种c语言编译效率优化的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0535491A (ja) * | 1991-07-31 | 1993-02-12 | Oki Electric Ind Co Ltd | Fortran言語からc言語への変換における引数変換方法 |
US6481007B1 (en) * | 1999-06-03 | 2002-11-12 | Oracle Corporation | Optimizing parameter passing |
JP2003050700A (ja) * | 2001-08-06 | 2003-02-21 | Matsushita Electric Ind Co Ltd | プログラム変換方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7155728B1 (en) * | 2001-06-28 | 2006-12-26 | Microsoft Corporation | Remoting features |
US7356812B2 (en) * | 2003-09-30 | 2008-04-08 | Intel Corporation | Passing parameters by implicit reference |
-
2003
- 2003-12-22 JP JP2003424043A patent/JP4652680B2/ja not_active Expired - Lifetime
-
2004
- 2004-12-21 US US11/016,934 patent/US7458071B2/en active Active
- 2004-12-22 CN CNB2004101037298A patent/CN100476732C/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0535491A (ja) * | 1991-07-31 | 1993-02-12 | Oki Electric Ind Co Ltd | Fortran言語からc言語への変換における引数変換方法 |
US6481007B1 (en) * | 1999-06-03 | 2002-11-12 | Oracle Corporation | Optimizing parameter passing |
JP2003050700A (ja) * | 2001-08-06 | 2003-02-21 | Matsushita Electric Ind Co Ltd | プログラム変換方法 |
Also Published As
Publication number | Publication date |
---|---|
US20050138612A1 (en) | 2005-06-23 |
CN100476732C (zh) | 2009-04-08 |
CN1637708A (zh) | 2005-07-13 |
JP2005182562A (ja) | 2005-07-07 |
US7458071B2 (en) | 2008-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4652680B2 (ja) | コンパイル方法および装置、ならびにコンパイラ | |
US6931627B2 (en) | System and method for combinatorial test generation in a compatibility testing environment | |
JP3762867B2 (ja) | コンパイラ装置、コンパイル方法、およびそのためのプログラムを格納した記憶媒体 | |
US20070039010A1 (en) | Automatic generation of software code to facilitate interoperability | |
US20060282452A1 (en) | System and method for mapping structured document to structured data of program language and program for executing its method | |
JP2007521567A (ja) | 編集処理中にプログラムコンポーネントの整合性を表現しチェックするための拡張型システム | |
US20070271553A1 (en) | Method and system for translating assembler code to a target language | |
US20120110444A1 (en) | Help Document Animated Visualization | |
US7624390B2 (en) | Optimizing compiling of object oriented source code | |
US20090328016A1 (en) | Generalized expression trees | |
JP2007304840A (ja) | コンパイル方法、デバッグ方法、コンパイルプログラムおよびデバッグプログラム | |
CN115437684A (zh) | 一种针对Linux内核源代码的文件级裁剪方法和系统 | |
US7624381B1 (en) | Portable detection of start and completion of object construction | |
JP2009176064A (ja) | ソフトウェアリファクタリング支援装置および方法 | |
KR20040077410A (ko) | 마크업 내부에서 명시적으로 서브클래스를 정의하고이용하는 시스템 및 방법 | |
JP2002116917A (ja) | オブジェクト指向型プログラミング言語によるソース・プログラムをコンパイルするコンパイラ | |
WO2007116490A1 (ja) | ソースコード生成プログラム、ソースコード生成方法およびソースコード生成装置 | |
JP2006107339A (ja) | プログラム処理装置 | |
JP5399601B2 (ja) | 実装コード開発システム、及び実装コード開発プログラム | |
JP3266097B2 (ja) | 非リエントラントプログラムの自動リエントラント化方法及びシステム | |
JP7059757B2 (ja) | Api処理方法、端末、api処理プログラム | |
KR100846203B1 (ko) | 모바일 어플리케이션의 생성 방법 및 이를 구현하기 위한프로그램을 기록한 기록매체 | |
CN110737431B (zh) | 软件开发方法、开发平台、终端设备及存储介质 | |
JP2021184246A (ja) | 命令変換支援プログラム、命令変換支援方法および情報処理装置 | |
CN107562430B (zh) | 一种针对移动π演算语言的文件处理功能的编译方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061011 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090105 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091208 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100128 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101005 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101110 |
|
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: 20101130 |
|
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: 20101216 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4652680 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131224 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |