JP2002312177A - インタプリタ高速実行装置及びそれに用いるインタプリタ高速実行方法 - Google Patents

インタプリタ高速実行装置及びそれに用いるインタプリタ高速実行方法

Info

Publication number
JP2002312177A
JP2002312177A JP2001118975A JP2001118975A JP2002312177A JP 2002312177 A JP2002312177 A JP 2002312177A JP 2001118975 A JP2001118975 A JP 2001118975A JP 2001118975 A JP2001118975 A JP 2001118975A JP 2002312177 A JP2002312177 A JP 2002312177A
Authority
JP
Japan
Prior art keywords
instruction code
interpreter
instruction
processing
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
JP2001118975A
Other languages
English (en)
Inventor
Tomohisa Tanaka
友久 田中
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2001118975A priority Critical patent/JP2002312177A/ja
Publication of JP2002312177A publication Critical patent/JP2002312177A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 繰り返しを含むような命令列を実行するイン
タプリタの処理速度を向上させ、事前に全命令列を走査
することなくインタプリタを実行可能なインタプリタ高
速実行装置を提供する。 【解決手段】 インタプリタが命令列10を順に実行す
るインタプリタ高速実行装置1では、ポインタ11が指
す命令コードを処理するラベルに分岐し、該命令コード
の処理において、該命令コードに本来定義されている処
理を実行後、インタプリタに戻る前に次の命令を調べ
る。インタプリタ高速実行装置は次の命令が該命令コー
ドに連続して処理可能な命令コードの場合、該命令コー
ドに本来定義されている処理とそれに連続する命令コー
ドに定義されている処理とを連続して実行したのと同じ
意味の処理を実行する命令コードを新規に導入し、該命
令コードを新規に導入した命令コードで書換える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はインタプリタ高速実
行装置及びそれに用いるインタプリタ高速実行方法に関
し、特に特定の位置にある命令を繰り返し実行するイン
タプリタを高速に実行する方法に関する。
【0002】
【従来の技術】インタプリタ言語は処理速度が遅いた
め、それを改善するために様々な工夫がなされている。
その改善のための最も効果的な方法としては、インタプ
リタが実行する命令列の一部または全部を、その処理系
の機械語に翻訳(変換)してから実行するものがある。
【0003】
【発明が解決しようとする課題】しかしながら、上述し
た従来のインタプリタ言語実行方法では、インタプリタ
が実行する命令列の一部または全部を、その処理系の機
械語に翻訳(変換)してから実行する方法の場合、一般
的に、機械語への翻訳に時間がかかるため、実行しよう
としている命令列の処理を即座に開始することができな
いという問題がある。
【0004】また、上記の方法の場合には、一般的に、
機械語への翻訳により多くの記憶領域を作業用に必要と
するため、組み込み機器等の記憶領域の少ない処理系で
は利用することができないという問題がある。
【0005】そこで、本発明の目的は上記の問題点を解
消し、繰り返しを含むような命令列を実行するインタプ
リタの処理速度を向上させることができ、事前に全命令
列を走査することなくインタプリタを実行することがで
きるインタプリタ高速実行装置及びそれに用いるインタ
プリタ高速実行方法を提供することにある。
【0006】
【課題を解決するための手段】本発明によるインタプリ
タ高速実行装置は、インタプリタが複数の命令コードか
らなる命令列を順に実行するインタプリタ高速実行装置
であって、現在実行中の第1の命令コードに本来定義さ
れている処理を実行した後に次の命令コードが前記第1
の命令コードに連続して処理可能な第2の命令コードか
否かを判定する手段と、前記連続して処理可能な命令コ
ードと判定された時に前記第1の命令コードに本来定義
されている処理と前記第2の命令コードに定義されてい
る処理とを連続して実行したのと同じ意味の処理を示す
第3の命令コードに前記第1の命令コードを書換える手
段と、前記連続して処理可能な命令コードと判定された
時に前記第1の命令コードに本来定義されている処理だ
けを実行する処理を示す第4の命令コードに前記第1の
命令コードを書換える手段とを備えている。
【0007】本発明によるインタプリタ高速実行方法
は、インタプリタが複数の命令コードからなる命令列を
順に実行するインタプリタ高速実行方法であって、現在
実行中の第1の命令コードに本来定義されている処理を
実行した後に次の命令コードが前記第1の命令コードに
連続して処理可能な第2の命令コードか否かを判定する
ステップと、前記連続して処理可能な命令コードと判定
された時に前記第1の命令コードに本来定義されている
処理と前記第2の命令コードに定義されている処理とを
連続して実行したのと同じ意味の処理を示す第3の命令
コードに前記第1の命令コードを書換えるステップと、
前記連続して処理可能な命令コードと判定された時に前
記第1の命令コードに本来定義されている処理だけを実
行する処理を示す第4の命令コードに前記第1の命令コ
ードを書換えるステップとを備えている。
【0008】すなわち、本発明のインタプリタ高速実行
装置は、特定の位置にある命令を繰り返し実行するイン
タプリタを高速に実行するための構成を提供するもので
ある。
【0009】より具体的に説明すると、本発明のインタ
プリタ高速実行装置は、インタプリタが命令列を順に実
行する処理系において、現在実行中の命令の位置を指す
ポインタが命令コードAを指した場合、命令コードAを
処理するラベルに分岐する。命令コードAの処理におい
て、命令コードAに本来定義されている処理を実行後、
インタプリタに戻る前に次の命令を調べ、それが命令コ
ードAに連続して処理可能な命令コードBの場合、新規
に命令コードAB を導入し、現在実行中の命令コードA
を命令コードAB で書換えてから、ポインタを命令コー
ドAを構成する長さだけ進め、インタプリタに戻る。
【0010】そうではなく、次の命令が命令コードAに
連続して処理可能でない場合、新規に命令コードA0
導入し、現在実行中の命令コードAを命令コードA0
書換えてから、ポインタを命令コードAを構成する長さ
だけ進め、インタプリタに戻る。
【0011】インタプリタが実行中に、ポインタが前回
書換えた命令コードAB を指した場合、命令コードAB
を処理するラベルに分岐する。命令コードAB の処理で
は命令コードAに本来定義されている処理と命令コード
Bに定義されている処理とを連続して実行したのと同じ
意味の処理を実行後、ポインタを命令コードAを構成す
る長さと命令コードBを構成する長さとの和だけ進め、
インタプリタに戻る。
【0012】また、インタプリタが実行中に、ポインタ
が前回書換えた命令コードA0 を指した場合、命令コー
ドA0 を処理するラベルに分岐する。命令コードA0
処理では命令コードAに本来定義されている処理を実行
後、ポインタを命令コードAを構成する長さだけ進め、
インタプリタに戻る。
【0013】上記のような実行方法を用いることによっ
て、インタプリタの動作開始前(初期状態)において、
命令コードBが任意の分岐命令の分岐先になっており、
かつその命令コードBの前の命令が命令コードAであっ
たとしても、命令コードA,Bがその順で連続する場
合、命令列のセマンティクスを変更することなく、その
命令コードAをより高速の命令コードAB に書換えるこ
とが可能になる。
【0014】また、上記の実行方法では、処理を定義す
ることができれば、何命令分の処理でも1命令に置換え
ることが可能である。例えば、命令コードA,B,Cを
連続的に処理したのと同じ意味をもつ命令コードABC
定義することができれば、命令コードA,B,Cがその
順で連続する場合、その命令コードAを命令コードA BC
で書換えることができる。
【0015】さらに、上記の実行方法では、インタプリ
タの実行開始前に命令列を走査、置換する等の前準備が
必要ないので、インタプリタの実行によって即時に命令
列の解釈を始めることが可能である。ある特定の位置に
ある命令コードAは一度実行すると、上記の判定結果に
したがって命令コードA0 または命令コードAB のどち
らかに書換えられるが、判定に要する処理は一度だけで
あり、その特定の位置にある命令コードAが繰り返し実
行される場合には上記の判定に要する処理時間はほぼ無
視することが可能であり、特に命令コードAB に書換え
られた場合には繰り返し処理をより高速に実行すること
が可能となる。このようにして、特定の位置にある命令
を繰り返し実行するようなインタプリタの実行速度を向
上させることが可能となる。
【0016】
【発明の実施の形態】次に、本発明の一実施例について
図面を参照して説明する。図1は本発明の一実施例によ
るインタプリタ高速実行装置の構成を示す図である。図
1において、インタプリタ高速実行装置1はインタプリ
タ(図示せず)が実行する命令列10と、インタプリタ
が現在実行している位置を示すポインタ(IP)11
と、命令列10中の命令コードにそれぞれ対応する処理
を定義したサブルーチン21〜2nからなるサブルーチ
ン群2と、命令列10中の命令コードとサブルーチン群
2との対応関係を記述したテーブル3とから構成されて
いる。
【0017】図1に示すように、インタプリタが命令列
10を順に実行するインタプリタ高速実行装置1におい
ては、現在実行中の命令の位置を指すポインタ11が命
令コードAを指した場合、命令コードAを処理するラベ
ルに分岐する。
【0018】インタプリタ高速実行装置1は命令コード
Aの処理において、命令コードAに本来定義されている
処理を実行後、インタプリタに戻る前に次の命令を調
べ、それが命令コードAに連続して処理可能な命令コー
ドBの場合、新規に命令コードAB を導入し、現在実行
中の命令コードAを命令コードAB で書換えてから、ポ
インタ11を命令コードAを構成する長さだけ進め、イ
ンタプリタに戻る。
【0019】これに対し、次の命令が命令コードAに連
続して処理可能でない場合、インタプリタ高速実行装置
1は新規に命令コードA0 を導入し、現在実行中の命令
コードAを命令コードA0 で書換えてから、ポインタ1
1を命令コードAを構成する長さだけ進め、インタプリ
タに戻る。
【0020】インタプリタ高速実行装置1はインタプリ
タが実行中に、ポインタ11が前回書換えた命令コード
B を指した場合、命令コードAB を処理するラベルに
分岐する。命令コードAB の処理では命令コードAに本
来定義されている処理と命令コードBに定義されている
処理とを連続して実行したのと同じ意味の処理を実行
後、ポインタ11を命令コードAを構成する長さと命令
コードBを構成する長さとの和だけ進め、インタプリタ
に戻る。
【0021】また、インタプリタ高速実行装置1はイン
タプリタが実行中に、ポインタ11が前回書換えた命令
コードA0 を指した場合、命令コードA0 を処理するラ
ベルに分岐する。命令コードA0 の処理では命令コード
Aに本来定義されている処理を実行後、ポインタ11を
命令コードAを構成する長さだけ進め、インタプリタに
戻る。
【0022】上記のような実行方法を用いることによっ
て、インタプリタの動作開始前(初期状態)において、
命令コードBが任意の分岐命令の分岐先になっており、
かつその命令コードBの前の命令が命令コードAであっ
たとしても、命令コードA,Bがその順で連続する場
合、命令列10のセマンティクスを変更することなく、
その命令コードAをより高速の命令コードAB に書換え
ることができる。
【0023】また、上記の実行方法では、処理を定義す
ることができれば、何命令分の処理でも1命令に置換え
ることが可能である。例えば、命令コードA,B,Cを
連続的に処理したのと同じ意味をもつ命令コードABC
定義することができれば、命令コードA,B,Cがその
順で連続する場合、その命令コードAを命令コードA BC
で書換えることができる。
【0024】さらに、上記の実行方法では、インタプリ
タの実行開始前に命令列10を走査、置換する等の前準
備が必要ないので、インタプリタの実行によって即時に
命令列10の解釈を始めることが可能である。ある特定
の位置にある命令コードAは一度実行すると、上記の判
定結果にしたがって命令コードA0 または命令コードA
B のどちらかに書換えられるが、判定に要する処理は一
度だけであり、その特定の位置にある命令コードAが繰
り返し実行される場合には上記の判定に要する処理時間
はほぼ無視することができ、特に命令コードAB に書換
えられた場合には繰り返し処理をより高速に実行するこ
とができる。このようにして、特定の位置にある命令を
繰り返し実行するようなインタプリタの実行速度を向上
させることができる。
【0025】図2〜図4は本発明の一実施例によるイン
タプリタ高速実行装置の動作を示すフローチャートであ
る。これら図1〜図4を参照して本発明の一実施例によ
るインタプリタ高速実行装置全体の動作について説明す
る。
【0026】インタプリタ高速実行装置1はインタプリ
タがポインタ11の示す命令列10中の命令コードを取
出し、テーブル3を使用してその命令コードの処理を実
行するサブルーチンをサブルーチン群2の中から決定
し、そのサブルーチンを呼び出す(図2ステップS
1)。
【0027】次に、インタプリタ高速実行装置1は選択
されたサブルーチンが、直後にまとめて処理できる可能
性のある複数の命令が続く命令コードに対応するサブル
ーチンの場合(図3ステップS11)、その命令コード
に定義されている本来の処理を実行してから(図3ステ
ップS12)、命令列10とポインタ11とからその命
令コードの直後に続く命令コードを参照し、まとめて処
理することができる命令コードかどうかを判定する(図
3ステップS13)。
【0028】インタプリタ高速実行装置1は連続処理可
能であれば、その命令コードをその連続処理に対応する
命令コードに書換える(図3ステップS14)。また、
インタプリタ高速実行装置1は連続処理可能でなけれ
ば、その命令コードをその命令コードに定義されている
本来の処理だけを実行する命令コードに書換える(図3
ステップS16)。上記のどちらの場合も、インタプリ
タ高速実行装置1は書換えた後にサブルーチンの呼び出
し元に戻る(図3ステップS15)。
【0029】さらに、インタプリタ高速実行装置1は選
択されたサブルーチンが、直後にまとめて処理できる可
能性のある複数の命令が続かない命令コードに対応する
サブルーチンの場合(図4ステップS21)、その命令
コードに定義されている処理を実行し(図4ステップS
22)、最後にサブルーチンの呼び出し元に戻る(図4
ステップS23)。
【0030】このように、複数の命令コードを一度に処
理することによって、1命令ずつ処理した時に必要とな
る処理の中間結果の保存(スタック等へのメモリアクセ
ス)がなくなり、ポインタ11の指す命令コードからテ
ーブル3を用いて対応するサブルーチンを決定する回数
が減るので、繰り返しを含むような命令列を実行するイ
ンタプリタの処理速度を向上させることができる。
【0031】また、一度に処理する命令列の先頭の命令
コードだけを書換えるので、命令列10中の任意の位置
にある分岐命令の分岐先が、一度に処理する命令列の途
中の命令であっても、処理内容に変わりがないため、事
前に全命令列を走査することなくインタプリタを実行す
ることができる。
【0032】本発明では選択されたサブルーチンが、直
後にまとめて処理できる可能性のある複数の命令が続く
命令コードか否かを判定するための処理時間を必要とす
るが、通常、インタプリタが解釈する命令列(アプリケ
ーションプログラム)の全実行時間のほとんどは繰り返
し処理の実行時間が占める傾向にあるので、上述したよ
うな連続処理に対応する命令コードの書換えによって、
判定に要する時間を加えてもそれ以上に繰り返し処理の
高速化を図ることができる。
【0033】
【発明の効果】以上説明したように本発明によれば、イ
ンタプリタが複数の命令コードからなる命令列を順に実
行する際に、現在実行中の第1の命令コードに本来定義
されている処理を実行した後に次の命令コードが第1の
命令コードに連続して処理可能な第2の命令コードと判
定された時、第1の命令コードに本来定義されている処
理と第2の命令コードに定義されている処理とを連続し
て実行したのと同じ意味の処理を示す第3の命令コード
に第1の命令コードを書換えることによって、繰り返し
を含むような命令列を実行するインタプリタの処理速度
を向上させることができ、事前に全命令列を走査するこ
となくインタプリタを実行することができるという効果
がある。
【図面の簡単な説明】
【図1】本発明の一実施例によるインタプリタ高速実行
装置の構成を示す図である。
【図2】本発明の一実施例によるインタプリタ高速実行
装置の動作を示すフローチャートである。
【図3】本発明の一実施例によるインタプリタ高速実行
装置の動作を示すフローチャートである。
【図4】本発明の一実施例によるインタプリタ高速実行
装置の動作を示すフローチャートである。
【符号の説明】
1 インタプリタ高速実行装置 2 サブルーチン群 3 テーブル 10 命令列 11 ポインタ 21〜2n サブルーチン

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 インタプリタが複数の命令コードからな
    る命令列を順に実行するインタプリタ高速実行装置であ
    って、現在実行中の第1の命令コードに本来定義されて
    いる処理を実行した後に次の命令コードが前記第1の命
    令コードに連続して処理可能な第2の命令コードか否か
    を判定する手段と、前記連続して処理可能な命令コード
    と判定された時に前記第1の命令コードに本来定義され
    ている処理と前記第2の命令コードに定義されている処
    理とを連続して実行したのと同じ意味の処理を示す第3
    の命令コードに前記第1の命令コードを書換える手段
    と、前記連続して処理不能な命令コードと判定された時
    に前記第1の命令コードに本来定義されている処理だけ
    を実行する処理を示す第4の命令コードに前記第1の命
    令コードを書換える手段とを有することを特徴とするイ
    ンタプリタ高速実行装置。
  2. 【請求項2】 前記第2の命令コードか否かを判定する
    手段は、前記第1の命令コードの実行後に前記インタプ
    リタに戻る前に前記次の命令コードを調べるようにした
    ことを特徴とする請求項1記載のインタプリタ高速実行
    装置。
  3. 【請求項3】 前記第3の命令コードの実行した時、現
    在実行中の命令コードの位置を指すポインタを前記第1
    の命令コードを構成する長さと前記第2の命令コードを
    構成する長さとの和だけ進めるようにしたことを特徴と
    する請求項1または請求項2記載のインタプリタ高速実
    行装置。
  4. 【請求項4】 インタプリタが複数の命令コードからな
    る命令列を順に実行するインタプリタ高速実行方法であ
    って、現在実行中の第1の命令コードに本来定義されて
    いる処理を実行した後に次の命令コードが前記第1の命
    令コードに連続して処理可能な第2の命令コードか否か
    を判定するステップと、前記連続して処理可能な命令コ
    ードと判定された時に前記第1の命令コードに本来定義
    されている処理と前記第2の命令コードに定義されてい
    る処理とを連続して実行したのと同じ意味の処理を示す
    第3の命令コードに前記第1の命令コードを書換えるス
    テップと、前記連続して処理不能な命令コードと判定さ
    れた時に前記第1の命令コードに本来定義されている処
    理だけを実行する処理を示す第4の命令コードに前記第
    1の命令コードを書換えるステップとを有することを特
    徴とするインタプリタ高速実行方法。
  5. 【請求項5】 前記第2の命令コードか否かを判定する
    ステップは、前記第1の命令コードの実行後に前記イン
    タプリタに戻る前に前記次の命令コードを調べるように
    したことを特徴とする請求項4記載のインタプリタ高速
    実行方法。
  6. 【請求項6】 前記第3の命令コードの実行した時、現
    在実行中の命令コードの位置を指すポインタを前記第1
    の命令コードを構成する長さと前記第2の命令コードを
    構成する長さとの和だけ進めるようにしたことを特徴と
    する請求項4または請求項5記載のインタプリタ高速実
    行方法。
