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
Application number
JP24768188A
Other languages
English (en)
Inventor
Naoto Sato
直人 佐藤
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox 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 Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP24768188A priority Critical patent/JPH0293947A/ja
Publication of JPH0293947A publication Critical patent/JPH0293947A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、所定のプログラムを実行する電子計算機に関
する。
(従来の技術) 従来の汎用計算機等の電子計算機では、ある言語から、
それとは別のある言語(他言語)で書かhたプログラム
を呼出すときは、各レジスタの使用方法を予め決めてお
いて情報のやり収りをすると同時に、他言語プログラム
のCALL/RETURN時に、情報をレジスタに対し
てセーブ/′ロードすることによって、継続してプログ
ラムを実行することかできる。
〔発明か解決しようとする課題〕
ところで上記従来の電子計算機では、他言語プログラム
のCALLおよびRE T U RN時毎にレジスタに
対してデータのセーブおよびロードを行わなければなら
ない、このため、レジスタに対するデータのセーブおよ
びロードのために時間がかかり、プログラムの実行効率
が低下する(特にハ−ドウエアでレジスタに対するデー
タのセーブおよびロードのサポートか行われないと一層
顕著な差になる)という欠点があった。また?!雑な規
約を守らなければならないということで、プログラムの
バグの発生原因にもなるという欠点があった。
本発明は上記欠点を解消し、プログラムのバグの発生を
抑制し、プログラムの実行効率を向上させることのでき
る電子計算機を提供することを目的とする。
〔実施例〕
以下、本発明に係る電子計′X機の実施例を添1寸図面
を参照して説明する。
第1図は本発明に係る電子計算機の一実施例を示す要部
概略構成図である。同図において、電子計算機は、第1
のプログラム言語に関する領域1と第2のプログラム言
語に関する領域2とを有している。
第1のプログラム言語に関する領域1には、バイトコー
ドコンパイラ−0が設けられており、このバイトコード
コンパイラ−0は、翻訳手段としての機能を果たすもの
であり、バイトコードインタフェース11のような中間
コードを持った第1のグログラム言語をバイトコードオ
ブジェクト12に翻訳する。
バイトコードオブジェクト12は、第2図に示すように
、バイトコード12Aの後に、第1の引数12Bおよび
第2の引数12Cの2つまでの弓数を取ることができる
。この引数の数はバイトコードによって決まっている。
ハイドコードインタフェース11には、1也言ス吾の任
意のプログラムを実行するために使用、つまり、第1の
プログラム言語で記述された特定のプログラムと、該特
定のプログラムから呼び出される第2のプログラム言語
で記述された所定のプログラムとのリンゲージに使用さ
れ、上記翻訳されたバイトコードオブジェクト12にお
けるバイトコードの1つである他言語インタフェースバ
イトコードIIAが含まれている。なお、この他言語イ
ンタフェースバイトコードIIAは予め設定される。
また第2のプログラム言語に関する領域2には、バイト
コードインタプリタ20が設けられており、このバイト
コードインタプリタ20は、解釈手段としての機能を果
たすものであり、前記バイトコードコンパイラ10によ
って翻訳された各バイトコードに対応する機械語にディ
スパッチする。
バイトコードインタプリタ20は、呼び出したいプログ
ラム(関数)コード21と、エントリーテーブル22と
、評価スタック23とを有している。
評価スタック23は、第1のプログラム言語の゛引数お
よび第2のプログラム言語のリターンバリューのそれぞ
れの格納エリアを有している。
上述したバイトコードコンパイラ10は第1のプログラ
ム言語で記述されており、またバイトコードインタプリ
タ20は、第2のプログラム言語で記述されている。
なお本実施例では、第1のプログラム言語はLTSP言
語に設定されており、また第2のプログラム言語はC言
語に設定されている。
次に、LISP言語(第1のプログラム言語)で記述さ
れたプログラムの中で、C言語(第2のプログラム言語
)のプログラム(関数)を呼ぶ場合の処理を説明する。
最初に、ユーザは、LISP言語がら呼ぶC言語の関数
に番号をつける。なおこの番号はエントリーテーブル2
2の空き番号である。
次にユーザは、前記LISP言語から呼ぶC言語の関数
につけた番号をエントリーテーブル22に登録しくすな
わち、エディダによって、C言語で記述されるエミュレ
ータのソースコード中にあるエントリーテーブルを変更
)、さらに前記エントリーテーブル22および呼出しな
いC言語の関数コード21を含んだ部分のみをRECO
MP ILEする。
さらにユーザは、LISP言語のソースコードに、次に
示すようなプログラムを記述する。
すなわち、 ((OPCODES  5UBRCALL  xxx3
   argl   arg2   arg3))・・
