JPH06309175A - Program execution system for interpreter - Google Patents
Program execution system for interpreterInfo
- Publication number
- JPH06309175A JPH06309175A JP10066893A JP10066893A JPH06309175A JP H06309175 A JPH06309175 A JP H06309175A JP 10066893 A JP10066893 A JP 10066893A JP 10066893 A JP10066893 A JP 10066893A JP H06309175 A JPH06309175 A JP H06309175A
- Authority
- JP
- Japan
- Prior art keywords
- program
- intermediate language
- language program
- pointer
- interpreter
- 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.)
- Withdrawn
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
Description
【0001】[0001]
【産業上の利用分野】本発明はインタプリタのプログラ
ム実行方式に関する。近年,コンピュータシステムの普
及に伴い,エンドユーザによるプログラミングの要求が
高まっている。そのため,いくつかのエンドユーザ向け
プログラミング言語,例えばマクロ言語やスクリプト言
語等が提供されている。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to an interpreter program execution system. In recent years, with the spread of computer systems, the demand for programming by end users is increasing. Therefore, some programming languages for end users, such as macro languages and script languages, are provided.
【0002】このようなエンドユーザによるプログラミ
ングは,書いては実行し,間違っていたら修正してまた
実行するというように,試行錯誤的に行う場合が多い。
そのため,プログラマ向けプログラミング言語のように
コンパイル,リンク,実行というステップを経て実行す
る方式ではなく,インタプリタにより直接解釈実行させ
る方法が適している。また,作成したプログラムは,そ
のまま運用時にも使用されるため,実行性能も優れてい
る必要がある。In many cases, such programming by the end user is performed by trial and error, such as writing and executing, and correcting and executing again if incorrect.
Therefore, instead of the method of executing through the steps of compiling, linking, and executing like the programming language for programmers, the method of interpreting and executing directly by an interpreter is suitable. In addition, since the created program is used as it is during operation, it must have excellent execution performance.
【0003】[0003]
【従来の技術】従来のインタプリタには次のような方法
がある。 原始言語プログラムを直接解釈実行する方法。2. Description of the Related Art The conventional interpreter has the following methods. A method of directly interpreting and executing a source language program.
【0004】原始言語プログラムをコンパイルして中
間言語プログラムを生成した後,中間言語プログラムを
解釈実行する方法。 上記の方法は毎回,原始言語プログラムを読み込み,
それを解釈しながら実行を行い,の方法では,コンパ
イラで中間言語プログラムを生成した後,それを実行す
る。A method of compiling a source language program to generate an intermediate language program, and then interpreting and executing the intermediate language program. Each time the above method loads a source language program,
In the method, the program is executed while interpreting it, and in the method, the compiler generates an intermediate language program and then executes it.
【0005】[0005]
【発明が解決しようとする課題】上記のの方法によれ
ば,毎回原始言語プログラムを解釈しながら実行を行う
ので,原始言語プログラムの量が小さい場合は問題ない
が,大きい量の場合はその中にループがあると同一のコ
ードについても同様の解釈をそのつど実行する必要があ
るため実行速度が遅いという問題があった。また,の
方法によれば,中間言語プログラム(コンパイラ)が存
在しない(実行時に用意されていない)場合には,一
旦,コンパイルしなければならず実行開始までに時間が
かかるという問題があった。According to the above method, since the source language program is executed while interpreting it every time, there is no problem when the amount of source language program is small, but there is no problem when the amount is large. When there is a loop in, there is a problem that the execution speed is slow because it is necessary to execute the same interpretation for the same code each time. Further, according to the method (1), if the intermediate language program (compiler) does not exist (is not prepared at the time of execution), it has to be compiled once, and it takes time to start the execution.
【0006】本発明は,原始言語プログラムをコンパイ
ルして中間言語プログラムを生成した後,中間言語プロ
グラムを解釈実行する方法において,中間言語プログラ
ムが存在しない場合に実行開始までの時間を短縮するこ
とを目的とする。According to the present invention, in a method of compiling a source language program to generate an intermediate language program and then interpreting and executing the intermediate language program, it is possible to shorten the time until the start of execution when the intermediate language program does not exist. To aim.
【0007】[0007]
【課題を解決するための手段】図1は本発明の原理説明
図である。図1において,1は情報処理装置のインタプ
リタ部,2は原始言語プログラムが格納された原始言語
プログラム格納部,3はコンパイルされた結果の中間言
語プログラムを格納する中間言語プログラム格納部であ
る。FIG. 1 is a diagram for explaining the principle of the present invention. In FIG. 1, 1 is an interpreter unit of the information processing apparatus, 2 is a source language program storage unit in which a source language program is stored, and 3 is an intermediate language program storage unit in which an intermediate language program as a result of compilation is stored.
【0008】インタプリタ部1において,10はコンパ
イル手段,11はインタプリタ手段,12は原始言語プ
ログラム格納部内のどこまでコンパイル(解釈)が行わ
れたかのプログラム位置を示す第1のポインタ,13は
どこまで中間言語プログラムを作成したかを表す第2の
ポインタ,14はインタプリタ手段で解釈実行中の命令
を示すプログラムカウンタ(PC),15は比較手段,
16はポインタ更新手段,17はプログラムカウンタ
(PC)更新手段である。In the interpreter unit 1, 10 is a compiling unit, 11 is an interpreter unit, 12 is a first pointer indicating a program position in the source language program storage unit, and 13 is an intermediate language program. Is a second pointer indicating whether or not is created, 14 is a program counter (PC) indicating an instruction being interpreted and executed by the interpreter means, 15 is a comparing means,
Reference numeral 16 is a pointer updating means, and 17 is a program counter (PC) updating means.
【0009】本発明はコンパイル済のプログラムをポイ
ンタにより管理し,実行しようとする中間言語プログラ
ムがコンパイル済であるか否かをポインタを用いて判別
することにより中間言語プログラムが存在しない場合は
直ちにコンパイルを行って実行するものである。According to the present invention, a compiled program is managed by a pointer, and whether or not the intermediate language program to be executed has been compiled is determined by using the pointer. When the intermediate language program does not exist, the program is immediately compiled. Is to go and execute.
【0010】[0010]
【作用】図1において,インタプリタ部1の第1のポイ
ンタ12はコンパイル手段10により現在までに原始言
語プログラム格納部2上のどの位置まで読み込んでコン
パイル(解釈)したかを表すポインタ値を保持する。ま
た,第2のポインタ13はコンパイル手段10により現
在までに作成された中間言語プログラム格納部3上の位
置を保持する。また,プログラムカウンタ(PC)14
は,現在までにインタプリタ手段11により実行された
中間言語プログラム格納部3の位置を保持する。In FIG. 1, the first pointer 12 of the interpreter unit 1 holds a pointer value indicating to what position on the source language program storage unit 2 has been read and compiled (interpreted) by the compiling means 10 so far. . The second pointer 13 holds the position on the intermediate language program storage unit 3 created by the compiling means 10 up to the present. In addition, the program counter (PC) 14
Holds the position of the intermediate language program storage unit 3 executed by the interpreter means 11 up to the present.
【0011】インタプリタ部1は最初に比較手段15に
よりプログラムカウンタ14の値と第2のポインタ13
の値を比較する。この比較によりプログラムカウンタ1
4の値が第2のポインタ13の値より大きい場合は,コ
ンパイル手段10を呼び出す。In the interpreter unit 1, first, the value of the program counter 14 and the second pointer 13 by the comparison unit 15 are compared.
Compare the values of. By this comparison, the program counter 1
When the value of 4 is larger than the value of the second pointer 13, the compiling means 10 is called.
【0012】コンパイル手段10は,第1のポインタ1
2が示す原始言語プログラム格納部2の原始言語プログ
ラムを取り出して解析して中間言語プログラムを作成し
て中間言語プログラム格納部3に格納する。この中間言
語の作成の後,ポインタ更新手段16が駆動され第1の
ポインタ12と第2のポインタ13を更新する。この更
新後に比較手段15による比較結果が,依然としてプロ
グラムカウンタ14の値の方が大きい場合は,続けてコ
ンパイル手段10が呼び出されて同様の動作を行う。The compiling means 10 includes a first pointer 1
The source language program indicated by 2 is extracted from the source language program storage unit 2 and analyzed to create an intermediate language program, which is stored in the intermediate language program storage unit 3. After the intermediate language is created, the pointer updating means 16 is driven to update the first pointer 12 and the second pointer 13. If the comparison result by the comparison means 15 is still larger than the value of the program counter 14 after this update, the compiling means 10 is continuously called and the same operation is performed.
【0013】比較手段15による比較の結果,プログラ
ムカウンタ14の値が第2のポインタ13の値より小さ
いか等しい場合,インタプリタ手段11が起動される。
インタプリタ手段11はプログラムカウンタ14により
指示された中間言語プログラム格納部3上の中間言語プ
ログラムを取り出して実行する。実行後PC更新手段1
7が駆動されて,プログラムカウンタ14が更新され,
その更新後のプログラムカウンタ14の値が依然として
第2のポインタ13の値より小さいか等しい場合は,同
様にインタプリタ手段11によりプログラムを実行す
る。When the value of the program counter 14 is smaller than or equal to the value of the second pointer 13 as a result of the comparison by the comparison means 15, the interpreter means 11 is activated.
The interpreter means 11 fetches and executes the intermediate language program instructed by the program counter 14 on the intermediate language program storage section 3. Post-execution PC updating means 1
7 is driven, the program counter 14 is updated,
If the updated value of the program counter 14 is still smaller than or equal to the value of the second pointer 13, the interpreter means 11 similarly executes the program.
【0014】[0014]
【実施例】図2は実施例の構成図である。図2におい
て,20は処理装置(CPU及びメモリ),21はコン
パイラ,22はインタプリタ,23はメモリ上の中間言
語プログラムがロードされる領域,24〜26は図1の
12〜14に対応し,24は原始言語プログラムの読み
込み位置を示すポインタ,25はどこまで中間言語プロ
グラムを作成したかを示すポインタ,26はインタプリ
タ22で解釈実行中の命令を示すプログラムカウンタ
(PC),27は原始言語プログラムが格納されたソー
スファイル,28は中間言語プログラムを格納した中間
言語ファイルである。FIG. 2 is a block diagram of an embodiment. In FIG. 2, 20 is a processing device (CPU and memory), 21 is a compiler, 22 is an interpreter, 23 is an area on the memory into which an intermediate language program is loaded, and 24-26 correspond to 12-14 of FIG. Reference numeral 24 is a pointer indicating the reading position of the source language program, 25 is a pointer indicating how far the intermediate language program is created, 26 is a program counter (PC) indicating the instruction being interpreted and executed by the interpreter 22, and 27 is the source language program. The stored source file 28 is an intermediate language file storing an intermediate language program.
【0015】図3は実施例の処理フローであり,上記図
2に示す構成においてインタプリタ22において実行さ
れ,以下にその内容を説明する。最初に中間言語ファイ
ル28が存在するか判別し(図3のS1),存在する場
合は中間言語ファイル28から処理装置20のメモリ上
のロード領域23にロードする(図3のS2)。この
後,ポインタ25の値をロード領域23の中間言語プロ
グラムの最後部を表す値に設定する(同S3)。中間言
語ファイルが無い場合は,ソースファイル27をオープ
ンし(同S4),ポインタ24,25をそれぞれ先頭位
置の値に設定する(同S5)。この後,プログラムカウ
ンタ(PC)を中間言語プログラムのロード領域23の
先頭位置に設定して(同S6),プログラムの実行が開
始される。FIG. 3 is a processing flow of the embodiment, which is executed by the interpreter 22 in the configuration shown in FIG. 2 and its contents will be described below. First, it is determined whether the intermediate language file 28 exists (S1 in FIG. 3), and if it exists, the intermediate language file 28 is loaded into the load area 23 on the memory of the processing device 20 (S2 in FIG. 3). After that, the value of the pointer 25 is set to a value representing the end of the intermediate language program in the load area 23 (at step S3). If there is no intermediate language file, the source file 27 is opened (at step S4), and the pointers 24 and 25 are set to the values at the head positions (at step S5). After that, the program counter (PC) is set to the head position of the load area 23 of the intermediate language program (at step S6), and the execution of the program is started.
【0016】次にプログラムカウンタ(PC)26の値
がポインタ25の値より小さいか(判別する(同S
7)。ここで,上記のステップS2,S3により中間言
語ファイル28から中間言語プログラムがロードされた
場合は,ポインタ25の方がプログラムカウンタ(P
C)の値より大きいためイエスと判断される。この場
合,プログラムカウンタ(PC)26が指している中間
コード(中間言語プログラム)を実行し,プログラムカ
ウンタ(PC)26を更新する(同S10)。Next, it is determined whether the value of the program counter (PC) 26 is smaller than the value of the pointer 25 (see the same S
7). Here, when the intermediate language program is loaded from the intermediate language file 28 by the above steps S2 and S3, the pointer 25 is the program counter (P
Yes because it is larger than the value of C). In this case, the intermediate code (intermediate language program) indicated by the program counter (PC) 26 is executed to update the program counter (PC) 26 (at step S10).
【0017】また,中間言語ファイルが無い場合は,ス
テップS4〜S6により,ポインタ25とプログラムカ
ウンタ(PC)26の値が一致するので,ステップS7
でノーと判断され,ポインタ24が指す文をソースファ
イル27から取り出し,コンパイラ21においてコンパ
イルして,得られた中間言語コードをロード領域23に
格納し(同S8),ポインタ24,25を更新する(同
S9)。この後,PCが指している中間コードを実行し
て,プログラムカウンタ26を更新する(同S10)。If there is no intermediate language file, the values of the pointer 25 and the program counter (PC) 26 coincide with each other in steps S4 to S6.
Is determined to be NO, the statement pointed to by the pointer 24 is taken out from the source file 27, compiled by the compiler 21, the obtained intermediate language code is stored in the load area 23 (at step S8), and the pointers 24, 25 are updated. (S9 of the same). Then, the intermediate code pointed to by the PC is executed to update the program counter 26 (at step S10).
【0018】続いて,プログラムカウンタ(PC)が中
間コードの最後に到達したか判別し(同S11),到達
しない場合は,再びステップS7に戻って,上記と同様
の処理を実行して,プログラムカウンタ(PC)26が
中間コードの最後に到達すると,終了する。Subsequently, it is determined whether the program counter (PC) has reached the end of the intermediate code (at step S11), and if it has not reached the end, the process returns to step S7 and the same processing as above is executed to execute the program. When the counter (PC) 26 reaches the end of the intermediate code, it ends.
【0019】[0019]
【発明の効果】本発明によれば,中間言語を生成してい
なかった場合にも,コンパイルの終了を待つことなくプ
ログラムの実行を開始することができ,従来よりも実行
開始までの時間を短縮することができる。そのため,試
行錯誤的プログラミングを行う場合に,操作性を向上す
ることができる。According to the present invention, even if the intermediate language is not generated, the execution of the program can be started without waiting for the end of the compilation, and the time until the start of execution can be shortened as compared with the conventional case. can do. Therefore, operability can be improved when trial and error programming is performed.
【図1】本発明の原理構成図である。FIG. 1 is a principle configuration diagram of the present invention.
【図2】実施例の構成図である。FIG. 2 is a configuration diagram of an embodiment.
【図3】実施例の処理フローである。FIG. 3 is a processing flow of an embodiment.
1 インタプリタ部 2 原始言語プログラム格納部 3 中間言語プログラム格納部 10 コンパイラ手段 11 インタプリタ手段 12 第1のポインタ 13 第2のポインタ 14 プログラムカウンタ(PC) 15 比較手段 16 ポインタ更新手段 17 プログラムカウンタ(PC)更新手段 DESCRIPTION OF SYMBOLS 1 interpreter unit 2 source language program storage unit 3 intermediate language program storage unit 10 compiler means 11 interpreter means 12 first pointer 13 second pointer 14 program counter (PC) 15 comparing means 16 pointer updating means 17 program counter (PC) Update means
Claims (3)
グラムを入力しながら解釈実行するコンパイル手段を備
えたインタプリタのプログラム実行方式において,原始
言語プログラム格納部と中間言語プログラム格納部と,
前記原始言語プログラム格納部内の現在までの解釈を行
ったプログラム位置の保持手段と,前記中間言語プログ
ラム格納部の中のプログラムの実行位置と前記原始言語
プログラムを解釈して作成された中間言語プログラムの
位置とを比較する比較手段を備え,前記比較手段により
前記実行済プログラムの位置の方が小さいと,前記プロ
グラムカウンタにより指示する中間言語プログラム格納
部のプログラムを実行し,前記実行済プログラムの位置
が,前記作成された中間言語プログラムの位置と一致す
るか大きいと,コンパイル手段により原始言語プログラ
ムから中間言語プログラムを作成して実行することを特
徴とするインタプリタのプログラム実行方式。1. A program execution method of an interpreter comprising a compiling means for interpreting and executing a source language program or an intermediate language program, the source language program storage section and the intermediate language program storage section,
Holding means for the program position in the source language program storage unit that has been interpreted up to the present, execution position of the program in the source language program storage unit, and an intermediate language program created by interpreting the source language program. If the position of the executed program is smaller than the position of the executed program by the comparing unit, the program in the intermediate language program storage unit designated by the program counter is executed to change the position of the executed program. A program execution method of an interpreter, characterized in that, if the position of the created intermediate language program is equal to or larger than the position, the intermediate language program is created and executed from the source language program by the compiling means.
ラムのどこまで解釈を行ったかの位置を保持する第1の
ポインタと,前記中間言語プログラムがどこまで作成さ
れたかの位置を保持する第2のポインタと,解釈実行が
行われた中間言語プログラムの位置を表すプログラムカ
ウンタとを備えることを特徴とするインタプリタのプロ
グラム実行方式。2. The first pointer according to claim 1, which holds a position of how much the source language program has been interpreted, and the second pointer which holds a position of how much the intermediate language program has been created. A program execution method for an interpreter, comprising: a program counter that indicates the position of an intermediate language program that has been executed.
を格納した中間言語ファイルを設け,該中間言語ファイ
ルをメモリにロードして,前記第2のポインタに前記ロ
ードされた中間言語プログラムの最後の位置を設定する
ことを特徴とするインタプリタのプログラム実行方式。3. The intermediate language file storing the intermediate language program according to claim 1, wherein the intermediate language file is loaded into a memory, and the last position of the loaded intermediate language program is loaded into the second pointer. An interpreter program execution method characterized by setting
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10066893A JPH06309175A (en) | 1993-04-27 | 1993-04-27 | Program execution system for interpreter |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10066893A JPH06309175A (en) | 1993-04-27 | 1993-04-27 | Program execution system for interpreter |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH06309175A true JPH06309175A (en) | 1994-11-04 |
Family
ID=14280162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10066893A Withdrawn JPH06309175A (en) | 1993-04-27 | 1993-04-27 | Program execution system for interpreter |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH06309175A (en) |
-
1993
- 1993-04-27 JP JP10066893A patent/JPH06309175A/en not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6078744A (en) | Method and apparatus for improving compiler performance during subsequent compilations of a source program | |
US11579856B2 (en) | Multi-chip compatible compiling method and device | |
US6094528A (en) | Method and apparatus for system building with a transactional interpreter | |
US8423982B2 (en) | Speculative compilation | |
US7016807B2 (en) | Device and method for monitoring a program execution | |
JPH0721033A (en) | Device and method for processing language | |
CN109829313A (en) | A kind of method and device programming defence SGX side-channel attack based on code reuse | |
JP2817786B2 (en) | Simulation apparatus and simulation method | |
US5150474A (en) | Method for transferring arguments between object programs by switching address modes according to mode identifying flag | |
JPH06309175A (en) | Program execution system for interpreter | |
JP3910701B2 (en) | Compilation processing apparatus and computer-readable program recording medium | |
JP2002055848A (en) | Program execution procedure and storage medium with the program execution procedure stored therein | |
JP3461185B2 (en) | Method and apparatus for registering source code line number to load module | |
JPH09288595A (en) | Arithmetic processing unit | |
JP2002073370A (en) | Debugging support device and debugging method using the same | |
JP2560467B2 (en) | Post-processing management method | |
JP3130421B2 (en) | Program analysis method and apparatus | |
JPH0695868A (en) | Software management system | |
CN118277268A (en) | Code compiling and pile inserting method and device, electronic equipment and readable storage medium | |
JP3424596B2 (en) | Method and apparatus for caching symbol reference information | |
JPS63217433A (en) | Control system for execution of program | |
JP2002189613A (en) | Software development assisting device, software development assisting method, and computer-readable storage medium recording software development assisting program | |
JPS58169637A (en) | Compile processing system | |
JPH0651995A (en) | Recognizing method for execution subroutine name | |
JPS62237525A (en) | Command converting method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20000704 |