JP2958386B2 - 計算機システム - Google Patents

計算機システム

Info

Publication number
JP2958386B2
JP2958386B2 JP24768288A JP24768288A JP2958386B2 JP 2958386 B2 JP2958386 B2 JP 2958386B2 JP 24768288 A JP24768288 A JP 24768288A JP 24768288 A JP24768288 A JP 24768288A JP 2958386 B2 JP2958386 B2 JP 2958386B2
Authority
JP
Japan
Prior art keywords
program
language
bytecode
computer system
converted
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.)
Expired - Fee Related
Application number
JP24768288A
Other languages
English (en)
Other versions
JPH0293948A (ja
Inventor
直人 佐藤
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 JP24768288A priority Critical patent/JP2958386B2/ja
Publication of JPH0293948A publication Critical patent/JPH0293948A/ja
Application granted granted Critical
Publication of JP2958386B2 publication Critical patent/JP2958386B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は他言語で記述されたプログラムをエミュレー
トして実行する計算機システムに関する。
〔従来の技術〕
従来、マイクロマシン上で動作するプログラム言語
(例えば、LISP言語やSMALLTALK言語)は、通常様々な
プログラム言語で記述されるプログラムをコンパクトな
オブジェクトサイズで実行させるためにマイクロで実現
された中間コードインタフェース(例えば、Dマシンの
バイトコードインタフェース)を持っている。
これらのプログラム言語で記述されたプログラムを汎
用マシン(計算機)上で動かそうとしたときの1手法と
して、上記中間コードインタフェースをエミュレートす
る方法が実現されている。
〔発明が解決しようとする課題〕 ところで、上記従来の汎用マシン(計算機)では、マ
イクロマシン上においてマイクロ(ハード、ウェア)で
中間コードを翻訳していたことを、ソフトウェアで翻訳
しなければならず、プログラムの実行速度が遅いという
欠点があった。
本発明は上記欠点を解消し、プログラムの実行速度を
向上させることのできる計算機システムを提供すること
を目的とする。
〔課題を解決するための手段および作用〕
本発明は、仮想マシン上で実行可能な中間コードから
なるプログラムをコンパイラ言語のプログラムに変換す
る際に、該中間コードのプログラムに内在する特定の複
数命令列からなる中間コードのまとまりを前記コンパイ
ラ言語の特定の1ステートメントに変換する変換手段
と、前記変換手段が変換したコンパイラ言語のプログラ
ムをコンパイルし、ネイティブコードに変換するコンパ
イル手段とを具備したことを特徴とする。
また、本発明は、前記コンパイル手段がコンパイルし
たネイティブコードを実行する実行手段をさらに具備し
たことを特徴とする。
〔実施例〕
以下、本発明に係る計算機システムの実施例を添付図
面を参照して説明する。
第1図は本発明に係る計算機システムの一実施例を示
す概略構成図である。同図において、計算機システム
は、バイトコードエミュレータ1とホストコンパイラ2
とを有する計算機3と、ファイル4とを有している。
バイトコードエミュレータ1は、前記計算機3用の言
語(第1のプログラム言語)とは異なる言語(第2のプ
ログラム言語)で記述されている中間コード(以下、バ
イトコードという)オブジェクトプログラムを自己の内
部形式(自己の計算機用の高級言語)に変換するトラン
スレータ11と、ネイティブコードをファイルに保存した
り実行するためにロードするローダ12と、バイトコード
オブジェクトプログラム13Aおよびファイル4からロー
ドされたネイティブコード13Bを記憶するメモリ13とを
有している。
ホストコンパイラ2は、トランスレータ11によって内
部形式に変換されたバイトコードオブジェクトをコンパ
イルしてネイティブコードを生成するものであり、ファ
イル4は生成されたネイティブコードを格納する。
なお、本実施例では、変換手段は、ホストコンパイラ
2とトランスレータ11とを有して構成されている。ま
た、計算機システムは、第1のプログラム言語(例え
ば、C言語)で記述されたプログラムを実行する汎用マ
シンであるワークステーションに設定している。
次に、上記計算機システムが、マイクロマシンである
Dマシンが実行する第2のプログラム言語(例えば、LI
SP言語)で記述されたプログラムをC言語に変換して実
行する動作を具体的に説明する。
上記図示しないDマシンは、第2図に示すBYTECODE S
EQUENCE欄に示すようなバイトコードインタフェースを
持っている。
バイトコードエミュレータ1は、C言語で記述され、
計算機3の1プロセス上で実行される。その計算機3の
プロセスには、LISP空間もシュミレートされ、そのLISP
空間にバイトコードオブジェクトが存在している。
トランスレータ11は、メモリ13に記憶されているバイ
トコードオブジェクト(中間コードオブジェクト)13A
をサーチし、該サーチした複数のバイトコードオブジェ
クトからなる有意のバイトコード列(中間コード列)、
つまりある意味を持ったまとまりのバイトコード列を見
つけると、該バイトコード列を実行効率の良い内部形
式、この場合はC言語に置き換える。
ここで、LISP言語におけるベンチマーク関数(TAK)
のC言語への変換の一列を示したプログラム例を第3図
に示している。
なお、第2図に示したTAK(LISP言語におけるベンチ
マーク関数)のプログラム例では、例えば、IVARX_のバ
イトコードとPOPのバイトコードとがまとまって、IVAR
[2]=POPのように、実行効率の良いCコード列にな
っている。すなわち、IVARX_のバイトコードとPOPのバ
イトコードとの2つのバイトコードで、“2番目の引数
にスタックから値を積みなさい”という意味で、それを
バイトコードエミュレータ1の中で効率良く実現すると
IVARX_=POPのような書き方になる。
このようなトランスレータ11は、バイトコード列のあ
る意味を持ったまとまりと、それに対応するC言語のイ
ンストラクションを用意しておき、前記バイトコード列
(IVAR[2]=POP)を、一旦、計算機3用の内部形式
(C言語)に変換した後、ホストコンパイラ2でコンパ
イルしてネイティブコードオブジェクトを作成する。
ネイティブコードオブジェクトは、LISP空間でも、こ
のプロセス内の他の空間でも良いが、ネイティブに変換
したい関数のエントリを、内部形式(C言語)に変更す
る必要がある。またネイティブコードオブジェクトのフ
ァイルへのセーブおよびロードも基本的にC言語の入出
力関数で行い、LISP関数エントリーの変更は、上記同様
に、内部形式(C言語)に変更する必要がある。
なお、上述したようなトランスレータ11がないと、IV
ARX_のバイトコードとPOPのバイトコードとがそれぞれ
エミュレートされ、エミュレートされたそれぞれの値が
一度スタッフに積まれてから、そのスタッフに積まれた
値を取ってきて引数領域へ格納するという2度手間にな
ってしまう。
上記実施例によれば、有意のバイトコード列(中間コ
ード列)を、内部形式に変換し、該変換された有意のバ
イトコード列をコンパイルして、ネイティブコードを生
成するようにしたので、プログラムの実行の際には、実
行効率の良いネイティブコードを実行すれば良いことと
なり、プログラムの実行速度の向上を図ることができ
る。
〔発明の効果〕
以上説明したように、仮想マシンで実行可能な中間コ
ードからなるプログラムをコンパイラ言語のプログラム
に変換する際に、該中間コードのプログラムに内在する
特定の複数命令列からなる中間コードのまとまりをコン
パイラ言語の特定の1ステートメントに変換し、変換し
たコンパイラ言語のプログラムをコンパイルし、ネイテ
ィブコードに変換するよう構成したので、仮想マシン上
で実行可能な中間コードからなるプログラムを効率良く
ネイティブコードに変換することができる。
【図面の簡単な説明】
第1図は本発明に係る計算機システムの一実施例を示す
概略構成図、第2図はバイトコードインタフェースのプ
ログラムの一例を示す図、第3図はトランスレータの内
部形式への変換を示すプログラムの一例を示す図であ
る。 1……バイトコードエミュレータ、2……ホストコンパ
イラ、3……計算機、4……ファイル、11……トランス
レータ、12……ローダ、13……メモリ。
フロントページの続き (56)参考文献 「ACM SIGPLAN Noti ce」Vol.22,No.10(1987− 10)p.112−116 「Conf.rec.of Annu al ACM Symposium o n Principles of Pr ogramming Languag e」Vol.11,(1983)p.297−302 「情報処理」Vol.29,No.4 (1988−4)p.352−358 (58)調査した分野(Int.Cl.6,DB名) G06F 9/44

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】仮想マシン上で実行可能な中間コードから
    なるプログラムをコンパイラ言語のプログラムに変換す
    る際に、該中間コードのプログラムに内在する特定の複
    数命令列からなる中間コードのまとまりを前記コンパイ
    ラ言語の特定の1ステートメントに変換する変換手段
    と、 前記変換手段が変換したコンパイラ言語のプログラムを
    コンパイルし、ネイティブコードに変換するコンパイル
    手段と を具備したことを特徴とする計算機システム。
  2. 【請求項2】前記コンパイル手段がコンパイルしたネイ
    ティブコードを実行する実行手段をさらに具備したこと
    を特徴とする請求項(1)記載の計算機システム。
JP24768288A 1988-09-30 1988-09-30 計算機システム Expired - Fee Related JP2958386B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP24768288A JP2958386B2 (ja) 1988-09-30 1988-09-30 計算機システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24768288A JP2958386B2 (ja) 1988-09-30 1988-09-30 計算機システム

Publications (2)

Publication Number Publication Date
JPH0293948A JPH0293948A (ja) 1990-04-04
JP2958386B2 true JP2958386B2 (ja) 1999-10-06

Family

ID=17167082

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24768288A Expired - Fee Related JP2958386B2 (ja) 1988-09-30 1988-09-30 計算機システム

Country Status (1)

Country Link
JP (1) JP2958386B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69942011D1 (de) * 1998-10-10 2010-03-25 Ibm Programmkodekonvertierung mit verringerter Übersetzung
US20120155267A1 (en) 2010-12-16 2012-06-21 International Business Machines Corporation Selection of receive-queue based on packet attributes

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
「ACM SIGPLAN Notice」Vol.22,No.10(1987−10)p.112−116
「Conf.rec.of Annual ACM Symposium on Principles of Programming Language」Vol.11,(1983)p.297−302
「情報処理」Vol.29,No.4(1988−4)p.352−358

Also Published As

Publication number Publication date
JPH0293948A (ja) 1990-04-04

Similar Documents

Publication Publication Date Title
US5586328A (en) Module dependency based incremental compiler and method
AU774467B2 (en) Automatic stub/adapter generator
EP0911726B1 (en) Mixed execution stack and exception handling
US6247172B1 (en) Method for a translation system that aggressively optimizes and preserves full synchronous exception state
US5884083A (en) Computer system to compile non-incremental computer source code to execute within an incremental type computer system
US6851109B1 (en) Process and system for dynamically compiling a partially interpreted method
US20070033572A1 (en) Method, apparatus, and computer program product for adaptively generating code for a computer program
US8196120B2 (en) Computer emulator employing direct execution of compiled functions
JPH0731604B2 (ja) 目標コンピュータ・システム、異なるコンピュータ・システム間でプログラムを実行する方法
JPH0731605B2 (ja) コンピュータ・プログラムの第一バージョン処理方法
Bowen et al. The design and implementation of a high-speed incremental portable Prolog compiler
JPS63201834A (ja) オブジエクト・モジユール生成方法
JPH11327916A (ja) コンパイル済コ―ドにおけるダイナミッククラス初期化チェックのコスト低減技術
EP3350696A1 (en) Overriding a migrated method of an updated type
US20040083467A1 (en) System and method for executing intermediate code
US20230057055A1 (en) Modeling foreign functions using executable references
JP2958386B2 (ja) 計算機システム
US20030154467A1 (en) Preprocessing of interfaces to allow fast call through
Wakeling Compiling lazy functional programs for the Java Virtual Machine
US11875168B2 (en) Optimizing execution of foreign method handles on a virtual machine
Sondahl et al. Breeding faster turtles: Progress towards a NetLogo compiler
Rogers et al. JikesNODE and PearColator: A Jikes RVM operating system and legacy code execution environment
Bushell et al. Using C as a compiler target language for native code generation in persistent systems
Bloss Language processors
JP3424596B2 (ja) シンボル参照情報のキャッシュ方法ならびに装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees