JPS5922143A - 高速インタプリタ方式 - Google Patents
高速インタプリタ方式Info
- Publication number
- JPS5922143A JPS5922143A JP13038782A JP13038782A JPS5922143A JP S5922143 A JPS5922143 A JP S5922143A JP 13038782 A JP13038782 A JP 13038782A JP 13038782 A JP13038782 A JP 13038782A JP S5922143 A JPS5922143 A JP S5922143A
- Authority
- JP
- Japan
- Prior art keywords
- operator
- code
- address
- interpreter
- internal 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
本発明は、ソースプログラムを内部コードに変換し、そ
の解釈・実行をする計算機において、特に高速実行をは
かるだめの高速インタプリタ方式%式% この種の計算機におけるインタプリタ方式は、一般にソ
ースプログラムを大体そのままの形で内部コード化し、
インタプリタ動作時(例えば、中火処理装置がインタプ
リタプログラムを実行する時。以下同じ。)に当該内部
コードの構文解釈をするようにしていた。
の解釈・実行をする計算機において、特に高速実行をは
かるだめの高速インタプリタ方式%式% この種の計算機におけるインタプリタ方式は、一般にソ
ースプログラムを大体そのままの形で内部コード化し、
インタプリタ動作時(例えば、中火処理装置がインタプ
リタプログラムを実行する時。以下同じ。)に当該内部
コードの構文解釈をするようにしていた。
したがって、高級言語を使用して対話型でプログシム開
発等をすることができるという長所を有していた。
発等をすることができるという長所を有していた。
しかじから、その内部コードの解釈・処理が当該実行時
のオーバヘッドとなり、例えばコンパイラによって生成
される機械語を実行する方式(コンパイラ方式)に比べ
、その実行速度が大幅に(3桁程度)遅いという問題が
あった。
のオーバヘッドとなり、例えばコンパイラによって生成
される機械語を実行する方式(コンパイラ方式)に比べ
、その実行速度が大幅に(3桁程度)遅いという問題が
あった。
本発明の目的は、上記した従来技術の欠点をなりシ、高
級言語を対話形で使用しうるという長所を保持したまま
、実行速度を大幅に向上することができる高速インタプ
リタ方式を提供することにある。
級言語を対話形で使用しうるという長所を保持したまま
、実行速度を大幅に向上することができる高速インタプ
リタ方式を提供することにある。
本発明に係る高速インタプリタ方式の構成は、ソースプ
ログラムを内部コードに変換するだめのトランスレータ
と、その内部コードの解釈・実行をするためのインタプ
リタとを備え、当該プログラムの実行・処理を行う機能
を有する計算機において、ソースプログラムの構文解釈
をし、当該オペレータ・オペランドの各組を実行順に所
定の内部コードに展開・変換し、そのオペレータコード
をオペレータ処理プログラムの当該アドレス値そのもの
とし、または所定の対応をさせてバッファリングをして
おくことにより、インタプリタ動作時に当該オペレータ
コードを取シ出して当アドレスヘノジャンプをするのみ
で当該オペレータ処理プログラムを実行しつるようにし
たものである。
ログラムを内部コードに変換するだめのトランスレータ
と、その内部コードの解釈・実行をするためのインタプ
リタとを備え、当該プログラムの実行・処理を行う機能
を有する計算機において、ソースプログラムの構文解釈
をし、当該オペレータ・オペランドの各組を実行順に所
定の内部コードに展開・変換し、そのオペレータコード
をオペレータ処理プログラムの当該アドレス値そのもの
とし、または所定の対応をさせてバッファリングをして
おくことにより、インタプリタ動作時に当該オペレータ
コードを取シ出して当アドレスヘノジャンプをするのみ
で当該オペレータ処理プログラムを実行しつるようにし
たものである。
なお、オペレータコードをオペレータ処理プログラムの
当該アドレス値と所定の対応をさせてバッファリングを
する場合、その対応を示すアドレステーブルをインタプ
リタ内に有するようにするものである。
当該アドレス値と所定の対応をさせてバッファリングを
する場合、その対応を示すアドレステーブルをインタプ
リタ内に有するようにするものである。
また、内部コードのバッファリングのアドレスをポスト
インクリメント間接修飾機能のポインタレジスタに保持
し、その内容の取出しごとに上記アドレス更新を自動的
に行いつるようにもしたものである。
インクリメント間接修飾機能のポインタレジスタに保持
し、その内容の取出しごとに上記アドレス更新を自動的
に行いつるようにもしたものである。
以下、本発明の実施例を図に基づいて説明する。
第1図は、本発明に係る高速インタプリ方式の一実施例
の方式構成図、第2図は、その内部コード実行状態図、
第3図は、同内部コード解釈・実行機構図である。
の方式構成図、第2図は、その内部コード実行状態図、
第3図は、同内部コード解釈・実行機構図である。
ここで、■は、ソースプログラムの構文解釈をして後述
する所定の内部コードへの変換を行うトランスレータ、
2ば、上記内部コードのバッファリングを行う内部コー
ドバッファ、3は、内部コードバッファ2から内部コー
ドを取り出し、その解釈・実行をするインタプリタ、4
は、中央処理装ff (CPU )、4 aは、そのポ
インタレジスタ、4bは、同オペレータコードレジスタ
である。
する所定の内部コードへの変換を行うトランスレータ、
2ば、上記内部コードのバッファリングを行う内部コー
ドバッファ、3は、内部コードバッファ2から内部コー
ドを取り出し、その解釈・実行をするインタプリタ、4
は、中央処理装ff (CPU )、4 aは、そのポ
インタレジスタ、4bは、同オペレータコードレジスタ
である。
まず、ソースプログラムは、それが例えば第2図(a)
に示すような演算式A、 = B 十Cであると、第2
図(b)に示すように、トランスレータ1によって実行
順に5個の各内部コード要素゛ロードA″。
に示すような演算式A、 = B 十Cであると、第2
図(b)に示すように、トランスレータ1によって実行
順に5個の各内部コード要素゛ロードA″。
′″ゞゞフリジユロシトB′ブツシュロードC”。
II 、 II 、 tt =″に展開された内部コ
ードに変換される。なお、実際には各変数欄において当
該データは後述のアドレスを表示している。
ードに変換される。なお、実際には各変数欄において当
該データは後述のアドレスを表示している。
ここで、”ロード″、′ブツシュロードは、変数名(上
記例ではA、B、C)というオペランドを有するオペレ
ータであり、また、”十’″。
記例ではA、B、C)というオペランドを有するオペレ
ータであり、また、”十’″。
−″は、オペランドを有しないオペレータである。
また、この内部コードの実行方法は、第2図(C)に示
すように、まず、゛ロードA ″でCPU4の演算レジ
タに変数Aのアドレスを入れ、゛ブツシュロードB I
Iで当該内容(変数Aのアドレス)をスタックにつめて
変数Bの値を上記演算レジスタに入れ、次いで、″ブツ
シュロードC″で当該内容(変数Bの値)をスタックに
つめて変数Cの値を上記演算レジスタに入れ、更に I
I +11でスタックされている変数Bの値を取り出し
て演算レジスタに加え(変数Cの値に変数Bの値を加算
してB+Cの値を求め)、最後に II = jlで当
該加算結果を当該スタックの内容が示すアドレス(変数
Aのアドレス)へ格納するというようになる。
すように、まず、゛ロードA ″でCPU4の演算レジ
タに変数Aのアドレスを入れ、゛ブツシュロードB I
Iで当該内容(変数Aのアドレス)をスタックにつめて
変数Bの値を上記演算レジスタに入れ、次いで、″ブツ
シュロードC″で当該内容(変数Bの値)をスタックに
つめて変数Cの値を上記演算レジスタに入れ、更に I
I +11でスタックされている変数Bの値を取り出し
て演算レジスタに加え(変数Cの値に変数Bの値を加算
してB+Cの値を求め)、最後に II = jlで当
該加算結果を当該スタックの内容が示すアドレス(変数
Aのアドレス)へ格納するというようになる。
次に、内部コードのオペレータを解釈し、当該オペレー
タ処理プログラムの実行について説明する。
タ処理プログラムの実行について説明する。
内部コードは、前述のようにトランスレータ1によって
ソースプログラムから変換された後、内部コードバッフ
ァ2に格納されている。
ソースプログラムから変換された後、内部コードバッフ
ァ2に格納されている。
CPU4のポインタレジスタ4aは、処理中の内部コー
ドのアドレスを保持しておき、同オペレータコードレジ
スタ41)は、ポインタレジスタ4aを使用して取り出
したオペレータコードを保持しておくようにする。
ドのアドレスを保持しておき、同オペレータコードレジ
スタ41)は、ポインタレジスタ4aを使用して取り出
したオペレータコードを保持しておくようにする。
しだがって、例えば、第3図に示すように、ポインタレ
ジスタ4aが内部コードバッファ2のアドレス≠102
(”ブツシュロート″のオペレータコード1toO)を
指しているとすると、そのオペレータコード1100が
オペレータコードレジスタ4bに取シ込まれる。
ジスタ4aが内部コードバッファ2のアドレス≠102
(”ブツシュロート″のオペレータコード1toO)を
指しているとすると、そのオペレータコード1100が
オペレータコードレジスタ4bに取シ込まれる。
ここで、ポインタレジスタ4aは、ポストインクリメン
ト間接修飾機能により、その内容が自動的に更新され、
当該オペランドである変数Bの一アドレス≠103を指
すようになる。
ト間接修飾機能により、その内容が自動的に更新され、
当該オペランドである変数Bの一アドレス≠103を指
すようになる。
インタプリータ3において、オペレータ処理プログラム
は、オペレータコードレジスタ41)の値が指示するア
ドレス≠1100ヘジャンプする。
は、オペレータコードレジスタ41)の値が指示するア
ドレス≠1100ヘジャンプする。
これを先頭アドレスとして当該プツンユロード演算処理
が第2図で説明したように実行され、次のオペレータ(
アドレス+104)の解釈をし、その部分へジャンプが
行われる。
が第2図で説明したように実行され、次のオペレータ(
アドレス+104)の解釈をし、その部分へジャンプが
行われる。
すなわち、そのオペレータが再び゛ブツシュロード″で
同一のオペレータコード1100であるので、再び上述
と同様にオペレータ処理プロゲラ中のアドレス+110
0を先頭とするブツシュロード演算処理が実行される。
同一のオペレータコード1100であるので、再び上述
と同様にオペレータ処理プロゲラ中のアドレス+110
0を先頭とするブツシュロード演算処理が実行される。
その次のオペレータは、アドレス≠105のtt+y+
で、そのコードが1200であるので、インタプリータ
3において、そのオペレータ処理プログラムは、アドレ
ス≠1200から始まる十演算処理ヘジャンプする。
で、そのコードが1200であるので、インタプリータ
3において、そのオペレータ処理プログラムは、アドレ
ス≠1200から始まる十演算処理ヘジャンプする。
このように、各オペレータ処理部の最後は、ポインタレ
ジスタ4a、オペレータコードレジスタ41)を操作し
て次のオペレータ処理部ヘンヤンプする命令となってお
り、内部コードバッファ2中のオペレータの出現順に各
オペレータ処理部間を遷移することによシ、内部コード
の解釈・実行をすることができる。
ジスタ4a、オペレータコードレジスタ41)を操作し
て次のオペレータ処理部ヘンヤンプする命令となってお
り、内部コードバッファ2中のオペレータの出現順に各
オペレータ処理部間を遷移することによシ、内部コード
の解釈・実行をすることができる。
第4図は、本発明に係る高速インタプリタ方式の他の実
施例の内部コード解釈・実行機構図であって、その方式
構成図、内部コード実行状態図は、前述の第1図、第2
図をそのまま用いることができる。
施例の内部コード解釈・実行機構図であって、その方式
構成図、内部コード実行状態図は、前述の第1図、第2
図をそのまま用いることができる。
この実施例においては、インタプリタ3中にオペレータ
処理プログラムの各処理部の先頭アドレスとオペレータ
コードとの対応を示すアドレステーブルが設けられてお
り、そのアドレス(例えば、ナ10.20,30.40
)が内部コードにおける各オペレータコード(例えば、
10,20゜30.40)となっている。
処理プログラムの各処理部の先頭アドレスとオペレータ
コードとの対応を示すアドレステーブルが設けられてお
り、そのアドレス(例えば、ナ10.20,30.40
)が内部コードにおける各オペレータコード(例えば、
10,20゜30.40)となっている。
したがって、オペレータコードレジスタ4bの内容は、
凸該オペレータ処理部の先頭アドレスが格納されている
アドレステーブルのアドレスを指すことになる。
凸該オペレータ処理部の先頭アドレスが格納されている
アドレステーブルのアドレスを指すことになる。
すなわち、オペレータ処理プログラムは、このアドレス
テーブルの内容を取り出して当該アドレスへジャンプを
し、前述と同様に実行される。
テーブルの内容を取り出して当該アドレスへジャンプを
し、前述と同様に実行される。
この実施例においては、オペレータコードがオペレータ
処理プログラムの先頭アドレスと直接に対応していない
ので、同プログラムのアドレスが変更されても、その都
度オペレータコードまで変更する必要がなく、上記アド
レステーブルの書替えだけで済むという利点がある。
処理プログラムの先頭アドレスと直接に対応していない
ので、同プログラムのアドレスが変更されても、その都
度オペレータコードまで変更する必要がなく、上記アド
レステーブルの書替えだけで済むという利点がある。
以上、いずれの実施例においても、ソースプログラムか
ら変換して得た内部コードをオペレータ・オペランドの
組に展開して内部コード解釈・実行時の負荷を軽減し、
また、オペレータコードをオペレータ処理プログラムの
当該先頭アドレスに対応させて同プログラムのジャンプ
を容易化しているので、インタプリタの実行速度を大幅
に向上することができる。ちなみに、例えばCPUとし
て汎用の16ビツトのマイクロプロセッサを使用した場
合、整数演算が数マイクロ秒程度となシ、従来方式と比
べると同−CPUで約1桁程度の高速化が得られる。
ら変換して得た内部コードをオペレータ・オペランドの
組に展開して内部コード解釈・実行時の負荷を軽減し、
また、オペレータコードをオペレータ処理プログラムの
当該先頭アドレスに対応させて同プログラムのジャンプ
を容易化しているので、インタプリタの実行速度を大幅
に向上することができる。ちなみに、例えばCPUとし
て汎用の16ビツトのマイクロプロセッサを使用した場
合、整数演算が数マイクロ秒程度となシ、従来方式と比
べると同−CPUで約1桁程度の高速化が得られる。
以上、詳細に説明したように、本発明によれば、高級言
語を対活形で使用し、実行速度を大幅に向上することが
できるので、この種の計算機が使用されるシステムの効
率向上、経済化、サービス性向上等に顕著な効果が得ら
れる。
語を対活形で使用し、実行速度を大幅に向上することが
できるので、この種の計算機が使用されるシステムの効
率向上、経済化、サービス性向上等に顕著な効果が得ら
れる。
第1図は、本発明に係る高速インタプリタ方式の一実施
例の方式構成図、第2図は、その内部コード実行状態図
、第3図は、同内部コード解釈・実行機構図、第4図は
、本発明に係る高速インタプリタ方式の他の実施例の内
部コード解釈・実行機構図である。 1・・・トランスレータ、2・・・内部コードバッファ
、3・・・インタプリタ、4・・・CPU0代理人 弁
理士 福田幸作 (ほか1名) 岸I 固 芽2 目 (沈) A=F3fC <b) (C) ゛ロート′ハ“フ′/シO−F’S”’7;LユローF
どパす″ −″、#3 図
例の方式構成図、第2図は、その内部コード実行状態図
、第3図は、同内部コード解釈・実行機構図、第4図は
、本発明に係る高速インタプリタ方式の他の実施例の内
部コード解釈・実行機構図である。 1・・・トランスレータ、2・・・内部コードバッファ
、3・・・インタプリタ、4・・・CPU0代理人 弁
理士 福田幸作 (ほか1名) 岸I 固 芽2 目 (沈) A=F3fC <b) (C) ゛ロート′ハ“フ′/シO−F’S”’7;LユローF
どパす″ −″、#3 図
Claims (1)
- 【特許請求の範囲】 1、ソースプログラムを内部コード罠変換するだめのト
ランスレータと、その内部コードの解釈・実行をするだ
めのインタプリタとを備え、当該プログラムの実行・処
理を行う機能を有する計算機において、ソースプログラ
ムの構文解釈をし、当該オペレータ・オペランドの各組
を実行順に所定の内部コードに展開・変換し、そのオペ
レータコードをオペレータ処理プログラムの当該アドレ
ス値そのものとし、または所定の対応をさせてバッファ
リングをしておくことにより、インタプリタ動作時に当
該オペレータコードを取り出して該当アドレスへのジャ
ンプをするのみで当該オペレータ処理プログラムを実行
しうるようにすることを特徴とする高速インタプリタ方
式。 2、特許請求の範囲第1項記載のものにおいて、オペレ
ータコードとオペレータ処理プログラムにおける当該ア
ドレスとの対応を示すアドレステーブルをインタプリタ
内に有するようにした高速インタプリタ方式。 3、特許請求の範囲第1項寸たは第2項記載のものにお
いて、内部コードのバッファリングのアドレスをポスト
インクリメント間接修飾機能のポインタレジスタに保持
し、その内容の取出しごとに上記アドレス更新を自動的
に行いうるようにした高速インタプリタ方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP13038782A JPS5922143A (ja) | 1982-07-28 | 1982-07-28 | 高速インタプリタ方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP13038782A JPS5922143A (ja) | 1982-07-28 | 1982-07-28 | 高速インタプリタ方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPS5922143A true JPS5922143A (ja) | 1984-02-04 |
Family
ID=15033102
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP13038782A Pending JPS5922143A (ja) | 1982-07-28 | 1982-07-28 | 高速インタプリタ方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS5922143A (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6433633A (en) * | 1987-07-30 | 1989-02-03 | Mitsubishi Electric Corp | Programmable controller |
| JPH01134551A (ja) * | 1987-11-20 | 1989-05-26 | Nec Corp | データ通信端末装置 |
| EP0388077A3 (en) * | 1989-03-15 | 1993-10-13 | Texas Instruments Incorporated | Method of optimizing the execution speed of an interpreted test language |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5412532A (en) * | 1977-06-29 | 1979-01-30 | Sharp Corp | Interpreter system of program computer |
-
1982
- 1982-07-28 JP JP13038782A patent/JPS5922143A/ja active Pending
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5412532A (en) * | 1977-06-29 | 1979-01-30 | Sharp Corp | Interpreter system of program computer |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS6433633A (en) * | 1987-07-30 | 1989-02-03 | Mitsubishi Electric Corp | Programmable controller |
| JPH01134551A (ja) * | 1987-11-20 | 1989-05-26 | Nec Corp | データ通信端末装置 |
| EP0388077A3 (en) * | 1989-03-15 | 1993-10-13 | Texas Instruments Incorporated | Method of optimizing the execution speed of an interpreted test language |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8020154B2 (en) | Precise handling of exceptions during program code conversion | |
| JP3193650B2 (ja) | オペレーティング・システムに影響を与えないエミュレーション・コンテキストの保管と復元を行う方法およびシステム | |
| US8214815B2 (en) | Reducing the run-time cost of invoking a server page | |
| JPH0769833B2 (ja) | 多言語最適化コンパイラ内のシンボル テーブル構成用インタフェイス | |
| JPH056894B2 (ja) | ||
| US6467037B1 (en) | Utilizing a program counter with one or more data counters for executing instructions | |
| JPS5922143A (ja) | 高速インタプリタ方式 | |
| EP1875339A2 (en) | Method and apparatus for precise handling of exceptions during program code conversion | |
| JP2000122876A (ja) | 情報処理装置 | |
| Steinbusch | Designing Hardware to Interpret Virtual Machine Instructions | |
| JPH06266553A (ja) | 計算機システム | |
| JP3330767B2 (ja) | 情報処理装置および情報処理装置におけるトレース取得方法 | |
| TW480445B (en) | Method for downloading application programs on the compiler system platform of an electronic communication device | |
| JPS5829051A (ja) | 演算処理装置 | |
| JPH05250150A (ja) | シーケンス制御装置 | |
| JPS63186333A (ja) | 局所的分岐命令に対する命令のスケジユ−リング処理方式 | |
| JPS6275734A (ja) | エミユレ−シヨン方式 | |
| JPH02263240A (ja) | 字句解析方式 | |
| JP2003216443A (ja) | 中間コード実行装置および方法 | |
| JPH08115221A (ja) | Cコンパイラ | |
| JPS5493942A (en) | High-level language program executing unit | |
| JP2007265319A (ja) | データ処理方法および装置 | |
| JPH04153741A (ja) | 被デバッグプログラムのデバッグにおける逆方向実行方式 | |
| JPH04266126A (ja) | サブルーチンコール制御方式 | |
| JPS62212734A (ja) | 中間コ−ドプログラムの実行方式 |