JPH01137334A - 異言語間の引数整合方法 - Google Patents
異言語間の引数整合方法Info
- Publication number
- JPH01137334A JPH01137334A JP62296304A JP29630487A JPH01137334A JP H01137334 A JPH01137334 A JP H01137334A JP 62296304 A JP62296304 A JP 62296304A JP 29630487 A JP29630487 A JP 29630487A JP H01137334 A JPH01137334 A JP H01137334A
- Authority
- JP
- Japan
- Prior art keywords
- arguments
- argument
- stack
- subroutine
- subroutine function
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 230000006870 function Effects 0.000 claims abstract description 57
- 230000003247 decreasing effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
Landscapes
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
本発明はスタックに積まれた引数(またはそのポインタ
)を所定の順序で取出して所定の処理を行うサブルーチ
ン関数であって、機械語レベルで所定のメモリ領域に格
納されてなるサブルーチン関数を備え、異なる言語1例
えばFORTRAN言語TR用語等が利用できるコンピ
ュータシステムにおいて、 特に前記サブルーチン関数へスタックを介して引数を与
えるための単一呼出文中の引数の配列を、使用言語の差
異に無関係に同じくするための方法としての引数整合方
法に関する。 なお以下各図において同一の符号および記号は同一もし
くは相当部分を示す。
)を所定の順序で取出して所定の処理を行うサブルーチ
ン関数であって、機械語レベルで所定のメモリ領域に格
納されてなるサブルーチン関数を備え、異なる言語1例
えばFORTRAN言語TR用語等が利用できるコンピ
ュータシステムにおいて、 特に前記サブルーチン関数へスタックを介して引数を与
えるための単一呼出文中の引数の配列を、使用言語の差
異に無関係に同じくするための方法としての引数整合方
法に関する。 なお以下各図において同一の符号および記号は同一もし
くは相当部分を示す。
第4図、第5図はそれぞれFORTRAN言語TR用語
によるサブルーチン関数への引数渡し形式の説明図であ
る。第4図(A)におけるAAAはこの例ではFORT
RAN言語TR用作られたサブルーチン関数であって、
機械語レベルで第4図(B)のようにスタックに積まれ
ている引数1〜3の各ポインタ(即ち当該の引数値が格
納されているメモリ領域のアドレス)をスタックアドレ
スの小さい方から順次取出して、前記引数値を用い所定
の処理を行うサブルーチン関数である。そしてこのサブ
ルーチン関数はメモリの所定領域に格納されているもの
とする。 第4図(A)の41は前記サブルーチン関数AAAに引
数1〜3を与えるためのFORTRAN言語TR用され
た単一呼出文で、この単一呼出文中には引数配列部41
aが設けられており、この配列部41aには引数1〜3
の値が順番に記述されている。 なおここで引数1は整数値(2バイト長)、引数2は整
数値(4バイト長)、引数3は文字列であるものとする
。 この単一呼出文41のコンパイル処理によって第4図(
B)のように引数1〜3の各ポインタはその順序に(左
側から)、順次スタックアドレスが減する各スタック領
域に積まれ、この呼出文41の機械語レベルの実行によ
ってサブルーチン関数AAAが呼出され該関数AAAの
前記の実行が開始せしめられる。 また第5図(A)の51はC言語で記述された単−呼出
文、51aはこの単一呼出文中の引数配列部でこの配列
部51aの引数の配列および引数値も第4図(A)の同
配列部41aと同じであるものとする。 この単一呼出文51のコンパイル処理によって配列部5
1a中の各引数(またはそのポインタ)は第5図(B)
のようにスタックに積まれる。即ちこの場合は右側の引
数3から順番に引数2.引数1と順次スタックアドレス
が減する各スタック領域に積まれる。但し文字列の引数
3のみはポインタで、数2.引数1は引数値(即値)で
積まれる。 そしてこの呼出文51の機械語レベルの実行によって前
記サブルーチン関数AAAが呼出され該関数AAAの実
行が開始せしめられる。 しかしサブルーチン関数AAAは第4図(B)のように
各引数1〜3のポインタが積まれた状態で正規の処理を
行うので第5図(B)のようなスタック構′成では正し
い処理を行うことができない。 即ち単一呼出文4i、 51による引数引渡しにおいて
、FORTRAN言語TR用数を全てポインタに変えて
渡すが、C言語では、文字列以外は指定しない限りポイ
ンタでは渡さず引数値を直接渡す。 また、引数(またはそのポインタ)のスタックへの積み
方の順序が逆となる。 そこでFORTRAN言語TR用る単一呼出文41の処
理と同一の処理をC言語を用いて行わせるためには、例
えば第3図のステップ34〜37のような複数の呼出文
を用いる必要がある。 即ちステップ34で゛は引数lに相当するiの値が整数
値IOであることを定義し、ステップ35では引数2に
相当する2の値が整数値100000であることを定義
しステップ36では引数3に相当するSの値が文字列“
A B CD E ”であることを定義している。 そしてステップ37は前記単一呼出文51に相当するも
ので、この中の引数配列部には前記引数i。 1、sのポインタを表わす&i、 &1!、sがFOR
TRAN言語での引数配列部41aでの配列と逆の順序
で、つまりs、&l、&3の順序で配列されている。従
ってこのステップ37のコンパイル処理の結果、スタッ
ク内は第4図(B)と同様な構成となりサブルーチン関
数AAAに正規の処理を行わせることができる。 即ち従来、サブルーチン関数に引数を渡そうとする場合
には、単一呼出文かサブルーチン関数内において引数の
渡し方が合うように、■引数配列部の引数を調整する(
例えば引数の配列の順序を変えたり、整数型の引数を渡
すためにその引数を示すポインタを設けたりする)か、
■サブルーチン関数内の引数受は取り部を変更する必要
があった。
によるサブルーチン関数への引数渡し形式の説明図であ
る。第4図(A)におけるAAAはこの例ではFORT
RAN言語TR用作られたサブルーチン関数であって、
機械語レベルで第4図(B)のようにスタックに積まれ
ている引数1〜3の各ポインタ(即ち当該の引数値が格
納されているメモリ領域のアドレス)をスタックアドレ
スの小さい方から順次取出して、前記引数値を用い所定
の処理を行うサブルーチン関数である。そしてこのサブ
ルーチン関数はメモリの所定領域に格納されているもの
とする。 第4図(A)の41は前記サブルーチン関数AAAに引
数1〜3を与えるためのFORTRAN言語TR用され
た単一呼出文で、この単一呼出文中には引数配列部41
aが設けられており、この配列部41aには引数1〜3
の値が順番に記述されている。 なおここで引数1は整数値(2バイト長)、引数2は整
数値(4バイト長)、引数3は文字列であるものとする
。 この単一呼出文41のコンパイル処理によって第4図(
B)のように引数1〜3の各ポインタはその順序に(左
側から)、順次スタックアドレスが減する各スタック領
域に積まれ、この呼出文41の機械語レベルの実行によ
ってサブルーチン関数AAAが呼出され該関数AAAの
前記の実行が開始せしめられる。 また第5図(A)の51はC言語で記述された単−呼出
文、51aはこの単一呼出文中の引数配列部でこの配列
部51aの引数の配列および引数値も第4図(A)の同
配列部41aと同じであるものとする。 この単一呼出文51のコンパイル処理によって配列部5
1a中の各引数(またはそのポインタ)は第5図(B)
のようにスタックに積まれる。即ちこの場合は右側の引
数3から順番に引数2.引数1と順次スタックアドレス
が減する各スタック領域に積まれる。但し文字列の引数
3のみはポインタで、数2.引数1は引数値(即値)で
積まれる。 そしてこの呼出文51の機械語レベルの実行によって前
記サブルーチン関数AAAが呼出され該関数AAAの実
行が開始せしめられる。 しかしサブルーチン関数AAAは第4図(B)のように
各引数1〜3のポインタが積まれた状態で正規の処理を
行うので第5図(B)のようなスタック構′成では正し
い処理を行うことができない。 即ち単一呼出文4i、 51による引数引渡しにおいて
、FORTRAN言語TR用数を全てポインタに変えて
渡すが、C言語では、文字列以外は指定しない限りポイ
ンタでは渡さず引数値を直接渡す。 また、引数(またはそのポインタ)のスタックへの積み
方の順序が逆となる。 そこでFORTRAN言語TR用る単一呼出文41の処
理と同一の処理をC言語を用いて行わせるためには、例
えば第3図のステップ34〜37のような複数の呼出文
を用いる必要がある。 即ちステップ34で゛は引数lに相当するiの値が整数
値IOであることを定義し、ステップ35では引数2に
相当する2の値が整数値100000であることを定義
しステップ36では引数3に相当するSの値が文字列“
A B CD E ”であることを定義している。 そしてステップ37は前記単一呼出文51に相当するも
ので、この中の引数配列部には前記引数i。 1、sのポインタを表わす&i、 &1!、sがFOR
TRAN言語での引数配列部41aでの配列と逆の順序
で、つまりs、&l、&3の順序で配列されている。従
ってこのステップ37のコンパイル処理の結果、スタッ
ク内は第4図(B)と同様な構成となりサブルーチン関
数AAAに正規の処理を行わせることができる。 即ち従来、サブルーチン関数に引数を渡そうとする場合
には、単一呼出文かサブルーチン関数内において引数の
渡し方が合うように、■引数配列部の引数を調整する(
例えば引数の配列の順序を変えたり、整数型の引数を渡
すためにその引数を示すポインタを設けたりする)か、
■サブルーチン関数内の引数受は取り部を変更する必要
があった。
しかしながら前者■の方法はプログラムを繁雑化させ、
信頼性、保守性を低下させる原因となり、後者■の方法
は既にあるサブルーチン関数を利用し難くしていた。 そこでこの発明の目的は、新に使用しようとする言語に
応じて引数の渡し方の形式を変更する必要をなくし、ま
た他言語で記述された(他言語向きに記述された)既成
のサブルーチン関数についても無変更で利用することの
できる引数整合方法を提供することを目的とする。
信頼性、保守性を低下させる原因となり、後者■の方法
は既にあるサブルーチン関数を利用し難くしていた。 そこでこの発明の目的は、新に使用しようとする言語に
応じて引数の渡し方の形式を変更する必要をなくし、ま
た他言語で記述された(他言語向きに記述された)既成
のサブルーチン関数についても無変更で利用することの
できる引数整合方法を提供することを目的とする。
前記の目的を達成するために本発明の方法は、「スタッ
クに積まれた引数または該引数のポインタを所定の順序
で(スタックアドレス小の方などから)取出して所定の
処理を行うサブルーチン関数であって、機械語レベルで
所定のメモリ領域に格納されてなるサブルーチン関数(
AAAなど)と、 ソースレベル上の第1の言語(FORTRAN言語など
)で記述された単一の呼出文であって、前記サブルーチ
ン関数に与えるべき引数(10,100000、” A
BCDE”など、以下第1の引数という)を所定の順序
(10,100000,’ A B CD E ” (
7]+1序など)で配列されてなる配列部(引数配列部
41aなど、以下第1の配列部という)を含み、該呼出
文のコンパイラ処理によって該第1の配列部の引数また
は該引数のポインタを前記サブルーチン関数が処理し得
るような順序(先頭部の引数のポインタから後尾部の同
ポインタにかけて、順次、スタックアドレスが小となる
順序など)に前記スタックに積んだのち、機早語レベル
で前記サブルーチン関数を呼んでその処理を行わせる第
1の呼出文(単一呼出文41など)と、 ソースレベル上の第2の言語(C言語など)で記述され
た単一の呼出文であって、複数の引数を所定の順序で配
列されてなる配列部(11aなど。 以下第2の配列部という)を含み、該呼出文のコンパイ
ラ処理によって該第2の配列部の引数または該引数のポ
インタを前記第1の呼出文と異なる順序(後尾部の引数
から先頭部の引数にかけて、順次、スタックアドレスが
小となる順序など)で前記スタックに積んだのち、機械
語レベルで所定の処理を行わせる第2の呼出文(単一呼
出文11など)とを備えたコンピュータシステムにおい
て、前記第2の配列部の引数が、少なくとも前記第1の
配列部と同様に配列されてなる第1の引数と、該第1の
引数の型および総数をそれぞれ表わす第2および第3の
引数(“ILS’“および3など)と、前記サブルーチ
ン関数のアドレスを示す第4の引数(&AAAなど)と
、で構成されるようにすると共に、 前記第2の呼出文の機械語レベルの前記の処理は、該呼
出文のコンパイラ処理によって一旦、前記スタックに積
まれた前記第1ないし第4の引数を取出したうえ、少な
くとも再び前記スタックに前記第1の引数を前記サブル
ーチン関数が処理し得るような順序で積上げ、かつ前記
サブルーチン関数を呼んでその処理を行わせる処理を含
むものであるようにjするものとする。
クに積まれた引数または該引数のポインタを所定の順序
で(スタックアドレス小の方などから)取出して所定の
処理を行うサブルーチン関数であって、機械語レベルで
所定のメモリ領域に格納されてなるサブルーチン関数(
AAAなど)と、 ソースレベル上の第1の言語(FORTRAN言語など
)で記述された単一の呼出文であって、前記サブルーチ
ン関数に与えるべき引数(10,100000、” A
BCDE”など、以下第1の引数という)を所定の順序
(10,100000,’ A B CD E ” (
7]+1序など)で配列されてなる配列部(引数配列部
41aなど、以下第1の配列部という)を含み、該呼出
文のコンパイラ処理によって該第1の配列部の引数また
は該引数のポインタを前記サブルーチン関数が処理し得
るような順序(先頭部の引数のポインタから後尾部の同
ポインタにかけて、順次、スタックアドレスが小となる
順序など)に前記スタックに積んだのち、機早語レベル
で前記サブルーチン関数を呼んでその処理を行わせる第
1の呼出文(単一呼出文41など)と、 ソースレベル上の第2の言語(C言語など)で記述され
た単一の呼出文であって、複数の引数を所定の順序で配
列されてなる配列部(11aなど。 以下第2の配列部という)を含み、該呼出文のコンパイ
ラ処理によって該第2の配列部の引数または該引数のポ
インタを前記第1の呼出文と異なる順序(後尾部の引数
から先頭部の引数にかけて、順次、スタックアドレスが
小となる順序など)で前記スタックに積んだのち、機械
語レベルで所定の処理を行わせる第2の呼出文(単一呼
出文11など)とを備えたコンピュータシステムにおい
て、前記第2の配列部の引数が、少なくとも前記第1の
配列部と同様に配列されてなる第1の引数と、該第1の
引数の型および総数をそれぞれ表わす第2および第3の
引数(“ILS’“および3など)と、前記サブルーチ
ン関数のアドレスを示す第4の引数(&AAAなど)と
、で構成されるようにすると共に、 前記第2の呼出文の機械語レベルの前記の処理は、該呼
出文のコンパイラ処理によって一旦、前記スタックに積
まれた前記第1ないし第4の引数を取出したうえ、少な
くとも再び前記スタックに前記第1の引数を前記サブル
ーチン関数が処理し得るような順序で積上げ、かつ前記
サブルーチン関数を呼んでその処理を行わせる処理を含
むものであるようにjするものとする。
この発明は、目的のサブルーチン関数と同じ引数の他に
、それらの性質を示す複数の引数と、目的のサブルーチ
ン関数のアドレスを示す引数とを引数配列部に持つ単一
呼出文で定義されるサブルーチンを用いて、その実行時
にスタック上の状態を目的のサブルーチン関数に合わせ
、目的のサブルーチン関数を呼出すようにしたものであ
る。
、それらの性質を示す複数の引数と、目的のサブルーチ
ン関数のアドレスを示す引数とを引数配列部に持つ単一
呼出文で定義されるサブルーチンを用いて、その実行時
にスタック上の状態を目的のサブルーチン関数に合わせ
、目的のサブルーチン関数を呼出すようにしたものであ
る。
ここではFORTRAN言語TR−作成されたサブルー
チン関数をC言語より利用する場合について述べる。 第1図のC言語ソースリストのステップ14は前記サブ
ルーチン関数AAAへの引数をFORTRAN言語TR
−数配列部41aと同順序で記述して、サブルーチン関
数AAA (あるいはこのような−般的なサブルーチン
関数)にFORTRAN言語TR−呼出文41で引数を
引渡した場合と同様の処理を行わせるための、一般的な
単一呼出文11(名称をmedとする)であり、lla
はその引数配列部である。 即ち第1図では本発明にもとづくサブルーチン“me
d”を使ってサブルーチン関数AAAを呼出している。 ’AAA’への本来の引数10.100000゜“AB
CDE”はFORTRAN言語TR−呼出文41におけ
る引数配列部41aと同じ形式で、順序通り並べられて
いる(後ろの3個)。これに“AAAoのアドレス(先
頭の引数&AAA)と、 AAA’の引数の個数3と、
その型を示す文字列“ILS”が加わって“med”の
全ての引数となっている。 第4図(B)、第5図(B)で述べたように、単一呼出
文41.51のコンパイル処理においてスタックへ積込
まれる引数の順序がFORTRAN言語TR−言語とで
は異なるので、単一呼出文11(med)のコンパイル
処理ではスタック内にスタックアドレスの減する順に、
各引数(ただし文字列はそのポインタ)“A B CD
E ” 、 100000゜10、“ILS”、3.
&AAAが順次積込まれる。 そこで単一呼出文medの(機械語レベルの)実行にお
いては、第2図の手順に従って一旦スタックへ積んだ前
記の6個の引数を取出たうえ、引数“rLs”、3を参
照して、スタックアドレスの減する順に始の3個の引数
10.100000. “ABCD E ”の各ポイ
ンタのみを順次積込み、つまりサブルーチン関数AA’
Aに与へるべき引数のみをスタックに積変えて格納し、
次に該サブルーチン関数をそのアドレス&AAAを見て
呼出しその実行を開始させるものである。 即ち第2図においてまずこの単一呼出文11(サブルー
チンme d)は目的のサブルーチン関数AAAのアド
レス&AAAと、その引数の個数3および型“MLS”
”をスタックから取出す(ステップ21〜23)。 次に積み変えていない変数があれば(ステップ24、分
岐Y)、先に取出した型に応じて新しくスタックに積み
直す(ステップ25)。これを引数すべてに対して行う
。最後にこのサブルーチンmedの戻り先(リターンア
ドレス)を目的のサブルーチン関数AAAの戻り先とし
て(ステップ26)、スタック積み変え操2作は終了と
なり、&AAAのアドレスにある目的のサブルーチン関
、数AAAの処理へ移行する(ステップ27)。 単一呼出文11のサブルーチン“me d” は最低3
つの新たな引数を持つ。この引数のうち先頭の引数は目
的のサブルーチン関数へのポインタであり、2番目はそ
の引数の個数、3番目は引数の型を示す文字列である。 4番目以降は本来の引数を順序通り並べる。型は2バイ
ト長整数が“■”、4バイト長整数が“L″1文字列が
“S゛で示される。目的のサブルーチン関数が引数を持
たない場合は、2番目の引数を0とし、3番目の引数に
任意の文字列を入れることとする。 以上のようにサブルーチン“med’を使用したことに
より、ソース上で引数に操作を加える必要がなくなった
。また同時にこれは他言語向きに作成されたサブルーチ
ン関数(第4図、第5図では“AAA“)を変更せずに
使用できることを意味する。
チン関数をC言語より利用する場合について述べる。 第1図のC言語ソースリストのステップ14は前記サブ
ルーチン関数AAAへの引数をFORTRAN言語TR
−数配列部41aと同順序で記述して、サブルーチン関
数AAA (あるいはこのような−般的なサブルーチン
関数)にFORTRAN言語TR−呼出文41で引数を
引渡した場合と同様の処理を行わせるための、一般的な
単一呼出文11(名称をmedとする)であり、lla
はその引数配列部である。 即ち第1図では本発明にもとづくサブルーチン“me
d”を使ってサブルーチン関数AAAを呼出している。 ’AAA’への本来の引数10.100000゜“AB
CDE”はFORTRAN言語TR−呼出文41におけ
る引数配列部41aと同じ形式で、順序通り並べられて
いる(後ろの3個)。これに“AAAoのアドレス(先
頭の引数&AAA)と、 AAA’の引数の個数3と、
その型を示す文字列“ILS”が加わって“med”の
全ての引数となっている。 第4図(B)、第5図(B)で述べたように、単一呼出
文41.51のコンパイル処理においてスタックへ積込
まれる引数の順序がFORTRAN言語TR−言語とで
は異なるので、単一呼出文11(med)のコンパイル
処理ではスタック内にスタックアドレスの減する順に、
各引数(ただし文字列はそのポインタ)“A B CD
E ” 、 100000゜10、“ILS”、3.
&AAAが順次積込まれる。 そこで単一呼出文medの(機械語レベルの)実行にお
いては、第2図の手順に従って一旦スタックへ積んだ前
記の6個の引数を取出たうえ、引数“rLs”、3を参
照して、スタックアドレスの減する順に始の3個の引数
10.100000. “ABCD E ”の各ポイ
ンタのみを順次積込み、つまりサブルーチン関数AA’
Aに与へるべき引数のみをスタックに積変えて格納し、
次に該サブルーチン関数をそのアドレス&AAAを見て
呼出しその実行を開始させるものである。 即ち第2図においてまずこの単一呼出文11(サブルー
チンme d)は目的のサブルーチン関数AAAのアド
レス&AAAと、その引数の個数3および型“MLS”
”をスタックから取出す(ステップ21〜23)。 次に積み変えていない変数があれば(ステップ24、分
岐Y)、先に取出した型に応じて新しくスタックに積み
直す(ステップ25)。これを引数すべてに対して行う
。最後にこのサブルーチンmedの戻り先(リターンア
ドレス)を目的のサブルーチン関数AAAの戻り先とし
て(ステップ26)、スタック積み変え操2作は終了と
なり、&AAAのアドレスにある目的のサブルーチン関
、数AAAの処理へ移行する(ステップ27)。 単一呼出文11のサブルーチン“me d” は最低3
つの新たな引数を持つ。この引数のうち先頭の引数は目
的のサブルーチン関数へのポインタであり、2番目はそ
の引数の個数、3番目は引数の型を示す文字列である。 4番目以降は本来の引数を順序通り並べる。型は2バイ
ト長整数が“■”、4バイト長整数が“L″1文字列が
“S゛で示される。目的のサブルーチン関数が引数を持
たない場合は、2番目の引数を0とし、3番目の引数に
任意の文字列を入れることとする。 以上のようにサブルーチン“med’を使用したことに
より、ソース上で引数に操作を加える必要がなくなった
。また同時にこれは他言語向きに作成されたサブルーチ
ン関数(第4図、第5図では“AAA“)を変更せずに
使用できることを意味する。
この発明によれば、異なる引数渡し方式を持つ言語間で
サブルーチン関数を利用する際に、単一呼出文で定義さ
れるサブルーチンであって、本来の引数の他にそれらの
情報を持つ引数を受取るサブルーチンを用いることとし
たので、ソース上で引数に操作を加える必要が無くなり
、プログラムの信顛性、保守性が上がり、また既存のサ
ブルーチン関数をそのまま利用できるため、プログラム
の開発効率が向上した。
サブルーチン関数を利用する際に、単一呼出文で定義さ
れるサブルーチンであって、本来の引数の他にそれらの
情報を持つ引数を受取るサブルーチンを用いることとし
たので、ソース上で引数に操作を加える必要が無くなり
、プログラムの信顛性、保守性が上がり、また既存のサ
ブルーチン関数をそのまま利用できるため、プログラム
の開発効率が向上した。
第1図は本発明の一実施例としての単一呼出文の構成図
、第2図は同じく第1図の単一呼出文の処理手順を示す
フローチャート、第3図は第1図に対応する従来の呼出
文の構成図、第4図、第5図はそれぞれFORTRAN
言語、C言語における引数渡し形式の説明図である。 U、4t:単一呼出文、lla 、 41a :引数
配列部。 ステップ15) 41 図 + 33 extern i
nt AAA(L・ 34 in
t 1=IO+’ 35 lon
g t = 1(XXXX) ’r’ 36char
x=ABcDE’+’ 37 AAA
(s、F−L、ki)ステップ38 ) オ 3丙 オ 2u4 第5囚
、第2図は同じく第1図の単一呼出文の処理手順を示す
フローチャート、第3図は第1図に対応する従来の呼出
文の構成図、第4図、第5図はそれぞれFORTRAN
言語、C言語における引数渡し形式の説明図である。 U、4t:単一呼出文、lla 、 41a :引数
配列部。 ステップ15) 41 図 + 33 extern i
nt AAA(L・ 34 in
t 1=IO+’ 35 lon
g t = 1(XXXX) ’r’ 36char
x=ABcDE’+’ 37 AAA
(s、F−L、ki)ステップ38 ) オ 3丙 オ 2u4 第5囚
Claims (1)
- 【特許請求の範囲】 1)スタックに積まれた引数または該引数のポインタを
所定の順序で取出して所定の処理を行うサブルーチン関
数であって、機械語レベルで所定のメモリ領域に格納さ
れてなるサブルーチン関数と、ソースレベル上の第1の
言語で記述された単一の呼出分であって、前記サブルー
チン関数に与えるべき引数(以下第1の引数という)を
所定の順序で配列されてなる配列部(以下第1の配列部
という)を含み、呼出文のコンパイラ処理によって該第
1の配列部の引数または該引数のポインタを前記サブル
ーチン関数が処理し得るような順序に前記スタックに積
んだのち、機械語レベルで前記サブルーチン関数を呼ん
でその処理を行わせる第1の呼出文と、 ソースレベル上の第2の言語で記述された単一の呼出文
であって、複数の引数を所定の順序で配列されてなる配
列部(以下第2の配列部という)を含み、該呼出文のコ
ンパイラ処理によって該第2の配列部の引数または該引
数のポインタを前記第1の呼出文と異なる順序で前記ス
タックに積んだのち、機械語レベルで所定の処理を行わ
せる第2の呼出文とを備えたコンピュータシステムにお
いて、 前記第2の配列部の引数が、少なくとも前記第1の配列
部と同様に配列されてなる第1の引数と、該第1の引数
の型および総数をそれぞれ表す該2および該3の引数と
、前記サブルーチン関数のアドレスを示す第4の引数と
、で構成されるようにすると共に、 前記第2の呼出文の機械語レベルの前記の処理は、該呼
出文のコンパイラ処理によって一旦前記スタックに積ま
れた前記第1ないし第4の引数を取出したうえ、少なく
とも再び前記スタックに前記第1の引数を前記サブルー
チン関数が処理し得るような順序で積上げ、かつ前記サ
ブルーチン関数を呼んでその処理を行わせる処理を含む
ものであるようにしたことを特徴とする異言語間の引数
整合方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62296304A JPH01137334A (ja) | 1987-11-25 | 1987-11-25 | 異言語間の引数整合方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP62296304A JPH01137334A (ja) | 1987-11-25 | 1987-11-25 | 異言語間の引数整合方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH01137334A true JPH01137334A (ja) | 1989-05-30 |
Family
ID=17831818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP62296304A Pending JPH01137334A (ja) | 1987-11-25 | 1987-11-25 | 異言語間の引数整合方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH01137334A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05505274A (ja) * | 1991-03-07 | 1993-08-05 | ディジタル イクイップメント コーポレイション | 2個の非類似プログラムユニット間の呼出規格を自動的にインターフェイスさせるシステム及び方法 |
-
1987
- 1987-11-25 JP JP62296304A patent/JPH01137334A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05505274A (ja) * | 1991-03-07 | 1993-08-05 | ディジタル イクイップメント コーポレイション | 2個の非類似プログラムユニット間の呼出規格を自動的にインターフェイスさせるシステム及び方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH01306923A (ja) | 異種言語間連絡方式 | |
US5315710A (en) | Program synthesizing method and apparatus | |
US4649480A (en) | Method of procedures linkage control | |
US5826088A (en) | System for protecting computer software written in interpreted language | |
EP0575066A2 (en) | Error handling in a state-free system | |
JPH01137334A (ja) | 異言語間の引数整合方法 | |
EP0417916B1 (en) | Procedure state descriptor system for digital data processors | |
US5819081A (en) | Method of executing a branch instruction of jumping to a subroutine in a pipeline control system | |
JPH04239338A (ja) | マイクロプログラム網羅率測定方式 | |
JPS5856153A (ja) | サブル−チンリタ−ン方式 | |
Semmelman | Digital signal processor: Design of the assembler | |
JPS63163635A (ja) | ブロツク単位ハツシユテ−ブルスタツク方式 | |
JPH05143427A (ja) | 情報処理システム | |
JPH03230228A (ja) | プログラムエラーの出力方式 | |
JPS63128438A (ja) | コンパイラの外部手続呼出し形式検査方法 | |
JPS59218527A (ja) | コマンド・チエツク方式 | |
JPH02205930A (ja) | インタフェースチェック処理方法 | |
JPH01121939A (ja) | プログラム変換方式 | |
Bobrow | LISP bulletin | |
JPH0695868A (ja) | ソフトウェア管理方式 | |
JPS6015736A (ja) | 項目情報表示方式 | |
JPS616739A (ja) | パタ−ン照合装置 | |
JPS62247427A (ja) | 制御バイトによる複数言語処理プロセツサ間制御方式 | |
JPH0334029A (ja) | 索引入出力の指定方式 | |
JPH02199540A (ja) | 呼び出し文の自動生成方式 |