JP2001118975A 2001-04-18 2001-04-18 インタプリタ高速実行装置及びそれに用いるインタプリタ高速実行方法 Pending JP2002312177A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001118975A JP2002312177A (ja) 2001-04-18 2001-04-18 インタプリタ高速実行装置及びそれに用いるインタプリタ高速実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001118975A JP2002312177A (ja) 2001-04-18 2001-04-18 インタプリタ高速実行装置及びそれに用いるインタプリタ高速実行方法

Publications (1)

Publication Number Publication Date
JP2002312177A true JP2002312177A (ja) 2002-10-25

Family

ID=18969269

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001118975A Pending JP2002312177A (ja) 2001-04-18 2001-04-18 インタプリタ高速実行装置及びそれに用いるインタプリタ高速実行方法

Country Status (1)

Country Link
JP (1) JP2002312177A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016151914A (ja) * 2015-02-18 2016-08-22 大日本印刷株式会社 電子情報記憶媒体、アプリケーション置換方法、及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016151914A (ja) * 2015-02-18 2016-08-22 大日本印刷株式会社 電子情報記憶媒体、アプリケーション置換方法、及びプログラム

Similar Documents

Publication Publication Date Title
USRE33706E (en) Table driven translator
RU2002129004A (ru) Запоминание операндов стека в регистре
US5119495A (en) Minimizing hardware pipeline breaks using software scheduling techniques during compilation
RU2003112679A (ru) Аппаратная трансляция команд внутри процессорного конвейера
US20080301653A1 (en) Method and apparatus for increasing task-execution speed
JP2002312177A (ja) インタプリタ高速実行装置及びそれに用いるインタプリタ高速実行方法
US6292866B1 (en) Processor
KR100301391B1 (ko) 서브루틴분기명령실행방법및그장치
JP2529429B2 (ja) プログラマブルコントロ―ラ
JP2002041310A (ja) クラス動的バインドシステムおよび方法
JPH1124940A (ja) エミュレーション処理方式
JPH07248923A (ja) コンパイラ
JP2853647B2 (ja) デバッガ付きインタプリタへの機能付加方式
JP2501394B2 (ja) 手続き呼び出し翻訳装置
KR950007937B1 (ko) 피엘씨 게이트 어레이의 내부 레지스터 운용회로
WO2010121770A2 (en) Execution process for a programme by a virtual machine, virtual machine code and associated device
JPH0922307A (ja) シーケンサ
JPH05189242A (ja) パーサ自動生成方法
JPS61131124A (ja) 会話入力処理方式
JPS62204340A (ja) デ−タ処理装置
JPH03257628A (ja) 分岐命令処理装置
JPH05150999A (ja) コンピユータ言語の構造化処理方式
JPH0784795A (ja) インタプリタ実行方法
JPH05165640A (ja) マイクロプロセッサ
JPH0566949A (ja) 関数定義コンパイルドコード呼出し方式

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050801

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050816

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060110