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
Application number
JP62296304A
Other languages
English (en)
Inventor
Hironori Nagatomo
長友 宏憲
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.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric 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 Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP62296304A priority Critical patent/JPH01137334A/ja
Publication of JPH01137334A publication Critical patent/JPH01137334A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 【発明の属する技術分野】
本発明はスタックに積まれた引数(またはそのポインタ
)を所定の順序で取出して所定の処理を行うサブルーチ
ン関数であって、機械語レベルで所定のメモリ領域に格
納されてなるサブルーチン関数を備え、異なる言語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に正規の処理を行わせることができる。 即ち従来、サブルーチン関数に引数を渡そうとする場合
には、単一呼出文かサブルーチン関数内において引数の
渡し方が合うように、■引数配列部の引数を調整する(
例えば引数の配列の順序を変えたり、整数型の引数を渡
すためにその引数を示すポインタを設けたりする)か、
■サブルーチン関数内の引数受は取り部を変更する必要
があった。
【発明が解決しようとする問題点】
しかしながら前者■の方法はプログラムを繁雑化させ、
信頼性、保守性を低下させる原因となり、後者■の方法
は既にあるサブルーチン関数を利用し難くしていた。 そこでこの発明の目的は、新に使用しようとする言語に
応じて引数の渡し方の形式を変更する必要をなくし、ま
た他言語で記述された(他言語向きに記述された)既成
のサブルーチン関数についても無変更で利用することの
できる引数整合方法を提供することを目的とする。
【問題点を解決するための手段】
前記の目的を達成するために本発明の方法は、「スタッ
クに積まれた引数または該引数のポインタを所定の順序
で(スタックアドレス小の方などから)取出して所定の
処理を行うサブルーチン関数であって、機械語レベルで
所定のメモリ領域に格納されてなるサブルーチン関数(
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“)を変更せずに
使用できることを意味する。
【発明の効果】
この発明によれば、異なる引数渡し方式を持つ言語間で
サブルーチン関数を利用する際に、単一呼出文で定義さ
れるサブルーチンであって、本来の引数の他にそれらの
情報を持つ引数を受取るサブルーチンを用いることとし
たので、ソース上で引数に操作を加える必要が無くなり
、プログラムの信顛性、保守性が上がり、また既存のサ
ブルーチン関数をそのまま利用できるため、プログラム
の開発効率が向上した。
【図面の簡単な説明】
第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囚

Claims (1)

  1. 【特許請求の範囲】 1)スタックに積まれた引数または該引数のポインタを
    所定の順序で取出して所定の処理を行うサブルーチン関
    数であって、機械語レベルで所定のメモリ領域に格納さ
    れてなるサブルーチン関数と、ソースレベル上の第1の
    言語で記述された単一の呼出分であって、前記サブルー
    チン関数に与えるべき引数(以下第1の引数という)を
    所定の順序で配列されてなる配列部(以下第1の配列部
    という)を含み、呼出文のコンパイラ処理によって該第
    1の配列部の引数または該引数のポインタを前記サブル
    ーチン関数が処理し得るような順序に前記スタックに積
    んだのち、機械語レベルで前記サブルーチン関数を呼ん
    でその処理を行わせる第1の呼出文と、 ソースレベル上の第2の言語で記述された単一の呼出文
    であって、複数の引数を所定の順序で配列されてなる配
    列部(以下第2の配列部という)を含み、該呼出文のコ
    ンパイラ処理によって該第2の配列部の引数または該引
    数のポインタを前記第1の呼出文と異なる順序で前記ス
    タックに積んだのち、機械語レベルで所定の処理を行わ
    せる第2の呼出文とを備えたコンピュータシステムにお
    いて、 前記第2の配列部の引数が、少なくとも前記第1の配列
    部と同様に配列されてなる第1の引数と、該第1の引数
    の型および総数をそれぞれ表す該2および該3の引数と
    、前記サブルーチン関数のアドレスを示す第4の引数と
    、で構成されるようにすると共に、 前記第2の呼出文の機械語レベルの前記の処理は、該呼
    出文のコンパイラ処理によって一旦前記スタックに積ま
    れた前記第1ないし第4の引数を取出したうえ、少なく
    とも再び前記スタックに前記第1の引数を前記サブルー
    チン関数が処理し得るような順序で積上げ、かつ前記サ
    ブルーチン関数を呼んでその処理を行わせる処理を含む
    ものであるようにしたことを特徴とする異言語間の引数
    整合方法。
JP62296304A 1987-11-25 1987-11-25 異言語間の引数整合方法 Pending JPH01137334A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05505274A (ja) * 1991-03-07 1993-08-05 ディジタル イクイップメント コーポレイション 2個の非類似プログラムユニット間の呼出規格を自動的にインターフェイスさせるシステム及び方法

Cited By (1)

* Cited by examiner, † Cited by third party
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) 呼び出し文の自動生成方式