JP5521616B2 - 転送プログラム生成装置、転送プログラム生成方法およびプログラム - Google Patents
転送プログラム生成装置、転送プログラム生成方法およびプログラム Download PDFInfo
- Publication number
- JP5521616B2 JP5521616B2 JP2010032397A JP2010032397A JP5521616B2 JP 5521616 B2 JP5521616 B2 JP 5521616B2 JP 2010032397 A JP2010032397 A JP 2010032397A JP 2010032397 A JP2010032397 A JP 2010032397A JP 5521616 B2 JP5521616 B2 JP 5521616B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- data
- input data
- declaration
- program
- 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.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Description
前記関数の宣言には、データサイズが規定された複数の引数と、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す属性とが、記述されており、
前記解析手段は、前記関数の宣言に記述された引数のうち、前記属性にて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にて出力データであると示された引数を、前記出力データとして特定し、
前記属性は、前記引数に付加された文字列であり、
前記文字列は、当該文字列が付加された引数に対して、入力か出力かを区別するデータ転送方向と、転送するデータサイズと、を特定する方法を示す文字列で構成される。また、
本発明の転送プログラム生成装置は、
所定関数を呼び出す処理が記述された主プログラムを実行する第1プロセッサが使用するアドレス空間とは異なるアドレス空間を使用して前記所定関数を実行する第2プロセッサが前記所定関数を実行するために必要な入力データと、前記所定関数の実行結果である出力データとを、前記主プログラムのソースコードに記述された前記所定関数についての関数の宣言に基づいて特定する解析手段と、
前記解析手段にて特定された入力データを送信し、その後、前記解析手段にて特定された出力データを受信する、という処理を規定した、前記主プログラムおよび前記所定関数とは異なる呼出元プログラムを生成する第1生成手段と、
前記解析手段にて特定された入力データを受信し、その後、前記解析手段にて特定された出力データを送信する、という処理を規定した、前記所定関数とは異なる呼出先プログラムを生成する第2生成手段と、を含み、
前記関数の宣言には、引数を用いて前記入力データと前記入力データのサイズとを規定するための所定仕様に従って前記入力データと前記入力データのサイズが規定されており、
前記所定仕様は、前記引数に対して、入力に対応するデータ転送方向と、転送するデータサイズと、を特定する方法を示す仕様であり、
前記解析手段は、前記所定仕様に従って前記関数の宣言を解析することによって、前記規定されたサイズの入力データを特定する。
前記関数の宣言には、データサイズが規定された複数の引数と、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す属性とが、記述されており、
前記解析ステップでは、前記関数の宣言に記述された引数のうち、前記属性にて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にて出力データであると示された引数を、前記出力データとして特定し、
前記属性は、前記引数に付加された文字列であり、
前記文字列は、当該文字列が付加された引数に対して、入力か出力かを区別するデータ転送方向と、転送するデータサイズと、を特定する方法を示す文字列で構成される。また、
本発明の転送プログラム生成方法は、
転送プログラム生成装置が行う転送プログラム生成方法であって、
所定関数を呼び出す処理が記述された主プログラムを実行する第1プロセッサが使用するアドレス空間とは異なるアドレス空間を使用して前記所定関数を実行する第2プロセッサが前記所定関数を実行するために必要な入力データと、前記所定関数の実行結果である出力データとを、前記主プログラムのソースコードに記述された前記所定関数についての関数の宣言に基づいて特定する解析ステップと、
前記入力データを送信し、その後、前記出力データを受信する、という処理を規定した、前記主プログラムおよび前記所定関数とは異なる呼出元プログラムを生成する第1生成ステップと、
前記入力データを受信し、その後、前記出力データを送信する、という処理を規定した、前記所定関数とは異なる呼出先プログラムを生成する第2生成ステップと、を含み、
前記関数の宣言には、引数を用いて前記入力データと前記入力データのサイズとを規定するための所定仕様に従って前記入力データと前記入力データのサイズが規定されており、
前記所定仕様は、前記引数に対して、入力に対応するデータ転送方向と、転送するデータサイズと、を特定する方法を示す仕様であり、
前記解析ステップでは、前記所定仕様に従って前記関数の宣言を解析することによって、前記規定されたサイズの入力データを特定する。
前記関数の宣言には、データサイズが規定された複数の引数と、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す属性とが、記述されており、
前記解析手順では、前記関数の宣言に記述された引数のうち、前記属性にて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にて出力データであると示された引数を、前記出力データとして特定し、
前記属性は、前記引数に付加された文字列であり、
前記文字列は、当該文字列が付加された引数に対して、入力か出力かを区別するデータ転送方向と、転送するデータサイズと、を特定する方法を示す文字列で構成される。また、
本発明のプログラムは、
コンピュータに、
所定関数を呼び出す処理が記述された主プログラムを実行する第1プロセッサが使用するアドレス空間とは異なるアドレス空間を使用して前記所定関数を実行する第2プロセッサが前記所定関数を実行するために必要な入力データと、前記所定関数の実行結果である出力データとを、前記主プログラムのソースコードに記述された前記所定関数についての関数の宣言に基づいて特定する解析手順と、
前記入力データを送信し、その後、前記出力データを受信する、という処理を規定した、前記主プログラムおよび前記所定関数とは異なる呼出元プログラムを生成する第1生成手順と、
前記入力データを受信し、その後、前記出力データを送信する、という処理を規定した、前記所定関数とは異なる呼出先プログラムを生成する第2生成手順と、を実行させ、
前記関数の宣言には、引数を用いて前記入力データと前記入力データのサイズとを規定するための所定仕様に従って前記入力データと前記入力データのサイズが規定されており、
前記所定仕様は、前記引数に対して、入力に対応するデータ転送方向と、転送するデータサイズと、を特定する方法を示す仕様であり、
前記解析手順では、前記所定仕様に従って前記関数の宣言を解析することによって、前記規定されたサイズの入力データを特定する。
図1は、本発明の第1実施形態のスタブ生成部1の構成を示すブロック図である。
関数の定義:
int add(int x, int y)
[
int z;
z = x + y;
return z;
]
関数の宣言:
int add(int x, int y);
リモート関数を呼び出すプログラムの例を以下に示す。
void main(void)
[
int a, b, c;
:
c = add(a, b);
]
add関数の定義および宣言から、add関数の実行に必要な入力データは、引数であるxとyであることと、add関数からの出力データは、戻り値であることが分かる。また、add関数の定義および宣言から、x、yおよび戻り値のそれぞれはint型の変数であることが分かり、よって、転送するべきデータのサイズも決定できる。
int add_caller_stub(int x, int y)
[
int z;
send(&x, sizeof(int));
send(&y, sizeof(int));
call(ADD);
recv(&z, sizeof(int));
return z;
]
なお、上記スタブ関数において、sendはデータの送信、callは指定した関数の呼び出し、recvはデータの受信を示すための擬似的な関数である。実際には、呼び出し先プロセッサを特定するための引数などが追加されても良い。例えば、呼び出し元スタブ生成部12は、呼び出し先プロセッサを特定するための引数をさらに受け付け、その引数を、上記スタブ関数に追加してもよい。
void add_callee_stub(void)
[
int x, y, z;
recv(&x, sizeof(int));
recv(&y, sizeof(int));
z = add(x, y);
send(&z, sizeof(int));
]
呼び出し先スタブ103には、呼び出し元プロセッサからint型のデータを2つ受信し、次に、これらの受信されたデータを引数として用いてadd関数を実行し、add関数の実行結果を呼び出し元プロセッサに送信するという一連の動作が記述される。なお、実際には、呼び出し先スタブ103には、呼び出し元プロセッサを特定するための引数などが追加されても良い。例えば、呼び出し先スタブ生成部13は、呼び出し元プロセッサを特定するための引数をさらに受け付け、その引数を、呼び出し先スタブ103に追加してもよい。
次に、本発明の第2実施形態について説明する。
下に示す。
関数の宣言:
void func(int *x, int *y);
関数の定義:
void func(int *x, int *y)
[
*y = *x * 2;
]
関数の定義によれば、この関数では、入力データは1個のint型データ(*x)で、出力データは1個のint 型データ(*y)である。しかしながら、関数の宣言だけでは、それぞれの引数(int *x, int *y)が入力データであるのか出力データであるのかを判断することができない。
void func(_ _input int *x, _ _output int *y);
ここで、属性_ _inputは、ポインタ型変数(int *x)が入力であることを示し、属性_ _outputはポインタ型変数(int *y)が出力であることを示す。
呼び出し元スタブ102
void stub_caller_func(int *x, int *y)
[
send(x, sizeof(int));
call(FUNC);
recv(y, sizeof(int));
]
呼び出し先スタブ103
void stub_callee_func(void)
[
int x, y;
recv(&x, sizeof(int));
func(&x, &y);
send(&y, sizeof(int));
]
本実施形態によれば、リモート関数の宣言101Aには、データサイズが規定された複数の引数と、引数のそれぞれが入力データであるか出力データであるかを示す属性とが、少なくとも記述されている。そして、引数属性解析部3は、リモート関数の宣言101Aに記述された引数のうち、属性にて入力データであると示された引数を入力データとして特定し、リモート関数の宣言101Aに記述された引数のうち、属性にて出力データであると示された引数を出力データとして特定する。
次に、本発明の第3実施形態について説明する。
/**
* @param[in] x
* @param[out] y
*/
void func(int *x, int *y);
本実施形態では、コメント解析部4は、コメント中で@param[in]で修飾された引数は入力データであり、コメント中で@param[out]で修飾された引数は出力データであると決定する動作を行う。
/**
* @param[in]4 x
* @param[out]4 y
*/
というコメントが用いられる。
次に、本発明の第4実施形態について説明する。
void func(int *x, int *y);
本実施形態では、関数funcの追加仕様として、1つ目の引数は入力データへのポインタ型変数(int *x)、2つ目の引数は出力データへのポインタ型変数(int *y)であると定める。図8(a)は、この追加仕様を説明するための図である。
int func2(_ _input_pointer void *p, int size);
ここで、属性_ _input_pointerは、この属性が付加された引数のポインタで示されるアドレスから先のデータが入力データであることを示す属性であるとする。しかし、この属性だけでは入力データのサイズを決定することができない。そこで、属性_ _input_pointerが付加された引数の次の引数はデータのサイズを示す引数であるという追加仕様が加えられる。図8(b)は、この追加仕様を説明するための図である。
int stub_caller_func2(void *p, int size)
[
int tmp;
send(&size, sizeof(int));
send(p, size);
call(FUNC2);
recv(&tmp, sizeof(int));
return tmp;
]
呼び出し先スタブ生成部13にて生成される呼び出し先スタブ103の例を以下に示す。
int stub_callee_func2(void)
[
void *p;
int size;
int tmp;
recv(&size, sizeof(int));
p = malloc(size);
recv(p, size);
tmp = func2(p, size);
send(&tmp, sizeof(int));
]
本実施形態によれば、リモート関数の宣言101Cには、追加仕様に従って特定情報が記述されている。追加仕様解析部5は、追加仕様に従ってリモート関数の宣言Cを解析することによって、入力データと出力データとを特定する。
次に、本発明の第5実施形態について説明する。
関数の宣言:
void func(int *x, int *y);
以下に関数の定義を示す。
関数の定義:
void func(int *x, int *y)
[
*y = *x * 2;
]
関数定義解析部6は、この関数の定義を読み込み、この関数の定義を解析することによって、引数xが入力データへのポインタで、引数yが出力データへのポインタであると決定する。
次に、本発明の第6実施形態について説明する。
struct dog Dog;
Dog *dog_init(int id);
void dog_get_id(Dog *p);
このライブラリは、1つのデータ型と2つの関数から構成されている。dog_init関数は、Dog型のデータをメモリ上に確保し、dog_get_id関数は、Dog型データを参照してidを返すという動作とする。両関数の実装とDog型データの実装は、ライブラリを利用する側には隠蔽されているとする。これらの関数を利用する例は以下の様になる。
#include "dog.h"
void main(void)
[
int id;
Dog *p = dog_init(1);
id = dog_get_id(p);
]
まず、二つの関数のうち、dog_get_id関数のみを呼び出し先プロセッサで実行する場合を考える。
Dog * stub_caller_dog_init(int id)
[
Dog *p;
send(&id, sizeof(int));
call(DOG_INIT);
recv(&p, sizeof(Dog *));
return p;
]
dog_init関数についての呼び出し先スタブ103:
void stub_callee_dog_init(void)
[
int id;
Dog *p;
recv(&id, sizeof(int));
p = dog_init(id);
send(&p, sizeof(Dog *));
]
dog_get_id関数についての呼び出し元スタブ102:
int stub_caller_dog_get_id(Dog *p)
[
int id;
send(&p, sizeof(Dog *));
call(DOG_GET_ID);
recv(&id, sizeof(int));
return id;
]
dog_get_id関数についての呼び出し先スタブ103:
void stub_callee_dog_get_id(void)
[
int id;
Dog *p;
recv(&p, sizeof(Dog *));
id = dog_get_id(p);
send(&id, sizeof(int));
]
本実施形態では、主プログラムのソースコードには、リモート関数群を構成する複数のリモート関数と、リモート関数群を構成する複数のリモート関数のすべてが呼び出し先プロセッサ実行される場合に特定されるリモート関数ごとの特定情報と、が記述されている。
前記第2プロセッサが前記所定関数を実行するために必要な入力データと、前記所定関数の実行結果である出力データと、を特定するための、前記主プログラムのソースコードに記述された特定情報に基づいて、前記入力データと前記出力データとを特定する解析手段と、
前記解析手段にて特定された入力データを送信し、その後、前記解析手段にて特定された出力データを受信する、という処理を規定した呼出元プログラムを、前記第1転送プログラムとして生成する第1生成手段と、
前記解析手段にて特定された入力データを受信し、その後、前記解析手段にて特定された出力データを送信する、という処理を規定した呼出先プログラムを、前記第2転送プログラムとして生成する第2生成手段と、を含む転送プログラム生成装置。
前記主プログラムのソースコードには、互いに異なる処理を規定し各々が前記所定関数である複数の特定関数と、前記複数の特定関数のすべてが前記第2プロセッサで実行される場合での当該特定関数ごとの特定情報と、が記述されており、
前記解析手段は、前記特定関数ごとに、当該特定関数についての特定情報に基づいて前記入力データと前記出力データとを特定し、
前記第1生成手段は、前記解析手段にて前記特定関数ごとに特定された入力データおよび出力データに基づいて、前記特定関数ごとに、前記呼出元プログラムを前記第1転送プログラムとして生成し、
前記第2生成手段は、前記解析手段にて前記特定関数ごとに特定された入力データおよび出力データに基づいて、前記特定関数ごとに、前記呼出先プログラムを前記第2転送プログラムとして生成する、転送プログラム生成装置。
前記複数の特定関数は、同一のライブラリに登録されたものである、転送プログラム生成装置。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言が記述されており、
前記関数の宣言には、複数の引数と、前記引数のそれぞれのデータサイズと前記引数のそれぞれが前記入力データであるか前記出力データであるかとを示す属性とが、記述されており、
前記特定情報は、前記関数の宣言であり、
前記解析手段は、前記関数の宣言に記述された引数のうち、前記属性にてデータサイズが示され入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にてデータサイズが示され出力データであると示された引数を、前記出力データとして特定する、転送プログラム生成装置。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言と、前記関数宣言に付加されたコメントが記述されており、
前記関数の宣言には、複数の引数が記述されており、
前記コメントには、前記引数のそれぞれのデータサイズと、前記引数のそれぞれが前記入力データであるか前記出力データであるかと、を示す情報が示され、
前記特定情報は、前記関数の宣言と前記コメントにて構成され、
前記解析手段は、前記関数の宣言に記述された引数のうち、前記コメントにてデータサイズが示され入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記コメントにてデータサイズが示され出力データであると示された引数を、前記出力データとして特定する、転送プログラム生成装置。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言と、前記関数宣言に付加されたコメントが記述されており、
前記関数の宣言には、複数の引数と、前記引数のそれぞれが前記入力データであるか前記出力データであるかとを示す属性とが、記述されており、
前記コメントには、前記引数のそれぞれのデータサイズを示す情報が示され、
前記特定情報は、前記関数の宣言と前記コメントにて構成され、
前記解析手段は、前記関数の宣言に記述された引数のうち、前記コメントにてデータサイズが示され前記属性にて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記コメントにてデータサイズが示され前記属性にて出力データであると示された引数を、前記出力データとして特定する、転送プログラム生成装置。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言と、前記関数宣言に付加されたコメントが記述されており、
前記関数の宣言には、複数の引数と、前記引数のそれぞれのデータサイズを示す属性とが、記述されており、
前記コメントには、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す情報が示され、
前記特定情報は、前記関数の宣言と前記コメントにて構成され、
前記解析手段は、前記関数の宣言に記述された引数のうち、前記属性にてデータサイズが示され前記コメントにて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にてデータサイズが示され前記コメントにて出力データであると示された引数を、前記出力データとして特定する、転送プログラム生成装置。
前記第2プロセッサが前記所定関数を実行するために必要な入力データと、前記所定関数の実行結果である出力データと、を特定するための、前記主プログラムのソースコードに記述された特定情報に基づいて、前記入力データと前記出力データとを特定する解析ステップと、
前記入力データを送信し、その後、前記出力データを受信する、という処理を規定した呼出元プログラムを、前記第1転送プログラムとして生成する第1生成ステップと、
前記入力データを受信し、その後、前記出力データを送信する、という処理を規定した呼出先プログラムを、前記第2転送プログラムとして生成する第2生成ステップと、を含む転送プログラム生成方法。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言が記述されており、
前記関数の宣言には、データサイズが規定された引数を示す引数情報と、データサイズが規定された戻り値を示す戻り値情報とが、記述されており、
前記特定情報は、前記関数の宣言であり、
前記解析ステップでは、前記引数情報に示された引数を、前記入力データとして特定し、前記戻り値情報に示された戻り値を、前記出力データとして特定する、転送プログラム生成方法。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言が記述されており、
前記関数の宣言には、データサイズが規定された複数の引数と、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す属性とが、記述されており、
前記特定情報は、前記関数の宣言であり、
前記解析ステップでは、前記関数の宣言に記述された引数のうち、前記属性にて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にて出力データであると示された引数を、前記出力データとして特定する、転送プログラム生成方法。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言と、前記関数宣言に付加されたコメントが記述されており、
前記関数の宣言には、データサイズが規定された複数の引数が記述されており、
前記コメントには、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す情報が示され、
前記特定情報は、前記関数の宣言と前記コメントにて構成され、
前記解析ステップでは、前記関数の宣言に記述された引数のうち、前記コメントにて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記コメントにて出力データであると示された引数を、前記出力データとして特定する、転送プログラム生成方法。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言が記述されており、
前記関数の宣言には、前記入力データと前記出力データとを規定するための所定仕様に従って前記特定情報が記述されており、
前記解析ステップでは、前記所定仕様に従って前記関数の宣言を解析することによって、前記入力データと前記出力データとを特定する、転送プログラム生成方法。
前記主プログラムのソースコードには、前記所定関数についての関数の定義が記述されており、
前記関数の定義には、前記所定関数の処理内容が記述されており、
前記特定情報は、前記関数の定義であり、
前記解析ステップでは、前記関数の定義を解析することによって、前記入力データと前記出力データとを特定する、転送プログラム生成方法。
前記主プログラムのソースコードには、互いに異なる処理を規定し各々が前記所定関数である複数の特定関数と、前記複数の特定関数のすべてが前記第2プロセッサで実行される場合での当該特定関数ごとの特定情報と、が記述されており、
前記解析ステップでは、前記特定関数ごとに、当該特定関数についての特定情報に基づいて前記入力データと前記出力データとを特定し、
前記第1生成ステップでは、前記特定関数ごとに特定された入力データおよび出力データに基づいて、前記特定関数ごとに、前記呼出元プログラムを前記第1転送プログラムとして生成し、
前記第2生成ステップでは、前記特定関数ごとに特定された入力データおよび出力データに基づいて、前記特定関数ごとに、前記呼出先プログラムを前記第2転送プログラムとして生成する、転送プログラム生成方法。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言が記述されており、
前記関数の宣言には、複数の引数と、前記引数のそれぞれのデータサイズと前記引数のそれぞれが前記入力データであるか前記出力データであるかとを示す属性とが、記述されており、
前記特定情報は、前記関数の宣言であり、
前記解析ステップでは、前記関数の宣言に記述された引数のうち、前記属性にてデータサイズが示され入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にてデータサイズが示され出力データであると示された引数を、前記出力データとして特定する、転送プログラム生成方法。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言と、前記関数宣言に付加されたコメントが記述されており、
前記関数の宣言には、複数の引数が記述されており、
前記コメントには、前記引数のそれぞれのデータサイズと、前記引数のそれぞれが前記入力データであるか前記出力データであるかと、を示す情報が示され、
前記特定情報は、前記関数の宣言と前記コメントにて構成され、
前記解析ステップでは、前記関数の宣言に記述された引数のうち、前記コメントにてデータサイズが示され入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記コメントにてデータサイズが示され出力データであると示された引数を、前記出力データとして特定する、転送プログラム生成方法。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言と、前記関数宣言に付加されたコメントが記述されており、
前記関数の宣言には、複数の引数と、前記引数のそれぞれが前記入力データであるか前記出力データであるかとを示す属性とが、記述されており、
前記コメントには、前記引数のそれぞれのデータサイズを示す情報が示され、
前記特定情報は、前記関数の宣言と前記コメントにて構成され、
前記解析ステップでは、前記関数の宣言に記述された引数のうち、前記コメントにてデータサイズが示され前記属性にて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記コメントにてデータサイズが示され前記属性にて出力データであると示された引数を、前記出力データとして特定する、転送プログラム生成方法。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言と、前記関数宣言に付加されたコメントが記述されており、
前記関数の宣言には、複数の引数と、前記引数のそれぞれのデータサイズを示す属性とが、記述されており、
前記コメントには、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す情報が示され、
前記特定情報は、前記関数の宣言と前記コメントにて構成され、
前記解析ステップでは、前記関数の宣言に記述された引数のうち、前記属性にてデータサイズが示され前記コメントにて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にてデータサイズが示され前記コメントにて出力データであると示された引数を、前記出力データとして特定する、転送プログラム生成方法。
前記第2プロセッサが前記所定関数を実行するために必要な入力データと、前記所定関数の実行結果である出力データと、を特定するための、前記主プログラムのソースコードに記述された特定情報に基づいて、前記入力データと前記出力データとを特定する解析手順と、
前記入力データを送信し、その後、前記出力データを受信する、という一連の処理を規定した呼出元プログラムを、前記第1転送プログラムとして生成する第1生成手順と、
前記入力データを受信し、その後、前記出力データを送信する、という一連の処理を規定した呼出先プログラムを、前記第2転送プログラムとして生成する第2生成手順と、を実行させるためのプログラム。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言が記述されており、
前記関数の宣言には、データサイズが規定された引数を示す引数情報と、データサイズが規定された戻り値を示す戻り値情報とが、記述されており、
前記特定情報は、前記関数の宣言であり、
前記解析手順では、前記引数情報に示された引数を、前記入力データとして特定し、前記戻り値情報に示された戻り値を、前記出力データとして特定する、プログラム。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言が記述されており、
前記関数の宣言には、データサイズが規定された複数の引数と、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す属性とが、記述されており、
前記特定情報は、前記関数の宣言であり、
前記解析手順では、前記関数の宣言に記述された引数のうち、前記属性にて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にて出力データであると示された引数を、前記出力データとして特定する、プログラム。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言と、前記関数宣言に付加されたコメントが記述されており、
前記関数の宣言には、データサイズが規定された複数の引数が記述されており、
前記コメントには、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す情報が示され、
前記特定情報は、前記関数の宣言と前記コメントにて構成され、
前記解析手順では、前記関数の宣言に記述された引数のうち、前記コメントにて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記コメントにて出力データであると示された引数を、前記出力データとして特定する、プログラム。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言が記述されており、
前記関数の宣言には、前記入力データと前記出力データとを規定するための所定仕様に従って前記特定情報が記述されており、
前記解析手順では、前記所定仕様に従って前記関数の宣言を解析することによって、前記入力データと前記出力データとを特定する、プログラム。
前記主プログラムのソースコードには、前記所定関数についての関数の定義が記述されており、
前記関数の定義には、前記所定関数の処理内容が記述されており、
前記特定情報は、前記関数の定義であり、
前記解析手順では、前記関数の定義を解析することによって、前記入力データと前記出力データとを特定する、プログラム。
前記主プログラムのソースコードには、互いに異なる処理を規定し各々が前記所定関数である複数の特定関数と、前記複数の特定関数のすべてが前記第2プロセッサで実行される場合での当該特定関数ごとの特定情報と、が記述されており、
前記解析手順では、前記特定関数ごとに、当該特定関数についての特定情報に基づいて前記入力データと前記出力データとを特定し、
前記第1生成手順では、前記特定関数ごとに特定された入力データおよび出力データに基づいて、前記特定関数ごとに、前記呼出元プログラムを前記第1転送プログラムとして生成し、
前記第2生成手順では、前記特定関数ごとに特定された入力データおよび出力データに基づいて、前記特定関数ごとに、前記呼出先プログラムを前記第2転送プログラムとして生成する、プログラム。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言が記述されており、
前記関数の宣言には、複数の引数と、前記引数のそれぞれのデータサイズと前記引数のそれぞれが前記入力データであるか前記出力データであるかとを示す属性とが、記述されており、
前記特定情報は、前記関数の宣言であり、
前記解析手順では、前記関数の宣言に記述された引数のうち、前記属性にてデータサイズが示され入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にてデータサイズが示され出力データであると示された引数を、前記出力データとして特定する、プログラム。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言と、前記関数宣言に付加されたコメントが記述されており、
前記関数の宣言には、複数の引数が記述されており、
前記コメントには、前記引数のそれぞれのデータサイズと、前記引数のそれぞれが前記入力データであるか前記出力データであるかと、を示す情報が示され、
前記特定情報は、前記関数の宣言と前記コメントにて構成され、
前記解析手順では、前記関数の宣言に記述された引数のうち、前記コメントにてデータサイズが示され入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記コメントにてデータサイズが示され出力データであると示された引数を、前記出力データとして特定する、プログラム。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言と、前記関数宣言に付加されたコメントが記述されており、
前記関数の宣言には、複数の引数と、前記引数のそれぞれが前記入力データであるか前記出力データであるかとを示す属性とが、記述されており、
前記コメントには、前記引数のそれぞれのデータサイズを示す情報が示され、
前記特定情報は、前記関数の宣言と前記コメントにて構成され、
前記解析手順では、前記関数の宣言に記述された引数のうち、前記コメントにてデータサイズが示され前記属性にて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記コメントにてデータサイズが示され前記属性にて出力データであると示された引数を、前記出力データとして特定する、プログラム。
前記主プログラムのソースコードには、前記所定関数についての関数の宣言と、前記関数宣言に付加されたコメントが記述されており、
前記関数の宣言には、複数の引数と、前記引数のそれぞれのデータサイズを示す属性とが、記述されており、
前記コメントには、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す情報が示され、
前記特定情報は、前記関数の宣言と前記コメントにて構成され、
前記解析手順では、前記関数の宣言に記述された引数のうち、前記属性にてデータサイズが示され前記コメントにて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にてデータサイズが示され前記コメントにて出力データであると示された引数を、前記出力データとして特定する、プログラム。
1a、1b プロセッサ
11、11A、11B、11C、1D 転送データ決定部
12 呼び出し元スタブ生成部
13 呼び出し先スタブ生成部
2 関数宣言解析部
3 引数属性解析部
4 コメント解析部
5 追加仕様解析部
6 関数定義解析部
100 CPU
200 ハードディスク
Claims (6)
- 所定関数を呼び出す処理が記述された主プログラムを実行する第1プロセッサが使用するアドレス空間とは異なるアドレス空間を使用して前記所定関数を実行する第2プロセッサが前記所定関数を実行するために必要な入力データと、前記所定関数の実行結果である出力データとを、前記主プログラムのソースコードに記述された前記所定関数についての関数の宣言に基づいて特定する解析手段と、
前記解析手段にて特定された入力データを送信し、その後、前記解析手段にて特定された出力データを受信する、という処理を規定した、前記主プログラムおよび前記所定関数とは異なる呼出元プログラムを生成する第1生成手段と、
前記解析手段にて特定された入力データを受信し、その後、前記解析手段にて特定された出力データを送信する、という処理を規定した、前記所定関数とは異なる呼出先プログラムを生成する第2生成手段と、を含み、
前記関数の宣言には、データサイズが規定された複数の引数と、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す属性とが、記述されており、
前記解析手段は、前記関数の宣言に記述された引数のうち、前記属性にて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にて出力データであると示された引数を、前記出力データとして特定し、
前記属性は、前記引数に付加された文字列であり、
前記文字列は、当該文字列が付加された引数に対して、入力か出力かを区別するデータ転送方向と、転送するデータサイズと、を特定する方法を示す文字列で構成される、転送プログラム生成装置。 - 所定関数を呼び出す処理が記述された主プログラムを実行する第1プロセッサが使用するアドレス空間とは異なるアドレス空間を使用して前記所定関数を実行する第2プロセッサが前記所定関数を実行するために必要な入力データと、前記所定関数の実行結果である出力データとを、前記主プログラムのソースコードに記述された前記所定関数についての関数の宣言に基づいて特定する解析手段と、
前記解析手段にて特定された入力データを送信し、その後、前記解析手段にて特定された出力データを受信する、という処理を規定した、前記主プログラムおよび前記所定関数とは異なる呼出元プログラムを生成する第1生成手段と、
前記解析手段にて特定された入力データを受信し、その後、前記解析手段にて特定された出力データを送信する、という処理を規定した、前記所定関数とは異なる呼出先プログラムを生成する第2生成手段と、を含み、
前記関数の宣言には、引数を用いて前記入力データと前記入力データのサイズとを規定するための所定仕様に従って前記入力データと前記入力データのサイズが規定されており、
前記所定仕様は、前記引数に対して、入力に対応するデータ転送方向と、転送するデータサイズと、を特定する方法を示す仕様であり、
前記解析手段は、前記所定仕様に従って前記関数の宣言を解析することによって、前記規定されたサイズの入力データを特定する、転送プログラム生成装置。 - 転送プログラム生成装置が行う転送プログラム生成方法であって、
所定関数を呼び出す処理が記述された主プログラムを実行する第1プロセッサが使用するアドレス空間とは異なるアドレス空間を使用して前記所定関数を実行する第2プロセッサが前記所定関数を実行するために必要な入力データと、前記所定関数の実行結果である出力データとを、前記主プログラムのソースコードに記述された前記所定関数についての関数の宣言に基づいて特定する解析ステップと、
前記入力データを送信し、その後、前記出力データを受信する、という処理を規定した、前記主プログラムおよび前記所定関数とは異なる呼出元プログラムを生成する第1生成ステップと、
前記入力データを受信し、その後、前記出力データを送信する、という処理を規定した、前記所定関数とは異なる呼出先プログラムを生成する第2生成ステップと、を含み、
前記関数の宣言には、データサイズが規定された複数の引数と、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す属性とが、記述されており、
前記解析ステップでは、前記関数の宣言に記述された引数のうち、前記属性にて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にて出力データであると示された引数を、前記出力データとして特定し、
前記属性は、前記引数に付加された文字列であり、
前記文字列は、当該文字列が付加された引数に対して、入力か出力かを区別するデータ転送方向と、転送するデータサイズと、を特定する方法を示す文字列で構成される、転送プログラム生成方法。 - 転送プログラム生成装置が行う転送プログラム生成方法であって、
所定関数を呼び出す処理が記述された主プログラムを実行する第1プロセッサが使用するアドレス空間とは異なるアドレス空間を使用して前記所定関数を実行する第2プロセッサが前記所定関数を実行するために必要な入力データと、前記所定関数の実行結果である出力データとを、前記主プログラムのソースコードに記述された前記所定関数についての関数の宣言に基づいて特定する解析ステップと、
前記入力データを送信し、その後、前記出力データを受信する、という処理を規定した、前記主プログラムおよび前記所定関数とは異なる呼出元プログラムを生成する第1生成ステップと、
前記入力データを受信し、その後、前記出力データを送信する、という処理を規定した、前記所定関数とは異なる呼出先プログラムを生成する第2生成ステップと、を含み、
前記関数の宣言には、引数を用いて前記入力データと前記入力データのサイズとを規定するための所定仕様に従って前記入力データと前記入力データのサイズが規定されており、
前記所定仕様は、前記引数に対して、入力に対応するデータ転送方向と、転送するデータサイズと、を特定する方法を示す仕様であり、
前記解析ステップでは、前記所定仕様に従って前記関数の宣言を解析することによって、前記規定されたサイズの入力データを特定する、転送プログラム生成方法。 - コンピュータに、
所定関数を呼び出す処理が記述された主プログラムを実行する第1プロセッサが使用するアドレス空間とは異なるアドレス空間を使用して前記所定関数を実行する第2プロセッサが前記所定関数を実行するために必要な入力データと、前記所定関数の実行結果である出力データとを、前記主プログラムのソースコードに記述された前記所定関数についての関数の宣言に基づいて特定する解析手順と、
前記入力データを送信し、その後、前記出力データを受信する、という処理を規定した、前記主プログラムおよび前記所定関数とは異なる呼出元プログラムを生成する第1生成手順と、
前記入力データを受信し、その後、前記出力データを送信する、という処理を規定した、前記所定関数とは異なる呼出先プログラムを生成する第2生成手順と、を実行させ、
前記関数の宣言には、データサイズが規定された複数の引数と、前記引数のそれぞれが前記入力データであるか前記出力データであるかを示す属性とが、記述されており、
前記解析手順では、前記関数の宣言に記述された引数のうち、前記属性にて入力データであると示された引数を、前記入力データとして特定し、前記関数の宣言に記述された引数のうち、前記属性にて出力データであると示された引数を、前記出力データとして特定し、
前記属性は、前記引数に付加された文字列であり、
前記文字列は、当該文字列が付加された引数に対して、入力か出力かを区別するデータ転送方向と、転送するデータサイズと、を特定する方法を示す文字列で構成される、プログラム。 - コンピュータに、
所定関数を呼び出す処理が記述された主プログラムを実行する第1プロセッサが使用するアドレス空間とは異なるアドレス空間を使用して前記所定関数を実行する第2プロセッサが前記所定関数を実行するために必要な入力データと、前記所定関数の実行結果である出力データとを、前記主プログラムのソースコードに記述された前記所定関数についての関数の宣言に基づいて特定する解析手順と、
前記入力データを送信し、その後、前記出力データを受信する、という処理を規定した、前記主プログラムおよび前記所定関数とは異なる呼出元プログラムを生成する第1生成手順と、
前記入力データを受信し、その後、前記出力データを送信する、という処理を規定した、前記所定関数とは異なる呼出先プログラムを生成する第2生成手順と、を実行させ、
前記関数の宣言には、引数を用いて前記入力データと前記入力データのサイズとを規定するための所定仕様に従って前記入力データと前記入力データのサイズが規定されており、
前記所定仕様は、前記引数に対して、入力に対応するデータ転送方向と、転送するデータサイズと、を特定する方法を示す仕様であり、
前記解析手順では、前記所定仕様に従って前記関数の宣言を解析することによって、前記規定されたサイズの入力データを特定する、プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010032397A JP5521616B2 (ja) | 2010-02-17 | 2010-02-17 | 転送プログラム生成装置、転送プログラム生成方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010032397A JP5521616B2 (ja) | 2010-02-17 | 2010-02-17 | 転送プログラム生成装置、転送プログラム生成方法およびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011170512A JP2011170512A (ja) | 2011-09-01 |
JP5521616B2 true JP5521616B2 (ja) | 2014-06-18 |
Family
ID=44684596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010032397A Active JP5521616B2 (ja) | 2010-02-17 | 2010-02-17 | 転送プログラム生成装置、転送プログラム生成方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5521616B2 (ja) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0588939A (ja) * | 1991-03-15 | 1993-04-09 | Nec Corp | 副プログラム単体テスト方式 |
JPH06236283A (ja) * | 1993-02-10 | 1994-08-23 | Sharp Corp | 言語処理システム |
JPH07282017A (ja) * | 1994-04-12 | 1995-10-27 | Hitachi Ltd | インタフェース定義ファイル生成装置 |
JPH09160762A (ja) * | 1995-12-04 | 1997-06-20 | Hitachi Ltd | プログラム変換方式 |
JPH1165832A (ja) * | 1997-08-21 | 1999-03-09 | Sony Corp | ソースコード変換方法及び記録媒体 |
JP2002132502A (ja) * | 2000-10-25 | 2002-05-10 | Nec Software Hokuriku Ltd | 言語機能解釈による分散オブジェクト自動生成システム及び方法 |
JP2003076563A (ja) * | 2001-06-15 | 2003-03-14 | Ntt Software Corp | 分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム |
-
2010
- 2010-02-17 JP JP2010032397A patent/JP5521616B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2011170512A (ja) | 2011-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110096338B (zh) | 智能合约执行方法、装置、设备及介质 | |
JP5679989B2 (ja) | デバッグパイプライン | |
US9092332B2 (en) | Activity based sampling of diagnostics data | |
JP5167589B2 (ja) | アプリケーションサーバ装置および仮想マシンプログラム | |
US9009676B2 (en) | Common recording and replaying performance test tool for a client-server environment | |
US8615750B1 (en) | Optimizing application compiling | |
US20110161840A1 (en) | Performance of template based javascript widgets | |
CN108287708B (zh) | 一种数据处理方法、装置、服务器及计算机可读存储介质 | |
EP2153344A1 (en) | Dynamically loading scripts | |
US9491222B2 (en) | System and method for interoperability between flex applications and .NET applications | |
JP2013528884A (ja) | グラフに基づく計算の動的ロード | |
US11321090B2 (en) | Serializing and/or deserializing programs with serializable state | |
US7975255B2 (en) | Method, apparatus, and program product for building integration workflow endpoints into web components | |
Wilkinson et al. | QMachine: commodity supercomputing in web browsers | |
US10387126B2 (en) | Data marshalling optimization via intermediate representation of workflows | |
JP7025104B2 (ja) | 情報処理装置、方法およびプログラム | |
US20070006121A1 (en) | Development activity recipe | |
US9672020B2 (en) | Selectively loading precompiled header(s) and/or portion(s) thereof | |
US8661421B2 (en) | Methods and apparatuses for endian conversion | |
US7673051B2 (en) | Resource usage conflict identifier | |
JP5521616B2 (ja) | 転送プログラム生成装置、転送プログラム生成方法およびプログラム | |
JPH08502375A (ja) | コンピュータにて並列実行処理可能なオブジェクト指向プログラムの少なくとも1つのオブジェクトにおける少なくとも1つのテストの実施方法 | |
JP7073813B2 (ja) | 制御プログラム、制御方法および情報処理装置 | |
JP2012128581A (ja) | 通信コード生成装置および関数利用コンピュータおよび関数公開コンピュータおよびコンピュータシステムおよび通信コード生成方法およびプログラム | |
JP2013235508A (ja) | オブジェクト指向プログラム生成装置、その方法、プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130111 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130821 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131008 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131118 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20131217 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140205 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20140218 |
|
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: 20140311 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140324 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5521616 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |