JP4130713B2 - プログラム変換装置 - Google Patents

プログラム変換装置 Download PDF

Info

Publication number
JP4130713B2
JP4130713B2 JP29955398A JP29955398A JP4130713B2 JP 4130713 B2 JP4130713 B2 JP 4130713B2 JP 29955398 A JP29955398 A JP 29955398A JP 29955398 A JP29955398 A JP 29955398A JP 4130713 B2 JP4130713 B2 JP 4130713B2
Authority
JP
Japan
Prior art keywords
library
conversion
argument
destination
return value
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
Application number
JP29955398A
Other languages
English (en)
Other versions
JP2000132403A (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP29955398A priority Critical patent/JP4130713B2/ja
Priority to US09/420,870 priority patent/US6438745B1/en
Publication of JP2000132403A publication Critical patent/JP2000132403A/ja
Application granted granted Critical
Publication of JP4130713B2 publication Critical patent/JP4130713B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

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

Description

【0001】
【発明の属する技術分野】
本発明は、あるプラットフォーム、即ちある実行環境(OS、プロセッサ、仮想マシン等を含む)上で動作するオブジェクトプログラムを、別のプラットフォーム上で動作するオブジェクトプログラムに変換するいわゆるバイナリトランスレータに関する。
【0002】
【従来の技術】
バイナリトランスレータは、入力されたオブジェクトプログラムを、当該オブジェクトプログラムが動作するプラットフォームとは別なプラットフォーム上で動作するオブジェクトプログラムに変換して出力する。なお、ここでいう変換は、入力されたオブジェクトプログラムに基づいて別のオブジェクトプログラムを生成することである。
【0003】
ここで、オブジェクトプログラムとは、あるプラットフォーム上で実行可能な形式のプログラムであり、例えば高水準言語で記述されたソースプログラムをコンパイルすることにより得られた機械語命令列からなるプログラム等をいう。また、プラットフォームとは、オブジェクトプログラムを実行するための基本環境をいい、現実のプロセッサ及びOSの基本機能部分や仮想マシン等のことである。どのようなプラットフォームを採用するかは、コンピュータシステムや家電機器の設計において重要な事項であり、プラットフォームが定まれば、その上で動作するオブジェクトプログラムが満たすべき命令形式等の条件が定まる。この条件に合わせて、例えば、コンパイラは、高水準言語で記述されたソースプログラムを中間表現に置き換えた後に目的とするプラットフォームに適合するオブジェクトプログラムに変換する。
【0004】
従来のバイナリトランスレータは、目的とするプラットフォームへの適合という面では、上述のコンパイラと同様な技術を用いるものであり、あるオブジェクトプログラムを、命令やデータの意味内容を抽出した中間表現に置き換え、その中間表現に基づいて、目的とするプラットフォームに適合するオブジェクトプログラムを生成する。
【0005】
ところが、近年のプログラム開発環境の進展等に伴い、オブジェクトプログラムはライブラリを呼び出す構造のものが多くなっており、オブジェクトプログラムはそれ単体で、あるプラットフォーム上で実行可能なものではなくなってきている。ここで、ライブラリとは、オブジェクトプログラムの外部にあって、オブジェクトプログラムから呼び出され得る外部プログラムモジュールの総称であり、OSの一部に相当するものや、その他、例えば、C言語における標準入出力関数の関数ライブラリ等がある。つまり、近年、オブジェクトプログラムの実行環境は、従来いうところのプラットフォームに加えてライブラリを含んだものとなってきている。
【0006】
このようなライブラリを呼び出すオブジェクトプログラムは、引数を渡してライブラリを呼び出し、ライブラリから実行結果である戻り値を受け取って利用する。このためオブジェクトプログラムは、呼び出すべきライブラリの引数及び戻り値に関する条件仕様に適合するように作成されている。
【0007】
【発明が解決しようとする課題】
しかしながら、バイナリトランスレータに入力されるオブジェクトプログラムの実行環境と変換後のオブジェクトプログラムの実行環境とには、同一のライブラリが存在しない場合がある。ここで同一のライブラリとは、プラットフォームの相違を除いて同一のことをいう。この場合、プラットフォーム間の差異を吸収するのを目的としていた従来のバイナリトランスレータでは、ライブラリを呼び出す構造のオブジェクトプログラムを、別のプラットフォームに対応するオブジェクトプログラムに変換しても、呼び出すライブラリが存在しないため、その変換結果のオブジェクトプログラムは実行できないものとなる。
【0008】
そこで、本発明はかかる問題点に鑑み、ライブラリを呼び出す構造のオブジェクトプログラムを、当該ライブラリと同一のものを有しない実行環境で動作するオブジェクトプログラムに変換することができるプログラム変換装置(バイナリトランスレータ)を提供することを目的とする。
【0009】
【課題を解決するための手段】
上記課題を解決するために、本発明に係るプログラム変換装置は、第1のプラットフォーム上で動作可能な外部プログラムモジュールである変換元ライブラリを呼び出す変換元ライブラリ呼出命令を含み当該プラットフォーム上で動作する第1のオブジェクトプログラムを、前記第1のオブジェクトプログラムに含まれる命令およびデータの内容を抽出した中間表現へ変換した後、第2のプラットフォーム上で動作する第2のオブジェクトプログラムに変換するプログラム変換装置であって、変換元ライブラリと、当該変換元ライブラリと同一機能を実現可能であり第2のプラットフォーム上で動作可能な外部プログラムモジュールである変換先ライブラリとを対応づけたライブラリ対応関係情報であって、前記変換先ライブラリの引数である変換先引数それぞれのデータ型が何であるかという情報と、当該変換先ライブラリに対応する変換元ライブラリの引数である変換元引数それぞれのデータ型が何であるかという情報と、前記変換元ライブラリの何番目の変換元引数が前記変換先ライブラリの何番目の変換先引数に対応するのかという対応関係を示す引数対応関係情報を含む、ライブラリ対応関係情報を記憶するライブラリ対応表記憶手段と、前記第1のオブジェクトプログラムを読み込み、中間表現に変換する読込・中間表現化手段と、前記読込・中間表現化手段により前記中間表現に変換された第1のオブジェクトプログラムを格納する中間表現記憶手段と、前記中間表現に変換された第1のオブジェクトプログラム中の変換元ライブラリ呼出命令を検出するライブラリ呼出命令検出手段と、前記ライブラリ呼出命令検出手段により検出された変換元ライブラリ呼出命令を、前記ライブラリ対応関係情報を参照することにより、当該変換元ライブラリ呼出命令が呼び出す変換元ライブラリに対応する変換先ライブラリを呼び出す変換先ライブラリ呼出命令に変換する命令変換手段と、前記ライブラリ呼出命令検出手段により検出された前記ライブラリ呼出命令が呼び出す変換元ライブラリへの引数の値を設定する引数設定命令を、前記中間表現に変換された第1のオブジェクトプログラム中から検出する引数設定命令検出手段と、前記引数設定命令検出手段により検出された引数設定命令を、前記引数対応関係情報を参照することにより、当該引数設定命令が設定する前記値を、前記変換元引数に対応する変換先引数のデータ型となるように型変換して、前記変換先ライブラリへの引数として設定する変換先引数設定命令に、変換する引数設定命令変換手段とを備えことを特徴とする。
【0010】
以下、上記構成により、課題が解決される理由について説明する。
プログラム変換装置が出力する第2のオブジェクトプログラムの動作する第2のプラットフォーム上には、プログラム変換装置に入力される第1のオブジェクトプログラムが呼び出す変換元ライブラリと同一のライブラリは存在しないとしても、第2のプラットフォーム上には、前記変換元ライブラリと同一機能を実現可能である変換先ライブラリが存在する場合がある。第1のオブジェクトプログラムの実行環境と第2のオブジェクトプログラムの実行環境が似ているような場合であり、一例を示すと、文字列を画面に出力するという一般的な機能を実現するために、変換元ライブラリは、第1引数として文字列を格納しているメモリ領域のポインタを要求するとともに第2引数として文字列のバイト数を1バイトのデータで要求し、変換先ライブラリは、第1引数として文字列のバイト数を2バイトのデータで要求するとともに第2引数として文字列を格納しているメモリ領域のポインタを要求するような場合である。
【0011】
このような場合、オブジェクトプログラムとライブラリとの間のインタフェースが異なり、引数の数の相違、対応する引数同士の引数番号の相異、対応する引数同士のデータ型の相違がある。本発明に係るプログラム変換装置は、これらの相違を吸収するものであるため上記課題を解決する。
なお、第2のプラットフォーム上に、前記変換元ライブラリと同一機能を実現可能である変換先ライブラリが存在しない場合には、そのような変換先ライブラリを作成して第2のプラットフォーム上に存在させるか、又は当該変換先ライブラリを第2のオブジェクトプログラムの内部モジュールとして組み込めばよいが、この場合においても、類似した複数の変換元ライブラリの機能をまとめて包括的な高機能の1つの変換先ライブラリを作成する等のメモリの効率的利用の面からの要請や、プラットフォームとなるプロセッサにより扱えるデータ型が性能面等から制約されること等により、前記変換元ライブラリと完全同一のライブラリを作成すべきでないときがあり、上述のように、オブジェクトプログラムとライブラリとの間のインタフェースの相違を吸収する必要が生じる。
【0012】
【発明の実施の形態】
以下、本発明の実施の形態に係るプログラム変換装置について、図面を用いて説明する。
<構成>
図1は、本発明の実施の形態に係るプログラム変換装置の構成を示す図である。
【0013】
プログラム変換装置100は、入力オブジェクトプログラム101を参照し、出力オブジェクトプログラム102を生成するバイナリトランスレータであり、ハードウェア的にはCPU及びメモリで構成され、当該メモリに格納された制御プログラムが当該CPUにより実行されることにより、オブジェクトプログラムの変換機能を実現するものである。
【0014】
プログラム変換装置100は、機能的には、読込・中間表現化部110と、コード化・出力部120と、中間表現記憶部130と、ライブラリ呼出命令検出部140と、ライブラリ・関数呼出命令生成部150と、ライブラリ対応表記憶部160と、関数定義付加部170と、関数付加状態情報記憶部180と、関数定義記憶部190とを備える。
【0015】
中間表現記憶部130は、中間表現を記憶するためのメモリ中の一領域である。ここで、中間表現は、プログラム変換装置100内において、オブジェクトプログラムを表す内部表現である。
読込・中間表現化部110は、入力オブジェクトプログラム101中の命令を解読して中間表現に変換し、中間表現記憶部130に格納するものである。ここで、読込・中間表現化部110が生成した中間表現は、従来のバイナリトランスレータにおいて生成される中間表現と同等のものである。中間表現の詳細に関しては、AlferdV.Aho,RaviSethi,JeffreyD.Ullman,”Compiler Principles,Techniques,and Tools”,Addison−Wesley,1986,に詳しく説明されている。
【0016】
コード化・出力部120は、中間表現記憶部130に格納されている中間表現を、機械語命令列に変換して、出力オブジェクトプログラム102として出力するものである。
ライブラリ呼出命令検出部140は、中間表現記憶部130に格納されている中間表現の中からライブラリ呼出命令を検出するものである。ここで、ライブラリ呼出命令とは、入力オブジェクトプログラム101から外部のプログラムモジュールであるライブラリ関数を呼び出すための命令をいう。ここでは、このライブラリ関数を、ライブラリと表現する。
【0017】
なお、読込・中間表現化部110、コード化・出力部120、中間表現記憶部130は、従来のプログラム変換装置を構成するものと同様である。
ライブラリ対応表記憶部160は、変換前のプラットフォームで動作する複数のライブラリ(以下、変換元ライブラリという。)それぞれについての識別情報等から構成される変換元ライブラリテーブルと、変換元ライブラリに対応し変換後のプラットフォームで動作可能であり当該変換元ライブラリと同等機能を実現し得るライブラリ(以下、変換先ライブラリという。)それぞれについての識別情報等から構成される変換先ライブラリ・関数テーブルとを記憶する。変換元ライブラリテーブルと変換先ライブラリ・関数テーブルとを合わせてライブラリ対応表という。ライブラリ対応表については、後に詳細に説明する。なお、変換先ライブラリのうち、変換後のプラットフォーム上に存在しないもの、即ち、オブジェクトプログラムの実行環境に含まれていないものを、特に変換先関数という。
【0018】
ライブラリ・関数呼出命令生成部150は、ライブラリ対応表記憶部160に記憶されているライブラリ対応表を参照することにより、ライブラリ呼出命令検出部140により検出された中間表現中のライブラリ呼出命令を、当該ライブラリ呼出命令が呼び出す変換元ライブラリと対応する変換先ライブラリを呼び出す命令に変換するものであり、変換元ライブラリの引数の設定命令を、変換先ライブラリの引数の設定命令に変換する引数整合処理部151と、変換元ライブラリからの戻り値を利用する命令を、変換先ライブラリからの戻り値を利用する命令に変換する戻り値整合処理部152とを有する。
【0019】
関数定義記憶部190は、変換元ライブラリと同等機能を実現し得る変換先関数を記憶しているメモリの一領域である。関数定義記憶部190内では、変換先関数は中間表現の形で記憶されている。
関数付加状態情報記憶部180は、関数定義記憶部190内に記憶されている変換先関数を、中間表現記憶部130内のオブジェクトプログラムの中間表現に付加したか否かを示す関数付加状態情報を保持するものである。
【0020】
関数定義付加部170は、ライブラリ・関数呼出命令生成部150がライブラリ呼出命令を、変換先関数を呼び出す命令に変換する場合に、オブジェクトプログラムに変換先関数の定義を付加する。但し、関数付加状態情報記憶部180を参照することにより、同一の変換先関数の定義を複数付加しないようにする。
<ライブラリ対応表>
以下、ライブラリ対応表の構成について説明する。ライブラリ対応表は、変換元ライブラリテーブル400と変換先ライブラリテーブル500とで構成される。
【0021】
図2は、変換元ライブラリテーブル400の構成を示す図である。
変換元ライブラリテーブル400は、複数の変換元ライブラリそれぞれについて、識別情報410と、引数情報420と、引数変換情報430と、戻り値情報440と、戻り値変換情報450と、変換先ライブラリ・関数情報へのポインタ460とから構成される変換元ライブラリ情報を有する。同図中のN、N1、N2、N3、N4は複数個存在することを意味する。
【0022】
識別情報410は、複数の変換元ライブラリそれぞれを識別するための識別番号である。
引数情報420は、引数番号421とデータ型422とのN1個の組からなり、N1個は、引数の数である。ここで、引数についていう場合のデータ型とは、ライブラリが引数をどのようなサイズのデータとして扱うかを示すもので、1バイト型、2バイト型、4バイト型等のデータ型がある。スタックポインタがライブラリへの全ての引数を格納したメモリ領域のアドレスを指す場合において、例えば、引数番号とデータ型との組が、(1番、2バイト型)、(2番、4バイト型)、(3番、1バイト型)であったとすると、そのライブラリは、スタックポインタが指すアドレスから2バイトを第1の引数として扱い、次の4バイトを第2の引数として扱い、次の1バイトを第3の引数として扱うことになる。
【0023】
引数変換情報430は、変換先番号431と引数番号/定数432とのN2個の組からなり、N2個は、対応する変換先ライブラリの引数の数である。ここで、引数番号/定数432は、変換先ライブラリの引数として用いることができるものを示す情報であり、変換元ライブラリの引数の番号又は、定数値をとる。例えば、変換先番号と引数番号/定数との組が、(1番、2番)、(2番、「0」)、(3番、1番)であったならば、変換先ライブラリの第1の引数として、変換元ライブラリの第2の引数に設定されていた値を用いることができ、変換先ライブラリの第2の引数には0という定数値を用いることができ、変換先ライブラリの第3の引数として、変換元ライブラリの第1の引数に設定されていた値を用いることができることになる。
【0024】
戻り値情報440は、戻り値番号441とデータ型442とのN3個の組からなり、N3個は、戻り値の数である。ここで、戻り値についていう場合のデータ型とは、ライブラリが戻り値をどのようなサイズのデータとして格納するかを示すもので、引数についていう場合のデータ型と同様に、1バイト型、2バイト型、4バイト型等のデータ型がある。
【0025】
戻り値変換情報450は、戻り値番号451と変換先番号452とのN4個の組からなり、N4個は、変換元ライブラリの戻り値の数である。これは、必要な戻り値が、変換先ライブラリの何番目の戻り値であるかを示している。例えば、戻り値番号と変換先番号との組が、(1番、2番)であったとすると、これは、変換元ライブラリの第1の戻り値を利用するような命令は、変換先ライブラリの第2の戻り値を利用するように変換すればよいことを示している。
【0026】
変換先ライブラリ・関数情報へのポインタ460は、変換先ライブラリテーブル500中の1つの変換先ライブラリについての変換先ライブラリ・関数情報のメモリ中での格納位置を示すポインタである。
図3は、変換先ライブラリテーブル500の構成を示す図である。
変換先ライブラリテーブル500は、複数の変換先ライブラリそれぞれについて、識別情報510と、引数情報520と、戻り値情報530と、関数フラグ540とから構成される変換先ライブラリ・関数情報を有する。同図中のM、M1、M2は複数個存在することを意味する。
【0027】
識別情報510は、複数の変換先ライブラリそれぞれを識別するための識別番号である。
引数情報520は、引数番号521とデータ型522とのM1個の組からなり、M1個は、引数の数である。また、戻り値情報530は、戻り値番号531とデータ型532とのM2個の組からなり、M2個は、戻り値の数である。
【0028】
関数フラグ540は、変換先ライブラリが変換先関数であるか否かを示す情報である。変換先ライブラリが変換先関数であるということは、そのライブラリ、即ち外部プログラムモジュールは、変換後のプラットフォームにおけるプログラム実行環境に含まれていないものであるため、プログラム変換装置100によって必要に応じてオブジェクトプログラムの内部に内部モジュールとして含ませるものであることを示す。これに対して、変換先関数でない変換先ライブラリは、変換後のプラットフォームにおけるプログラム実行環境に含まれているものであるためオブジェクトプログラムに含ませる必要がない。
【0029】
図4は、変換元ライブラリ情報と変換先ライブラリ・関数情報との例を示す図である。
同図には、21番という識別番号をもつ変換元ライブラリについての変換元ライブラリ情報401と、この変換元ライブラリの機能を包含した機能を有する変換先ライブラリについての変換先ライブラリ・関数情報501とを示している。この例に示す変換先ライブラリは、変換後のプラットフォームにおける実行環境を構成するものであり、変換先関数ではない。従って、この例は、変換後のプラットフォームにおいて、変換元ライブラリの機能を包含したような変換先ライブラリが存在することを示している。
【0030】
なお、同図中、charは1バイト型を、shortは2バイト型を、longは4バイト型を表している。
このように、ライブラリ対応表は、変換元ライブラリと変換先ライブラリとにより要求される引数の条件の対応関係と、変換元ライブラリと変換先ライブラリとから返却される戻り値の属性の対応関係とを示す。ここで、引数の条件とは、引数の数や引数1つ1つについてのデータ型をいい、戻り値の属性とは、戻り値の数や戻り値1つ1つについてのデータ型をいう。
【0031】
<関数付加状態情報>
図5は、関数付加状態情報記憶部180に保持される関数付加状態情報の例を示す図である。
関数付加状態情報は、変換先関数の識別情報と、付加状態との組からなり、各変換先関数について、オブジェクトプログラムの中間表現に付加したか否かを示す。この情報は、関数定義付加部170により参照及び更新されるものである。
<動作>
以下、上述の構成を備えるプログラム変換装置100の動作について説明する。
【0032】
図6は、プログラム変換装置100の動作を示すフローチャートである。
読込・中間表現化部110が、入力オブジェクトプログラム101を読み込み(ステップS201)、中間表現にして中間表現記憶部130に格納した後(ステップS202)、ライブラリ呼出命令検出部140は、中間表現の中からライブラリ呼出命令を検出する(ステップS203)。
【0033】
ライブラリ呼出命令検出部140が、ライブラリ呼出命令を検出しなければ(ステップS204)、コード化・出力部120が、中間表現記憶部130に格納されている中間表現をコード化して(ステップS209)、出力オブジェクトプログラム102を出力する(ステップS210)。
ライブラリ呼出命令検出部140が、ライブラリ呼出命令を検出した場合は(ステップS204)、ライブラリ・関数呼出命令生成部150は、後述するライブラリ・関数呼出命令生成処理を行い(ステップS205)、ライブラリ呼出命令により呼び出されるライブラリが変換先関数となる場合には(ステップS206)、関数定義付加部170は、関数付加状態情報記憶部180に保持されている関数付加状態情報を参照して、当該変換先関数が未だ中間表現記憶部130内に付加されていなければ(ステップS207)、関数定義記憶部190に記憶されている当該変換先関数を中間表現記憶部130内に付加し(ステップS208)、他のライブラリ呼出命令の検出のためステップS203に戻る。
【0034】
関数定義付加部170は、変換先関数を中間表現記憶部130内に格納した場合には、関数付加状態情報記憶部180に保持されている関数付加状態情報を更新し、当該変換先関数について既付加である旨を示すようにする。
図7は、ライブラリ・関数呼出命令生成部150より行われるライブラリ・関数呼出命令生成処理を示すフローチャートである。
【0035】
ライブラリ・関数呼出命令生成部150は、ライブラリ呼出命令検出部140により検出されたライブラリ呼出命令が示す変換元ライブラリの識別番号に基づいて、ライブラリ対応表を参照することにより、当該変換元ライブラリに対応する変換先ライブラリの識別番号を得て、当該識別番号のライブラリを呼び出す新たなライブラリ呼出命令を生成する(ステップS301)。この新たなライブラリ呼出命令の生成とは、元のライブラリ呼出命令についての呼び出すべきライブラリの識別番号を変換先ライブラリの識別番号となるように変換することをいう。
【0036】
新たなライブラリ呼出命令を生成した後、引数整合処理部151が、引数を設定する命令の変換処理(ステップS302〜S308)を行い、戻り値整合処理部152が、戻り値を利用する命令の変換処理(ステップS309〜S313)を行う。
即ち、引数整合処理部151は、変換先引数番号を示す変数であるnを1にし(ステップS302)、ライブラリ対応表記憶部160に格納されている変換元ライブラリ情報中の引数変換情報を参照して、変換先ライブラリに必要な第n番目の引数が存在するか判断し(ステップS303)、存在するならば、その変換先ライブラリの第n番目の引数に対応する変換元番号が指定されているか、即ち、対応するものは変換元ライブラリの引数であるかを判断し(ステップS304)、変換元引数番号が指定されている場合には、その変換元引数番号に該当する引数を定義している箇所、即ち変換元引数に値を設定している箇所を、中間表現からサーチする(ステップS305)。このサーチは、中間表現についてのUD情報を参照することによって行われる。
【0037】
図8は、UD情報を用いて引数の定義箇所をサーチするイメージを示す図である。
ライブラリ呼出記述601を参照すれば引数が特定され(矢印602)、これに基づきUD情報により引数の定義箇所が特定される(矢印603)。即ち、引数として用いられる中間表現における変数に値が設定される箇所が特定される。
【0038】
変換元引数の定義箇所のサーチ後、変換元ライブラリ情報及び変換先ライブラリ・関数情報の双方から引数情報を参照することにより、変換元引数の定義箇所における変換元引数に設定している値を型変換して第n番目の変換先引数として設定する命令を生成する(ステップS306)。
また、ステップS304において、変換先ライブラリに必要な第n番目の引数に対応する変換先引数番号が指定されておらず、定数値が指定されている場合には、その定数を第n番目の変換先引数として設定する命令を生成する(ステップS307)。ステップS306又はステップS307の実行後に変数nの値を1増加し、ステップS303に戻る(ステップS308)。
【0039】
また、ステップS303において、変換先ライブラリに必要な第n番目の引数が存在しない場合には、引数整合処理部151における変換先引数を設定する命令の処理を終了する。
戻り値整合処理部152は、変換元戻り値番号を示す変数であるmを1にし(ステップS309)、ライブラリ対応表記憶部160に格納されている変換元ライブラリ情報中の戻り値変換情報を参照して、変換元ライブラリの処理結果としての第m番目の戻り値が存在するか判断し(ステップS310)、存在するならば、その変換元ライブラリの第m番目の戻り値の使用箇所、即ち変換元戻り値の使用箇所を、中間表現からサーチする(ステップS311)。このサーチは、中間表現についてのDU情報を参照することによって行われる。
【0040】
図9は、DU情報を用いて戻り値の使用箇所をサーチするイメージを示す図である。
ライブラリ呼出記述604を参照すれば戻り値が特定され(矢印605)、これに基づきDU情報により戻り値の使用箇所が特定される(矢印606)。即ち、戻り値を、中間表現における変数に設定する箇所が特定される。
【0041】
変換元戻り値の使用箇所のサーチ後、変換元ライブラリ情報及び変換先ライブラリ・関数情報の双方から戻り値情報を参照することにより、戻り値を型変換して第m番目の変換元戻り値を使用する変数に設定する命令を生成し(ステップS312)、変数mの値を1増加し、ステップS310に戻る(ステップS313)。
【0042】
ステップS310において、変換元ライブラリの処理結果としての第m番目の戻り値が存在しない場合には、戻り値整合処理部152における変換元戻り値を設定する命令の処理を終了する。
以下、上述したライブラリ・関数呼出命令生成処理を具体例に即して説明する。
【0043】
図10は、ライブラリ・関数呼出命令生成処理の前後における中間表現のイメージを示す図である。
中間表現の状態701が、ライブラリ・関数呼出命令生成処理の実行後は、状態702のようになる。この過程について説明する。
まず、ライブラリ呼出命令検出部140から検出したライブラリ呼出命令が示すものが状態701中のlibcall#21(x,y)であるとすると、ライブラリ・関数呼出命令生成部150は、ライブラリ対応表を参照して、識別情報が21番である変換元ライブラリ情報に着目し、この中の変換先ライブラリ・関数情報へのポインタにより特定される変換先ライブラリ・関数情報にも着目する。ここで、ライブラリ呼出命令検出部140が着目する情報は、図4に示すものであったとする。
【0044】
これによれば、変換先ライブラリ・関数情報501中の識別情報は、10番を示しているため、ライブラリ・関数呼出命令生成部150は、中間表現中の21番のライブラリを呼び出す命令を、10番のライブラリを呼び出す命令、即ち状態702に示したlibcall#10に変換する(ステップS301)。ここで、状態702に示した中間表現(U,V)←lobcall#10(X,Y,Z)は、変換先ライブラリ・関数情報501の引数情報及び戻り値情報に基づいて表された中間表現であり、3つの4バイトの引数を受けて2つの4バイトの戻り値を返却する10番のライブラリを呼び出す旨の記述を意味する。なお、この中間表現は、コード化・出力部120により機械語命令列にされる段階では、例えば、3つの4バイトの引数は連続したスタック領域に割り付けるようにし、スタック領域を指し示すようにスタックポインタを設定する命令と、10番という識別番号のライブラリをメモリにロードしそのライブラリに制御移行する命令とに変換される。
【0045】
次に引数整合処理部151は、変換元ライブラリ情報401の引数変換情報を参照して、(#1,#1)であるので、第1の変換先引数が存在しそれに対応する引数番号が記憶されているので(ステップS302〜S304)、1番目の引数であるxの定義をUD情報に基づいてサーチし(ステップS305)、x=aという定義を得て、変数aを型変換して、変換後の第1番目の引数に設定する命令を生成する(ステップS306)。ここで、型変換については、変換元ライブラリ情報401の引数情報と、変換先ライブラリ・関数情報501の引数情報とを参照することによりshortをlongに変換すればよいことを知ってなされるものであり、引数整合処理部151はこれに従い2バイトの変数aを、4バイト変数Xの下位2バイトに設定する命令、即ちX=(long)aを生成する。
【0046】
続いて、引数整合処理部151は、変換元ライブラリ情報401の引数変換情報の2番目のものを参照して、(#2,0)であるので、第2の変換先引数が存在しそれに対応するのは定数0であるので(ステップS308、S303、S304)、定数0を、4バイト変数Yに設定する命令を生成する(ステップS307)。続いて、引数変換情報の3番目のものを参照して、(#3,#2)であるので、第3の変換先引数が存在しそれに対応する変換元における引数は2番目のものであるので(ステップS308、S303、S304)、2番目の引数であるyの定義をUD情報に基づいてサーチし(ステップS305)、y=2という定義を得て、2バイト定数2を、4バイト変数Zの下位2バイトに設定する命令、即ちZ=(long)aを生成する。これ以上は変換先引数は存在しないので(ステップS308、ステップS303)、戻り値についての処理に移る。
【0047】
戻り値整合処理部152は、変換元ライブラリ情報401の戻り値変換情報を参照して、(#1,#2)であるので、1番目の戻り値は変換元の状態において存在しており変換先ライブラリの2番目の戻り値により置き換えることができるため(ステップS310)、その戻り値uの使用箇所をDU情報に基づいてサーチし(ステップS311)、c=u及びd=uを得て、変換先ライブラリの2番目の戻り値であるVを型変換してc及びdに設定する命令を生成する(ステップS312)。ここで、型変換については、変換元ライブラリ情報401の戻り値情報と変換先ライブラリ・関数情報501の戻り値情報とを参照することによりlongをcharに変換すればよいことを知ってなされるものであり、戻り値整合処理部152はこれに従い4バイトの戻り値であるVの下位1バイトを1バイト変数c及びdに設定する命令、即ちc=(char)V及びd=(char)Vを生成する。なお、この中間表現は、コード化・出力部120により機械語命令列にされる段階では、例えば、スタックポインタで示されたスタック領域に連続して格納された4バイトの2つの戻り値のうちの1つの下位1バイトを、1バイトの変数c及びdに割り付けられているデータ領域に転送する命令に変換される。
【0048】
この例では、変換元のライブラリには2番目の戻り値はないので(ステップS313、S310)、以上でライブラリ・関数呼出命令生成処理は終了し、状態701で示した中間表現は、状態702のように変換される。なお、上述のライブラリ・関数呼出命令生成処理については、変換先ライブラリが変換先関数であっても同様の処理となる。
【0049】
以上、本発明に係るプログラム変換装置について、実施の形態に基づいて説明したが、本発明はこれらの実施の形態に限られないことは勿論である。即ち、
(1)本実施の形態では、ライブラリ対応表記憶部160に格納されているライブラリ対応表は、変換元ライブラリテーブルと変換先ライブラリテーブルとからなることとしたが、これは、変換先ライブラリが、複数の変換元ライブラリに対応し得ることに適した形態としたものであり、ライブラリ対応表はこれに限定されることはなく、変換前のオブジェクトプログラムから呼び出され得るライブラリと、変換後のオブジェクトプログラムから呼び出され得るライブラリとの間の引数及び戻り値の対応関係を示す情報であればその構造はいかなるものであってもよい。
(2)本実施の形態では、ライブラリ呼出命令は識別番号によりライブラリを特定するものとしたが、これに限定されることはなく、他の形式の識別情報によってライブラリを特定するものであってもよく、この場合、ライブラリ対応表内の識別情報は番号でなく、前記形式のものとなる。
(3)本実施の形態では、変換元ライブラリと変換先ライブラリとの引数及び戻り値についての、個々の要素の相違、即ち、引数の数の相違、対応する引数同士の引数番号の相違、対応する引数同士のデータ型の相違や、戻り値の数の相違、対応する戻り値同士の番号の相違、対応する戻り値同士のデータ型の相違に対応することができるようにしたが、これら全ての相違に対応するのではなくてもよく、データ型の相違が生じ得ない場合には、データ型の型変換に関連する構成要素は不要である。
(4)本実施の形態では、データ型は1バイト型、2バイト型、4バイト型等があるとしたが、これに限定されることはなく、整数型、正負の符号付き型、浮動小数点型等でもよく、2バイトのデータを4つ並列に演算対象とするような型であってもよい。
(5)本実施の形態では、関数定義付加部170が、関数定義記憶部190に記憶されている中間表現で表された変換先関数を、中間表現記憶部130内に付加することとしたが(ステップS208)、関数定義記憶部190内に記憶されている変換先関数は中間表現でなくて変換後のプラットフォームで動作可能な機械語命令列であってもよく、この場合は、ステップS208に代えて、コード化段階で呼出のためのアドレス解決等を行い付加することとなる。また、ステップS207のようにライブラリ呼出命令を検出する毎に、変換先関数を付加すべきか否かを判断するのではなく、付加すべき変換先関数の識別番号を登録しておいて、まとめて中間表現記憶部130内に付加することとしてもよい。
【0050】
なお、ライブラリ呼出命令が、変換後のプラットフォームの関係により、呼出対象が内部モジュールか外部プログラムモジュールかによって異なる命令にしなければならない場合には、変換先関数を内部モジュールとして付加した際に当該変換先関数を呼び出すライブラリ呼出命令を内部モジュールを呼出対象とする命令になるように変換すればよい。
(6)本実施の形態では、UD情報に基づいて特定した引数の定義箇所を参照して、引数の型変換を行うこととしたが、引数をレジスタによりライブラリに渡すようなものであれば、ライブラリ呼出命令の直前で、引数が格納されるべきレジスタの内容を型変換してもよい。例えば、変換前の中間表現において、引数が2バイトのレジスタに格納された後にライブラリを呼び出す命令が置かれており、変換後は、変換先ライブラリに4バイトのレジスタで引数を渡すべき場合には、前記2バイトのレジスタの内容を4バイトの下位2バイトに格納するように型変換して、引数格納用の4バイトのレジスタに格納するような命令をライブラリ呼出命令の直前に置けばよい。
(7)本実施の形態おけるプログラム変換装置の処理手順(図6、図7のフローチャートの手順等)を機械語プログラムにより実現し、これを記録媒体に記録して流通・販売の対象にしても良い。このような記録媒体には、ICカード、光ディスク、フレキシブルディスク、ROM等があるが、これらに記録された機械語プログラムは、汎用のコンピュータ又はプログラム実行機能を有する家電機器にインストールされることにより利用に供される。即ち、汎用のコンピュータ又は家電機器は、インストールした上記機械語プログラムを逐次実行して、実施の形態に示したようなプログラム変換装置を実現する。
【0051】
また、汎用のコンピュータ又は家電機器に上述のプログラム変換装置の処理手順を実行させるためのコンピュータプログラムは、ハードディスク等の記録媒体及び各種通信路等を介して流通させ頒布することもできる。
【0052】
【発明の効果】
以上の説明から明らかなように、本発明に係るプログラム変換装置は、第1のプラットフォーム上で動作可能な外部プログラムモジュールである変換元ライブラリを呼び出す変換元ライブラリ呼出命令を含み当該プラットフォーム上で動作する第1のオブジェクトプログラムを、前記第1のオブジェクトプログラムに含まれる命令およびデータの内容を抽出した中間表現へ変換した後、第2のプラットフォーム上で動作する第2のオブジェクトプログラムに変換するプログラム変換装置であって、変換元ライブラリと、当該変換元ライブラリと同一機能を実現可能であり第2のプラットフォーム上で動作可能な外部プログラムモジュールである変換先ライブラリとを対応づけたライブラリ対応関係情報であって、前記変換先ライブラリの引数である変換先引数それぞれのデータ型が何であるかという情報と、当該変換先ライブラリに対応する変換元ライブラリの引数である変換元引数それぞれのデータ型が何であるかという情報と、前記変換元ライブラリの何番目の変換元引数が前記変換先ライブラリの何番目の変換先引数に対応するのかという対応関係を示す引数対応関係情報を含む、ライブラリ対応関係情報を記憶するライブラリ対応表記憶手段と、前記第1のオブジェクトプログラムを読み込み、中間表現に変換する読込・中間表現化手段と、前記読込・中間表現化手段により前記中間表現に変換された第1のオブジェクトプログラムを格納する中間表現記憶手段と、前記中間表現に変換された第1のオブジェクトプログラム中の変換元ライブラリ呼出命令を検出するライブラリ呼出命令検出手段と、前記ライブラリ呼出命令検出手段により検出された変換元ライブラリ呼出命令を、前記ライブラリ対応関係情報を参照することにより、当該変換元ライブラリ呼出命令が呼び出す変換元ライブラリに対応する変換先ライブラリを呼び出す変換先ライブラリ呼出命令に変換する命令変換手段と、前記ライブラリ呼出命令検出手段により検出された前記ライブラリ呼出命令が呼び出す変換元ライブラリへの引数の値を設定する引数設定命令を、前記中間表現に変換された第1のオブジェクトプログラム中から検出する引数設定命令検出手段と、前記引数設定命令検出手段により検出された引数設定命令を、前記引数対応関係情報を参照することにより、当該引数設定命令が設定する前記値を、前記変換元引数に対応する変換先引数のデータ型となるように型変換して、前記変換先ライブラリへの引数として設定する変換先引数設定命令に、変換する引数設定命令変換手段とを備えことを特徴とする。
【0053】
これにより、本発明に係るプログラム変換装置に入力されるオブジェクトプログラム中の変換元ライブラリを呼び出すライブラリ呼出命令は、変換先ライブラリを呼び出すライブラリ呼出命令に変換され、変換元ライブラリに渡す引数を設定する命令は、変換元ライブラリと変換先ライブラリとの引数に要求される条件の相違を吸収して、変換先ライブラリに渡す引数を設定する命令に変換されるので、前記プログラム変換装置に出力されるオブジェクトプログラムは、第2のプラットフォーム上で動作可能なものとなる。
【0055】
即ち、変換元ライブラリの引数のデータ型と変換先ライブラリの引数のデータ型とが相違している場合においても、型変換によりこの相違を吸収するので、変換元ライブラリを呼び出すライブラリ呼出命令を含むオブジェクトプログラムは、正常に変換先ライブラリを呼び出すオブジェクトプログラムに変換される。
【0056】
また、前記ライブラリ対応関係情報はさらに、前記変換元ライブラリの戻り値である変換元戻り値それぞれのデータ型が何であるかという情報と、当該変換元ライブラリに対応する変換先ライブラリの戻り値である変換先戻り値それぞれのデータ型が何であるかという情報と、前記変換元ライブラリの何番目の変換元戻り値が前記変換先ライブラリの何番目の変換先戻り値に対応するのかという対応関係を示す戻り値対応関係情報を含み、前記プログラム変換装置はさらに、前記ライブラリ呼出命令検出手段により検出された前記ライブラリ呼出命令が呼び出す変換元ライブラリが返却する戻り値を利用する戻り値利用命令を、第1のオブジェクトプログラム中から検出する戻り値利用命令検出手段と、前記戻り値利用命令検出手段により検出された戻り値利用命令を、前記戻り値対応関係情報を参照することにより、前記変換先ライブラリが返却する戻り値を前記変換元戻り値のデータ型となるように型変換して利用する変換先戻り値利用命令に、変換する戻り値利用命令変換手段とを備えることとすることもできる。
【0058】
これにより、たとえ、変換元ライブラリが戻り値を返却するようなものであって、変換元ライブラリの戻り値のデータ型と変換先ライブラリの戻り値のデータ型とが相違している場合においても、型変換によりこの相違を吸収するので、変換元ライブラリを呼び出すライブラリ呼出命令を含むオブジェクトプログラムは、正常に変換先ライブラリを呼び出すオブジェクトプログラムに変換される。
【0059】
また、前記プログラム変換装置はさらに、前記第2のオブジェクトプログラムに前記変換先ライブラリを内部モジュールとして結合する内部モジュール結合手段を備えることとすることもできる。
これにより、第2のプラットフォーム上には、変換元ライブラリと同一機能を実現することができるライブラリが存在しない場合であっても、出力されるオブジェクトプログラムには、そのようなライブラリが内部モジュールとして結合されるため、そのオブジェクトプログラムは第2のプラットフォーム上で動作可能となる。
【0060】
このように、本発明は、プラットフォームの相違に加えて、実行環境の相違、即ちオブジェクトプログラムから実行時に呼び出される外部プログラムモジュールに関しての相違までをも吸収して、オブジェクトプログラムを別の実行環境で動作するように変換する有用な技術であり、その実用的効果は多大である。
【図面の簡単な説明】
【図1】本発明の実施の形態に係るプログラム変換装置の構成を示す図である。
【図2】変換元ライブラリテーブル400の構成を示す図である。
【図3】変換先ライブラリテーブル500の構成を示す図である。
【図4】変換元ライブラリ情報と変換先ライブラリ・関数情報との例を示す図である。
【図5】関数付加状態情報記憶部180に保持される関数付加状態情報の例を示す図である。
【図6】プログラム変換装置100の動作を示すフローチャートである。
【図7】ライブラリ・関数呼出命令生成部150より行われるライブラリ・関数呼出命令生成処理を示すフローチャートである。
【図8】UD情報を用いて引数の定義箇所をサーチするイメージを示す図である。
【図9】DU情報を用いて戻り値の使用箇所をサーチするイメージを示す図である。
【図10】ライブラリ関数呼出命令生成処理の前後における中間表現のイメージを示す図である。
【符号の説明】
100 プログラム変換装置
101 入力オブジェクトプログラム
102 出力オブジェクトプログラム
110 読込・中間表現化部
120 コード化・出力部
130 中間表現記憶部
140 ライブラリ呼出命令検出部
150 ライブラリ・関数呼出命令生成部
151 引数整合処理部
152 戻り値整合処理部
160 ライブラリ対応表記憶部
170 関数定義付加部
180 関数付加状態情報記憶部
190 関数定義記憶部
400 変換元ライブラリテーブル
401 変換元ライブラリ情報
500 変換先ライブラリテーブル
501 変換先ライブラリ・関数情報

Claims (3)

  1. 第1のプラットフォーム上で動作可能な外部プログラムモジュールである変換元ライブラリを呼び出す変換元ライブラリ呼出命令を含み当該プラットフォーム上で動作する第1のオブジェクトプログラムを、前記第1のオブジェクトプログラムに含まれる命令およびデータの内容を抽出した中間表現へ変換した後、第2のプラットフォーム上で動作する第2のオブジェクトプログラムに変換するプログラム変換装置であって、
    変換元ライブラリと、当該変換元ライブラリと同一機能を実現可能であり第2のプラットフォーム上で動作可能な外部プログラムモジュールである変換先ライブラリとを対応づけたライブラリ対応関係情報であって、前記変換先ライブラリの引数である変換先引数それぞれのデータ型が何であるかという情報と、当該変換先ライブラリに対応する変換元ライブラリの引数である変換元引数それぞれのデータ型が何であるかという情報と、前記変換元ライブラリの何番目の変換元引数が前記変換先ライブラリの何番目の変換先引数に対応するのかという対応関係を示す引数対応関係情報を含む、ライブラリ対応関係情報を記憶するライブラリ対応表記憶手段と、
    前記第1のオブジェクトプログラムを読み込み、中間表現に変換する読込・中間表現化手段と、
    前記読込・中間表現化手段により前記中間表現に変換された第1のオブジェクトプログラムを格納する中間表現記憶手段と
    前記中間表現に変換された第1のオブジェクトプログラム中の変換元ライブラリ呼出命令を検出するライブラリ呼出命令検出手段と、
    前記ライブラリ呼出命令検出手段により検出された変換元ライブラリ呼出命令を、前記ライブラリ対応関係情報を参照することにより、当該変換元ライブラリ呼出命令が呼び出す変換元ライブラリに対応する変換先ライブラリを呼び出す変換先ライブラリ呼出命令に変換する命令変換手段と、
    前記ライブラリ呼出命令検出手段により検出された前記ライブラリ呼出命令が呼び出す変換元ライブラリへの引数の値を設定する引数設定命令を、前記中間表現に変換された第1のオブジェクトプログラム中から検出する引数設定命令検出手段と、
    前記引数設定命令検出手段により検出された引数設定命令を、前記引数対応関係情報を参照することにより、当該引数設定命令が設定する前記値を、前記変換元引数に対応する変換先引数のデータ型となるように型変換して、前記変換先ライブラリへの引数として設定する変換先引数設定命令に、変換する引数設定命令変換手段とを備え
    ことを特徴とするプログラム変換装置。
  2. 前記ライブラリ対応関係情報はさらに、前記変換元ライブラリの戻り値である変換元戻り値それぞれのデータ型が何であるかという情報と、当該変換元ライブラリに対応する変換先ライブラリの戻り値である変換先戻り値それぞれのデータ型が何であるかという情報と、前記変換元ライブラリの何番目の変換元戻り値が前記変換先ライブラリの何番目の変換先戻り値に対応するのかという対応関係を示す戻り値対応関係情報を含み、
    前記プログラム変換装置はさらに、
    前記ライブラリ呼出命令検出手段により検出された前記ライブラリ呼出命令が呼び出す変換元ライブラリが返却する戻り値を利用する戻り値利用命令を、第1のオブジェクトプログラム中から検出する戻り値利用命令検出手段と、
    前記戻り値利用命令検出手段により検出された戻り値利用命令を、前記戻り値対応関係情報を参照することにより、前記変換先ライブラリが返却する戻り値を前記変換元戻り値のデータ型となるように型変換して利用する変換先戻り値利用命令に、変換する戻り値利用命令変換手段とを備える
    ことを特徴とする請求項1記載のプログラム変換装置。
  3. コンピュータを請求項1又は2記載のプログラム変換装置として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP29955398A 1998-10-21 1998-10-21 プログラム変換装置 Expired - Lifetime JP4130713B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP29955398A JP4130713B2 (ja) 1998-10-21 1998-10-21 プログラム変換装置
US09/420,870 US6438745B1 (en) 1998-10-21 1999-10-18 Program conversion apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP29955398A JP4130713B2 (ja) 1998-10-21 1998-10-21 プログラム変換装置

Publications (2)

Publication Number Publication Date
JP2000132403A JP2000132403A (ja) 2000-05-12
JP4130713B2 true JP4130713B2 (ja) 2008-08-06

Family

ID=17874120

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29955398A Expired - Lifetime JP4130713B2 (ja) 1998-10-21 1998-10-21 プログラム変換装置

Country Status (2)

Country Link
US (1) US6438745B1 (ja)
JP (1) JP4130713B2 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
US6675377B1 (en) * 1999-09-13 2004-01-06 Matsushita Electric Industrial Co., Ltd. Program conversion apparatus
GB9921720D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
US6802057B1 (en) * 2000-05-03 2004-10-05 Sun Microsystems, Inc. Automatic generation of fortran 90 interfaces to fortran 77 code
US6647546B1 (en) * 2000-05-03 2003-11-11 Sun Microsystems, Inc. Avoiding gather and scatter when calling Fortran 77 code from Fortran 90 code
US6986130B1 (en) 2000-07-28 2006-01-10 Sun Microsystems, Inc. Methods and apparatus for compiling computer programs using partial function inlining
EP1429244A4 (en) * 2001-09-18 2006-10-04 Asahi Chemical Ind COMPILER
US6922827B2 (en) * 2002-02-22 2005-07-26 Bea Systems, Inc. Iterative software development environment with prioritized build rules
US7013468B2 (en) * 2002-02-26 2006-03-14 Parametric Technology Corporation Method and apparatus for design and manufacturing application associative interoperability
US7703077B2 (en) 2002-04-30 2010-04-20 Microsoft Corporation Programming model to detect deadlocks in concurrent programs
US7603662B2 (en) * 2002-10-09 2009-10-13 Microsoft Corporation System and method for sensing types of local variables
US7526750B2 (en) * 2003-10-15 2009-04-28 Microsoft Corporation Object-based systematic state space exploration of software
US7428729B2 (en) * 2004-01-30 2008-09-23 International Business Machines Corporation Methods, systems, and computer program products for integrating legacy applications into a platform-independent environment
US7797669B1 (en) * 2004-02-13 2010-09-14 Microsoft Corporation Analysis of distributed software systems via specification substitution
US7574700B2 (en) * 2005-03-31 2009-08-11 Sun Microsystems, Inc. Supporting dynamically-typed languages in typed assembly languages
US7958133B2 (en) * 2005-04-27 2011-06-07 At&T Intellectual Property Ii, L.P. Application conversion of source data
US20060288019A1 (en) * 2005-05-27 2006-12-21 Niclas Bauer Flexible data file format
JP4712512B2 (ja) * 2005-10-14 2011-06-29 富士通株式会社 プログラム変換プログラム、プログラム変換装置、プログラム変換方法
JP2007304840A (ja) * 2006-05-11 2007-11-22 Matsushita Electric Ind Co Ltd コンパイル方法、デバッグ方法、コンパイルプログラムおよびデバッグプログラム
US9514201B2 (en) 2006-10-13 2016-12-06 International Business Machines Corporation Method and system for non-intrusive event sequencing
US9274857B2 (en) * 2006-10-13 2016-03-01 International Business Machines Corporation Method and system for detecting work completion in loosely coupled components
US9058203B2 (en) * 2006-11-20 2015-06-16 Freescale Semiconductor, Inc. System, apparatus and method for translating data
WO2008091101A1 (en) * 2007-01-22 2008-07-31 E3Net Co., Ltd. Program generating apparatus in cross platform
JP2008276735A (ja) * 2007-04-03 2008-11-13 Toshiba Corp プログラムコード変換装置及びプログラムコード変換方法
US8499288B2 (en) * 2010-05-19 2013-07-30 Microsoft Corporation User interface analysis management
US8589867B2 (en) 2010-06-18 2013-11-19 Microsoft Corporation Compiler-generated invocation stubs for data parallel programming model
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
JP5059174B2 (ja) * 2010-08-10 2012-10-24 株式会社東芝 プログラム変換装置、およびそのプログラム
JP5427802B2 (ja) * 2011-02-17 2014-02-26 株式会社日立ソリューションズ プログラミング言語間でのライブラリ変換方法及びプログラム
US20150032907A1 (en) * 2013-07-26 2015-01-29 Alcatel-Lucent Canada, Inc. Universal adapter with context-bound translation for application adaptation layer
US10078825B2 (en) 2014-02-17 2018-09-18 Nextep Systems, Inc. Apparatus and method for interfacing with third party point of sale devices
US9823909B1 (en) * 2014-05-02 2017-11-21 Amazon Technologies, Inc. Program code conversion for cross-platform compatibility
JP6398559B2 (ja) 2014-10-02 2018-10-03 富士通株式会社 情報共有プログラム、情報共有システム及び情報共有方法
US9977662B2 (en) * 2015-03-25 2018-05-22 Ca, Inc. Dynamic adapter design pattern
JP6559793B2 (ja) * 2015-04-10 2019-08-14 グーグル エルエルシー 共有オブジェクト・レベルにおけるバイナリ変換
WO2016162720A1 (en) * 2015-04-10 2016-10-13 Google Inc. Binary translation into native client
JP5942018B1 (ja) * 2015-06-23 2016-06-29 株式会社エクサ ソースコード変換プログラム
US20170046168A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Scalable single-instruction-multiple-data instructions
US10191836B2 (en) * 2016-12-28 2019-01-29 Nxp Usa, Inc. Software watchpoints apparatus for variables stored in registers
US11059435B2 (en) * 2018-09-17 2021-07-13 Drimaes, Inc. Vehicle software control device

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590331A (en) * 1994-12-23 1996-12-31 Sun Microsystems, Inc. Method and apparatus for generating platform-standard object files containing machine-independent code
JPH09128379A (ja) * 1995-11-06 1997-05-16 Hitachi Ltd 情報処理方法
US6063128A (en) * 1996-03-06 2000-05-16 Bentley Systems, Incorporated Object-oriented computerized modeling system
JP2000122876A (ja) * 1998-10-16 2000-04-28 Matsushita Electric Ind Co Ltd 情報処理装置

Also Published As

Publication number Publication date
US6438745B1 (en) 2002-08-20
JP2000132403A (ja) 2000-05-12

Similar Documents

Publication Publication Date Title
JP4130713B2 (ja) プログラム変換装置
CN108139896B (zh) 扩展虚拟机指令集体系架构
JP4699580B2 (ja) データ処理システムの配列の静的初期化方法、データ処理方法、並びにデータ処理システム及びその制御手順をコンピュータに実行させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体
AU774192B2 (en) Method and apparatus for handling exceptions as normal control flow
US7032216B1 (en) Native compilation and safe deployment of virtual machine code
CN101401075A (zh) 程序调测系统中的映射方法和程序调测系统
US20210124583A1 (en) Conditional Branch Frame Barrier
CN114816417B (zh) 一种交叉编译方法、装置、计算设备及存储介质
JP3246438B2 (ja) 可変ターゲットコンパイル処理方法、その処理装置、そのプログラムの記憶媒体および変換テーブルの記憶媒体
JP4026940B2 (ja) プログラム変換装置
US20040205697A1 (en) Transferring data along with code for program overlays
US20060179426A1 (en) Pre-compiling device
US7458071B2 (en) Compilation method, compiler apparatus and compiler
JP2005501334A (ja) Javaコンピューティング環境におけるJavaマクロインストラクションの生成のためのフレームワーク
JP2021184246A (ja) 命令変換支援プログラム、命令変換支援方法および情報処理装置
JP2004259007A (ja) コンパイラ装置、コンパイラプログラム、及び記録媒体
JP2006163686A (ja) コンパイル方法、コンパイルプログラム、コンパイル装置およびコンパイル用の記録媒体
US11635947B2 (en) Instruction translation support method and information processing apparatus
JP5399601B2 (ja) 実装コード開発システム、及び実装コード開発プログラム
JP2018124877A (ja) コード生成装置、コード生成方法、およびコード生成プログラム
JP2000122876A (ja) 情報処理装置
JP2002182926A (ja) コンパイル方法及びコンピュータ読み取り可能な記録媒体
JP2005501331A (ja) Javaオブジェクトをインスタンス化するためのJavaマクロインストラクションを生成するフレームワーク
JP2001273150A (ja) プログラム変換装置
JP3279706B2 (ja) オンライン・コンパイル方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050817

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080109

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080129

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080326

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: 20080430

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: 20080523

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: 20110530

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110530

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120530

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120530

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130530

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130530

Year of fee payment: 5

EXPY Cancellation because of completion of term