・・・・ (1) というプログラムを記述する。
ここで、“XXX”はエントリ一番号、”5UBRCA
LL″は他言語インタフェース用バイトコード(他言語
インタフェースバイトコード11A)の名称、“3″は
引数の数、 argl  arg2  arg3”は引
数をそれぞれ示している。
バイトコードコンパイラ10は、上記(1)で示したプ
ログラムを含んだLISP関数をコンパイルし、バイト
コードオブジェクトを作る。
このようにして作成されたバイトコードオブジェクトに
対して第1のプログラム言語に関する領域1における図
示しないインタプリタか起動をかけることにより、これ
らのバイトコードが順番に実行される。
そしてバイトコードインタプリタ20は、5UBRCA
LL ((t!!言語インタフェース用バイトコードの
名称)というバイトコードを検出すると、該5UBRC
ALLの第1の引数のエントリ一番号をエントリーテー
ブルからサーチし、前記第1の引数のエントリ一番号に
対応する実行すべきC言語の関数(プログラム)を求め
る。
また、バイトコードインタプリタ2oは、前記5UBR
CALLの第2の引数力らLISP関数の引数力数(L
ISP言語の中で言語Bを呼び出したい10グラムの引
き数の数)「3」を求め、引数の先頭アドレスとともに
実行すべきC言語の関数を実行する。
なお、上記(1)て示したプログラムにおけるバイトコ
ード“5UBRCALL”においては、第1の引数は、
×べく”(つまりエントリ一番号)であり、第2の引数
は、“3′′ (つまり引数の数)である。?fって、
バイトコード“5UBRCA L L ”の引数の数は
2つである。
さらにバイトコードインタプリタ2oは、前記C言語の
関数を実行した結果返ってきた値を評価スタック23の
先頭にセットし、次のバイトコードの処理に移るに こで5UBRCALLのバイトコードの引数とは、バイ
トコードオブジェクト12の中にあるものであり、評価
スタック23の引数ではない。
以上の処理のうち、手動で行うのはエントリーテーブル
の書きかえとLISP関数コードの改述およびそれらの
コンパイルだけである。
なお、上記実施例では、第1のプログラム言語をLIS
P言語とし、第2のプログラム言語をC言語とした場合
の、第1のプログラム言語から第2のプログラム言語を
呼ぶ処理を説明したが、本発明はこれに限定されること
なく、第1のプログラム言語と第2のプログラム言語と
が異なる言語であれば全て適用できる。
この場合、バイトコードコンパイラは第1のプログラム
言語(他言語のプログラムを呼ぼうとする側の言語)で
記述し、またバイトコードインタプリタは第2のプログ
ラム言語(プログラムが呼ばれる側の言語)で記述して
おく必要がある。
上記実施例によれば、コンパイルされた各バイトコード
(中間コード)のうちの1つのバイトコードを他言語と
のリンゲージに使用したので、従来の如く、他言語プロ
グラムのCALLおよびRETURN時毎にレジスタに
対してデータのセーブおよびロードを行う必要がない。
〔発明の効果〕
以上説明したように本発明によれば、解釈手段は、翻訳
手段によって翻訳された各バイトコードオブジェクトの
うちの予め設定される少なくとも1つのバイトコードを
検出した際、当該バイトコードを解釈し、該翻訳結果に
基づいて前記他言語で記述された所定のプログラムを呼
び出し実行するようにしたため、従来の如く、他言語プ
ログラムのCALLおよびRETURNETURN時毎
に対してデータのセーブおよびロードを行う必要かない
ので、プログラムのバクの発生を抑制し。
プログラムの実行効率を向上させることができる利点が
ある。
10・・・バイトコードコンパイラ、11・・・バイト
コードインタフェース、20・・・バイトコードインタ
プリタ、22・・・エントリテーブル、23・・・評価
スタック。
゛ざ・1堀f1’l1
【図面の簡単な説明】
第1図は本発明に係る電子計算機の一実施例を示す要部
概略構成図、第2図はオブジェクトコードの一例の構成
を示した構成図である。 第2図 第1図

Claims (1)

  1. 【特許請求の範囲】 第1のプログラム言語で記述されたプログラムから呼び
    出されるべく第2のプログラム言語で記述された所定の
    プログラムを実行する電子計算機において、 前記第1のプログラム言語で記述されたプログラムをバ
    イトコードオブジェクトに翻訳する翻訳手段と、 前記翻訳された各バイトコードオブジェクトを解釈する
    とともに、前記各バイトコードのうちの予め設定された
    少なくとも1つのバイトコードを検出した際、当該バイ
    トコードを解釈し、該解釈結果に基づく呼び出されるべ
    く前記第2のプログラム言語で記述された所定のプログ
    ラムを呼び出し実行する解釈手段と を具えたことを特徴とする電子計算機。
JP24768188A 1988-09-30 1988-09-30 電子計算機 Pending JPH0293947A (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010026728A (ja) * 2008-07-17 2010-02-04 Internatl Business Mach Corp <Ibm> プログラム変換システム

Cited By (1)

* Cited by examiner, † Cited by third party
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