JPH0293947A - 電子計算機 - Google Patents
電子計算機Info
- Publication number
- JPH0293947A JPH0293947A JP24768188A JP24768188A JPH0293947A JP H0293947 A JPH0293947 A JP H0293947A JP 24768188 A JP24768188 A JP 24768188A JP 24768188 A JP24768188 A JP 24768188A JP H0293947 A JPH0293947 A JP H0293947A
- Authority
- JP
- Japan
- Prior art keywords
- program
- language
- bytecode
- programming language
- byte code
- 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
- 230000006870 function Effects 0.000 description 13
- 238000011156 evaluation Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 101150026173 ARG2 gene Proteins 0.000 description 2
- 101100005166 Hypocrea virens cpa1 gene Proteins 0.000 description 2
- 101100323865 Xenopus laevis arg1 gene Proteins 0.000 description 2
- 101100379634 Xenopus laevis arg2-b gene Proteins 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、所定のプログラムを実行する電子計算機に関
する。
する。
(従来の技術)
従来の汎用計算機等の電子計算機では、ある言語から、
それとは別のある言語(他言語)で書かhたプログラム
を呼出すときは、各レジスタの使用方法を予め決めてお
いて情報のやり収りをすると同時に、他言語プログラム
のCALL/RETURN時に、情報をレジスタに対し
てセーブ/′ロードすることによって、継続してプログ
ラムを実行することかできる。
それとは別のある言語(他言語)で書かhたプログラム
を呼出すときは、各レジスタの使用方法を予め決めてお
いて情報のやり収りをすると同時に、他言語プログラム
のCALL/RETURN時に、情報をレジスタに対し
てセーブ/′ロードすることによって、継続してプログ
ラムを実行することかできる。
ところで上記従来の電子計算機では、他言語プログラム
のCALLおよびRE T U RN時毎にレジスタに
対してデータのセーブおよびロードを行わなければなら
ない、このため、レジスタに対するデータのセーブおよ
びロードのために時間がかかり、プログラムの実行効率
が低下する(特にハ−ドウエアでレジスタに対するデー
タのセーブおよびロードのサポートか行われないと一層
顕著な差になる)という欠点があった。また?!雑な規
約を守らなければならないということで、プログラムの
バグの発生原因にもなるという欠点があった。
のCALLおよびRE T U RN時毎にレジスタに
対してデータのセーブおよびロードを行わなければなら
ない、このため、レジスタに対するデータのセーブおよ
びロードのために時間がかかり、プログラムの実行効率
が低下する(特にハ−ドウエアでレジスタに対するデー
タのセーブおよびロードのサポートか行われないと一層
顕著な差になる)という欠点があった。また?!雑な規
約を守らなければならないということで、プログラムの
バグの発生原因にもなるという欠点があった。
本発明は上記欠点を解消し、プログラムのバグの発生を
抑制し、プログラムの実行効率を向上させることのでき
る電子計算機を提供することを目的とする。
抑制し、プログラムの実行効率を向上させることのでき
る電子計算機を提供することを目的とする。
以下、本発明に係る電子計′X機の実施例を添1寸図面
を参照して説明する。
を参照して説明する。
第1図は本発明に係る電子計算機の一実施例を示す要部
概略構成図である。同図において、電子計算機は、第1
のプログラム言語に関する領域1と第2のプログラム言
語に関する領域2とを有している。
概略構成図である。同図において、電子計算機は、第1
のプログラム言語に関する領域1と第2のプログラム言
語に関する領域2とを有している。
第1のプログラム言語に関する領域1には、バイトコー
ドコンパイラ−0が設けられており、このバイトコード
コンパイラ−0は、翻訳手段としての機能を果たすもの
であり、バイトコードインタフェース11のような中間
コードを持った第1のグログラム言語をバイトコードオ
ブジェクト12に翻訳する。
ドコンパイラ−0が設けられており、このバイトコード
コンパイラ−0は、翻訳手段としての機能を果たすもの
であり、バイトコードインタフェース11のような中間
コードを持った第1のグログラム言語をバイトコードオ
ブジェクト12に翻訳する。
バイトコードオブジェクト12は、第2図に示すように
、バイトコード12Aの後に、第1の引数12Bおよび
第2の引数12Cの2つまでの弓数を取ることができる
。この引数の数はバイトコードによって決まっている。
、バイトコード12Aの後に、第1の引数12Bおよび
第2の引数12Cの2つまでの弓数を取ることができる
。この引数の数はバイトコードによって決まっている。
ハイドコードインタフェース11には、1也言ス吾の任
意のプログラムを実行するために使用、つまり、第1の
プログラム言語で記述された特定のプログラムと、該特
定のプログラムから呼び出される第2のプログラム言語
で記述された所定のプログラムとのリンゲージに使用さ
れ、上記翻訳されたバイトコードオブジェクト12にお
けるバイトコードの1つである他言語インタフェースバ
イトコードIIAが含まれている。なお、この他言語イ
ンタフェースバイトコードIIAは予め設定される。
意のプログラムを実行するために使用、つまり、第1の
プログラム言語で記述された特定のプログラムと、該特
定のプログラムから呼び出される第2のプログラム言語
で記述された所定のプログラムとのリンゲージに使用さ
れ、上記翻訳されたバイトコードオブジェクト12にお
けるバイトコードの1つである他言語インタフェースバ
イトコードIIAが含まれている。なお、この他言語イ
ンタフェースバイトコードIIAは予め設定される。
また第2のプログラム言語に関する領域2には、バイト
コードインタプリタ20が設けられており、このバイト
コードインタプリタ20は、解釈手段としての機能を果
たすものであり、前記バイトコードコンパイラ10によ
って翻訳された各バイトコードに対応する機械語にディ
スパッチする。
コードインタプリタ20が設けられており、このバイト
コードインタプリタ20は、解釈手段としての機能を果
たすものであり、前記バイトコードコンパイラ10によ
って翻訳された各バイトコードに対応する機械語にディ
スパッチする。
バイトコードインタプリタ20は、呼び出したいプログ
ラム(関数)コード21と、エントリーテーブル22と
、評価スタック23とを有している。
ラム(関数)コード21と、エントリーテーブル22と
、評価スタック23とを有している。
評価スタック23は、第1のプログラム言語の゛引数お
よび第2のプログラム言語のリターンバリューのそれぞ
れの格納エリアを有している。
よび第2のプログラム言語のリターンバリューのそれぞ
れの格納エリアを有している。
上述したバイトコードコンパイラ10は第1のプログラ
ム言語で記述されており、またバイトコードインタプリ
タ20は、第2のプログラム言語で記述されている。
ム言語で記述されており、またバイトコードインタプリ
タ20は、第2のプログラム言語で記述されている。
なお本実施例では、第1のプログラム言語はLTSP言
語に設定されており、また第2のプログラム言語はC言
語に設定されている。
語に設定されており、また第2のプログラム言語はC言
語に設定されている。
次に、LISP言語(第1のプログラム言語)で記述さ
れたプログラムの中で、C言語(第2のプログラム言語
)のプログラム(関数)を呼ぶ場合の処理を説明する。
れたプログラムの中で、C言語(第2のプログラム言語
)のプログラム(関数)を呼ぶ場合の処理を説明する。
最初に、ユーザは、LISP言語がら呼ぶC言語の関数
に番号をつける。なおこの番号はエントリーテーブル2
2の空き番号である。
に番号をつける。なおこの番号はエントリーテーブル2
2の空き番号である。
次にユーザは、前記LISP言語から呼ぶC言語の関数
につけた番号をエントリーテーブル22に登録しくすな
わち、エディダによって、C言語で記述されるエミュレ
ータのソースコード中にあるエントリーテーブルを変更
)、さらに前記エントリーテーブル22および呼出しな
いC言語の関数コード21を含んだ部分のみをRECO
MP ILEする。
につけた番号をエントリーテーブル22に登録しくすな
わち、エディダによって、C言語で記述されるエミュレ
ータのソースコード中にあるエントリーテーブルを変更
)、さらに前記エントリーテーブル22および呼出しな
いC言語の関数コード21を含んだ部分のみをRECO
MP ILEする。
さらにユーザは、LISP言語のソースコードに、次に
示すようなプログラムを記述する。
示すようなプログラムを記述する。
すなわち、
((OPCODES 5UBRCALL xxx3
argl arg2 arg3))・・
・・・・ (1) というプログラムを記述する。
argl arg2 arg3))・・
・・・・ (1) というプログラムを記述する。
ここで、“XXX”はエントリ一番号、”5UBRCA
LL″は他言語インタフェース用バイトコード(他言語
インタフェースバイトコード11A)の名称、“3″は
引数の数、 argl arg2 arg3”は引
数をそれぞれ示している。
LL″は他言語インタフェース用バイトコード(他言語
インタフェースバイトコード11A)の名称、“3″は
引数の数、 argl arg2 arg3”は引
数をそれぞれ示している。
バイトコードコンパイラ10は、上記(1)で示したプ
ログラムを含んだLISP関数をコンパイルし、バイト
コードオブジェクトを作る。
ログラムを含んだLISP関数をコンパイルし、バイト
コードオブジェクトを作る。
このようにして作成されたバイトコードオブジェクトに
対して第1のプログラム言語に関する領域1における図
示しないインタプリタか起動をかけることにより、これ
らのバイトコードが順番に実行される。
対して第1のプログラム言語に関する領域1における図
示しないインタプリタか起動をかけることにより、これ
らのバイトコードが順番に実行される。
そしてバイトコードインタプリタ20は、5UBRCA
LL ((t!!言語インタフェース用バイトコードの
名称)というバイトコードを検出すると、該5UBRC
ALLの第1の引数のエントリ一番号をエントリーテー
ブルからサーチし、前記第1の引数のエントリ一番号に
対応する実行すべきC言語の関数(プログラム)を求め
る。
LL ((t!!言語インタフェース用バイトコードの
名称)というバイトコードを検出すると、該5UBRC
ALLの第1の引数のエントリ一番号をエントリーテー
ブルからサーチし、前記第1の引数のエントリ一番号に
対応する実行すべきC言語の関数(プログラム)を求め
る。
また、バイトコードインタプリタ2oは、前記5UBR
CALLの第2の引数力らLISP関数の引数力数(L
ISP言語の中で言語Bを呼び出したい10グラムの引
き数の数)「3」を求め、引数の先頭アドレスとともに
実行すべきC言語の関数を実行する。
CALLの第2の引数力らLISP関数の引数力数(L
ISP言語の中で言語Bを呼び出したい10グラムの引
き数の数)「3」を求め、引数の先頭アドレスとともに
実行すべきC言語の関数を実行する。
なお、上記(1)て示したプログラムにおけるバイトコ
ード“5UBRCALL”においては、第1の引数は、
×べく”(つまりエントリ一番号)であり、第2の引数
は、“3′′ (つまり引数の数)である。?fって、
バイトコード“5UBRCA L L ”の引数の数は
2つである。
ード“5UBRCALL”においては、第1の引数は、
×べく”(つまりエントリ一番号)であり、第2の引数
は、“3′′ (つまり引数の数)である。?fって、
バイトコード“5UBRCA L L ”の引数の数は
2つである。
さらにバイトコードインタプリタ2oは、前記C言語の
関数を実行した結果返ってきた値を評価スタック23の
先頭にセットし、次のバイトコードの処理に移るに こで5UBRCALLのバイトコードの引数とは、バイ
トコードオブジェクト12の中にあるものであり、評価
スタック23の引数ではない。
関数を実行した結果返ってきた値を評価スタック23の
先頭にセットし、次のバイトコードの処理に移るに こで5UBRCALLのバイトコードの引数とは、バイ
トコードオブジェクト12の中にあるものであり、評価
スタック23の引数ではない。
以上の処理のうち、手動で行うのはエントリーテーブル
の書きかえとLISP関数コードの改述およびそれらの
コンパイルだけである。
の書きかえとLISP関数コードの改述およびそれらの
コンパイルだけである。
なお、上記実施例では、第1のプログラム言語をLIS
P言語とし、第2のプログラム言語をC言語とした場合
の、第1のプログラム言語から第2のプログラム言語を
呼ぶ処理を説明したが、本発明はこれに限定されること
なく、第1のプログラム言語と第2のプログラム言語と
が異なる言語であれば全て適用できる。
P言語とし、第2のプログラム言語をC言語とした場合
の、第1のプログラム言語から第2のプログラム言語を
呼ぶ処理を説明したが、本発明はこれに限定されること
なく、第1のプログラム言語と第2のプログラム言語と
が異なる言語であれば全て適用できる。
この場合、バイトコードコンパイラは第1のプログラム
言語(他言語のプログラムを呼ぼうとする側の言語)で
記述し、またバイトコードインタプリタは第2のプログ
ラム言語(プログラムが呼ばれる側の言語)で記述して
おく必要がある。
言語(他言語のプログラムを呼ぼうとする側の言語)で
記述し、またバイトコードインタプリタは第2のプログ
ラム言語(プログラムが呼ばれる側の言語)で記述して
おく必要がある。
上記実施例によれば、コンパイルされた各バイトコード
(中間コード)のうちの1つのバイトコードを他言語と
のリンゲージに使用したので、従来の如く、他言語プロ
グラムのCALLおよびRETURN時毎にレジスタに
対してデータのセーブおよびロードを行う必要がない。
(中間コード)のうちの1つのバイトコードを他言語と
のリンゲージに使用したので、従来の如く、他言語プロ
グラムのCALLおよびRETURN時毎にレジスタに
対してデータのセーブおよびロードを行う必要がない。
以上説明したように本発明によれば、解釈手段は、翻訳
手段によって翻訳された各バイトコードオブジェクトの
うちの予め設定される少なくとも1つのバイトコードを
検出した際、当該バイトコードを解釈し、該翻訳結果に
基づいて前記他言語で記述された所定のプログラムを呼
び出し実行するようにしたため、従来の如く、他言語プ
ログラムのCALLおよびRETURNETURN時毎
に対してデータのセーブおよびロードを行う必要かない
ので、プログラムのバクの発生を抑制し。
手段によって翻訳された各バイトコードオブジェクトの
うちの予め設定される少なくとも1つのバイトコードを
検出した際、当該バイトコードを解釈し、該翻訳結果に
基づいて前記他言語で記述された所定のプログラムを呼
び出し実行するようにしたため、従来の如く、他言語プ
ログラムのCALLおよびRETURNETURN時毎
に対してデータのセーブおよびロードを行う必要かない
ので、プログラムのバクの発生を抑制し。
プログラムの実行効率を向上させることができる利点が
ある。
ある。
10・・・バイトコードコンパイラ、11・・・バイト
コードインタフェース、20・・・バイトコードインタ
プリタ、22・・・エントリテーブル、23・・・評価
スタック。
コードインタフェース、20・・・バイトコードインタ
プリタ、22・・・エントリテーブル、23・・・評価
スタック。
゛ざ・1堀f1’l1
第1図は本発明に係る電子計算機の一実施例を示す要部
概略構成図、第2図はオブジェクトコードの一例の構成
を示した構成図である。 第2図 第1図
概略構成図、第2図はオブジェクトコードの一例の構成
を示した構成図である。 第2図 第1図
Claims (1)
- 【特許請求の範囲】 第1のプログラム言語で記述されたプログラムから呼び
出されるべく第2のプログラム言語で記述された所定の
プログラムを実行する電子計算機において、 前記第1のプログラム言語で記述されたプログラムをバ
イトコードオブジェクトに翻訳する翻訳手段と、 前記翻訳された各バイトコードオブジェクトを解釈する
とともに、前記各バイトコードのうちの予め設定された
少なくとも1つのバイトコードを検出した際、当該バイ
トコードを解釈し、該解釈結果に基づく呼び出されるべ
く前記第2のプログラム言語で記述された所定のプログ
ラムを呼び出し実行する解釈手段と を具えたことを特徴とする電子計算機。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24768188A JPH0293947A (ja) | 1988-09-30 | 1988-09-30 | 電子計算機 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24768188A JPH0293947A (ja) | 1988-09-30 | 1988-09-30 | 電子計算機 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0293947A true JPH0293947A (ja) | 1990-04-04 |
Family
ID=17167069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP24768188A Pending JPH0293947A (ja) | 1988-09-30 | 1988-09-30 | 電子計算機 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0293947A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010026728A (ja) * | 2008-07-17 | 2010-02-04 | Internatl Business Mach Corp <Ibm> | プログラム変換システム |
-
1988
- 1988-09-30 JP JP24768188A patent/JPH0293947A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010026728A (ja) * | 2008-07-17 | 2010-02-04 | Internatl Business Mach Corp <Ibm> | プログラム変換システム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5586328A (en) | Module dependency based incremental compiler and method | |
US6363522B1 (en) | Method and apparatus for handling exceptions as normal control flow | |
JPH08339304A (ja) | 機械独立コードを含むプラットフォーム標準オブジェクト・ファイルを生成する方法および装置 | |
US7124407B1 (en) | Method and apparatus for caching native code in a virtual machine interpreter | |
KR100577366B1 (ko) | 이종의 자바 메소드를 실행하는 방법 및 장치 | |
US5715458A (en) | Incorporation of services written in one operating system environment into another operating system environment | |
Nelson | A comparison of PASCAL intermediate languages | |
JPH06110703A (ja) | コンパイル方法 | |
US6427231B1 (en) | System and method for multiple entry point access to an object | |
US20060253271A1 (en) | Method for facilitating transformation of multi-threaded process-oriented object code to event-based object code | |
US5293630A (en) | Method of returning a data structure from a callee function to a caller function for the C programming language | |
US6275985B1 (en) | Method and apparatus for developing an application that implements garbage collection efficiently by combining proxy objects with compiler support | |
JP2919302B2 (ja) | Cpuシミュレーション方法 | |
JPH0293947A (ja) | 電子計算機 | |
Chu | Direct-execution computer architecture | |
Pichler et al. | Hybrid Execution: Combining Ahead-of-Time and Just-in-Time Compilation | |
CN114489683B (zh) | 一种类java语言基于JVM的函数式编程语法实现方法 | |
JPH11212807A (ja) | プログラム実行方法 | |
JP3424596B2 (ja) | シンボル参照情報のキャッシュ方法ならびに装置 | |
JPH0520093A (ja) | モジユールのコンパイル方法およびコンパイル装置 | |
JPH0588934A (ja) | デバツグ方式 | |
JPS6338729B2 (ja) | ||
JPH0128414B2 (ja) | ||
JP2601541B2 (ja) | Fortran入出力並び処理方式 | |
Mealy | Some threads in the development of early operating systems |