JPH03191426A - Data processor - Google Patents

Data processor

Info

Publication number
JPH03191426A
JPH03191426A JP33174889A JP33174889A JPH03191426A JP H03191426 A JPH03191426 A JP H03191426A JP 33174889 A JP33174889 A JP 33174889A JP 33174889 A JP33174889 A JP 33174889A JP H03191426 A JPH03191426 A JP H03191426A
Authority
JP
Japan
Prior art keywords
memory
stack
function
data
func3
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
JP33174889A
Other languages
Japanese (ja)
Inventor
Tatsuo Kuraoka
倉岡 立郎
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP33174889A priority Critical patent/JPH03191426A/en
Publication of JPH03191426A publication Critical patent/JPH03191426A/en
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

PURPOSE:To allow a CPU to automatically determine an area for storing the function of an argument and the result of a function at the time of accessing, and restoring the function by providing the data processor with 1st and 2nd stack registers for controlling a stack tag memory and so on. CONSTITUTION:The pointers of variables A, B are inputted to a function stack memory 6. When an instruction CALLT func3 is executed, a return pointer from the func3 is inputted to the memory 6 and operation is jumped to the entry of a program code of the function func3. After executing the func3, the function result is stored in an area specified by the contents SSD:SPd of a data stack register 2b in a data stack memory 7 and then the contents SSD:SPd of the register 2b are updated. The pointer of the area storing the function result of the func3 is set up the position of the memory in which the 1st argu ment of the func3 is set up and the contents SSf:SPf of the function stack register 2a are updated. In order to indicate the setting of the pointer in the memory 7 to the memory 6, the corresponding set position of a stack tag mem ory 8 is turned on. The operation is restored from the func3 to complete the instruction CALLT func3.

Description

【発明の詳細な説明】[Detailed description of the invention] 【産業上の利用分野】[Industrial application field]

二の発明は、高級言語向けのスタック制御を行うデータ
処理装置に関するものである。
The second invention relates to a data processing device that performs stack control for high-level languages.

【従来の技術】[Conventional technology]

第5図は従来のデータ処理装置の構成を示すブロック図
であり、図において、1は各種演算、制御等を行う中央
演算処理装置(以下、CPUという)、2は前記CPU
 Iがスタックメモリ内の使用位置を記憶するためのス
タックレジスタ、3は前記CPUの各種演算に必要なプ
ログラムコード及びデータを格納するコードデータメモ
リ、4は前記スタックレジスタ2によって読出しポイン
トをL I F O(last−in first−o
ut)で制御され、プログラムコード実行時の引数デー
タやプログラムローカルデータを格納するスタックメモ
リである。 次に動作について説明する。 ここでは、CPUIが実行する高級言語レベルのソース
プログラムを第7図(a)とし、記号@Aは変数Aのデ
ータを格納するポインタを示す。また、各関数は以下の
入出力関係を持っていることとする。 ■func l入カニ4つのポインタ人力。内3つのポ
インタはfunc 1の入力デー タを持つポインタで、残る1つ のポインタは、3つのポインタ 入力で得られる結果を返す場所 を指定するものである。 出カニ結果を返すポインタにより指定 される場所にfunc lによる演 算結果を返す。又、第1引数の 変数ポインタにも演算結果を返 す。 ■func 3人カニ2つのポインタ。内1つのポイf
unc 4     ンタは結果を返す場所を指定する
ポインタである。 出カニ結果を返すポインタにより指定 される場所にfunc 3又はfunc4の結果をそれ
ぞれ返すととも に、そのポインタを型付関数の 結果として返す。例えば、前記 型付関数func 3の出力である ポインタは、そのままfunc 2 の第1及び第2引数として入力 される。 ■func 2  引数の数が3つであることを除いて
func 3及びfunc 4等と同様の入出力関係を
持っている。 また、第7図(a)でrLQA (XXX)Jと示しで
ある結果を返すポインタを仮想レジスタ5という。この
仮想レジスタ5は第6図に示すように、様々なフォーマ
ットの結果を格納するため任意の最大値nバイトの大き
さを持つ複数のレジスタから構成され、関数の結果格納
エリアとして使用される。関数がリエントラントな場合
は関数から復帰後、この関数内のローカルデータは解放
されるので、この仮想レジスタに保持しておく必要があ
るからである。また、r@LQA (0)Jのように関
数の結果を返す位置をポインタとして入力するのは関数
の結果を格納するデータサイズを任意の最大値nバイト
にするためである。 以上のようなソースプログラムにより、CPU1が実際
に実行するプログラムコードはコンパイラ等の言語処理
により第7図[有])のように生成される。次にこの第
7図(b)に示すプログラムコードを実行する際のスタ
ックメモリ4の動作を第8図及び第9図を用いて説明す
る。まず、スタックレジスタ2を構成するスタックセグ
メント(以下、SSという)及びスタックポインタ(以
下、SPという)は所定の値P、Qに初期化されている
ものとする。 一行目の命令P IJ S H@Aにより変数へのポイ
ンタをスタックメモリ40P:Qの位置に格納し、SP
、をSP、に更新する。このようにプログラムコード(
第7図(b))の3行目まで実行したスタックメモリ4
の状態が第8図であり、スタックレジスタ2はSS:S
P3を指すこととなる(同時に仮想メモリ5に格納する
)。さらに4行目の命令CALLfunc3を実行し、
関数にエントリした直後のスタックメモリ4の状態は第
9図における(a)の状態となり、関数func 3の
リターンポインタがスタックメモリ4に格納される。 
func 3が実行され、この関数からret(リター
ン)するときのスタックメモリ4の状態は同図における
0))の状態であり、func S用の引数としてスタ
ックメモリ4上に格納された@B、@LQA (0)が
解放され、スタックレジスタ2はSS:SP、を指す。 続いてfunc 3の結果は次の間数furrc2の引
数となるため、5行目でfunc 3の結果をスタック
メモリ4に格納し、同時にスタックレジスタ2をSS:
SPzに更新する。このように、まずfunc 3関数
が評価されるが、プログラムコードの6行目から最後の
188行目でも、func 3と同様の動作で評価され
ていき、最終的にfunc 1により実行された結果は
仮想レジスタ5の@LQA(0)に格納され、SSは全
て解放されて元の値SS:SPO(P:Q)に戻される
こととなる。
FIG. 5 is a block diagram showing the configuration of a conventional data processing device. In the figure, 1 is a central processing unit (hereinafter referred to as CPU) that performs various calculations and controls, and 2 is the CPU.
I is a stack register for storing the used position in the stack memory, 3 is a code data memory for storing program codes and data necessary for various operations of the CPU, and 4 is a read point L I F by the stack register 2. O(last-in first-o
This is a stack memory that stores argument data and program local data when program code is executed. Next, the operation will be explained. Here, the high-level language level source program executed by the CPU is shown in FIG. 7(a), and the symbol @A indicates a pointer that stores the data of variable A. Also, assume that each function has the following input/output relationship. ■Func l Crab 4 pointer human power. Three of the pointers are pointers that have input data of func 1, and the remaining one pointer specifies the location where the results obtained by inputting the three pointers are returned. Returns the result of the operation by funcl to the location specified by the pointer that returns the output result. The operation result is also returned to the variable pointer of the first argument. ■func Three crabs and two pointers. One point in
unc 4 is a pointer that specifies where to return the result. The result of func3 or func4 is returned to the location specified by the pointer that returns the output result, and the pointer is returned as the result of the typed function. For example, the pointer that is the output of the typed function func 3 is input as is as the first and second arguments of func 2 . ■func 2 It has the same input/output relationship as func 3, func 4, etc. except that the number of arguments is three. In addition, the pointer that returns the result shown as rLQA (XXX)J in FIG. 7(a) is called a virtual register 5. As shown in FIG. 6, this virtual register 5 is composed of a plurality of registers having an arbitrary maximum size of n bytes for storing results in various formats, and is used as a function result storage area. This is because if a function is reentrant, the local data within this function will be released after returning from the function, so it is necessary to hold it in this virtual register. Furthermore, the reason why the position where the result of the function is returned is input as a pointer, such as r@LQA (0)J, is to set the data size for storing the result of the function to an arbitrary maximum value of n bytes. Using the source program as described above, the program code actually executed by the CPU 1 is generated as shown in FIG. 7 by language processing using a compiler or the like. Next, the operation of the stack memory 4 when executing the program code shown in FIG. 7(b) will be explained using FIGS. 8 and 9. First, it is assumed that a stack segment (hereinafter referred to as SS) and a stack pointer (hereinafter referred to as SP) constituting the stack register 2 have been initialized to predetermined values P and Q. The first line command P IJ S H@A stores the pointer to the variable in the stack memory 40P:Q location, and SP
, is updated to SP. The program code (
Stack memory 4 executed up to the 3rd line in Figure 7(b))
The state of is shown in FIG. 8, and the stack register 2 is SS:S.
It will point to P3 (and will be stored in the virtual memory 5 at the same time). Furthermore, execute the instruction CALLfunc3 on the fourth line,
Immediately after entering the function, the state of the stack memory 4 becomes the state shown in (a) in FIG. 9, and the return pointer of the function func 3 is stored in the stack memory 4.
When func 3 is executed and ret (returns) from this function, the state of the stack memory 4 is 0)) in the same figure, and @B, which is stored on the stack memory 4 as an argument for func S, @LQA (0) is released and stack register 2 points to SS:SP. Next, the result of func 3 becomes the argument of the next number furrc2, so in the 5th line, the result of func 3 is stored in the stack memory 4, and at the same time, the stack register 2 is set to SS:
Update to SPz. In this way, the func 3 function is evaluated first, but from the 6th line to the final 188th line of the program code, it is evaluated in the same manner as func 3, and finally the result executed by func 1 is is stored in @LQA(0) of the virtual register 5, and all SS is released and returned to the original value SS:SPO(P:Q).

【発明が解決しようとする課題】[Problem to be solved by the invention]

従来のデータ処理装置は以上のように構成されているの
で、関数の結果を返すのに必要な仮想レジスタ内の使用
位置をソースプログラムレベルで決定する必要があり、
ソースプログラム自体が複雑となり、これらのソースプ
ログラムを自動生成する言語変換等の言語処理も複雑と
なる。また、生成されるプログラムコードの容量も大き
くなり、実行速度も遅くなるなどの課題があった。 この発明は上記のような課題を解消するためになされた
もので、関数の結果を返す格納エリア内の使用位置をC
PUが自動的に決定できるデータ処理装置を得ることを
目的とする。
Since conventional data processing devices are configured as described above, it is necessary to determine at the source program level the locations in the virtual registers required to return the result of a function.
The source programs themselves become complex, and language processing such as language conversion for automatically generating these source programs also becomes complex. In addition, the size of the generated program code becomes large and the execution speed becomes slow. This invention was made to solve the above-mentioned problems.
An object of the present invention is to obtain a data processing device that can automatically determine a PU.

【課題を解決するための手段】[Means to solve the problem]

この発明に係るデータ処理装置は、コードデータメモリ
に格納されたプログラムコードを実行する際に必要な引
数データ及びプログラムローカルデータを格納するファ
ンクションスタックメモリと、このプログラムコードの
実行結果(関数結果)を格納するデータスタックメモリ
と、前記ファンクションスタックメモリに返す実行結果
を格納するデータスタックメモリへのポインタ指示の存
在情報を格納するスタックタグメモリと、前記ファンク
ションスタックメモリ及びデータスタックメモリを管理
するための第1及び第2のスタックレジスタを備えたも
のである。
The data processing device according to the present invention includes a function stack memory that stores argument data and program local data necessary when executing a program code stored in a code data memory, and a function stack memory that stores the execution results (function results) of this program code. a data stack memory to store; a stack tag memory to store existence information of a pointer to the data stack memory to store execution results returned to the function stack memory; and a stack tag memory to manage the function stack memory and the data stack memory. It is equipped with a first and a second stack register.

【作用】[Effect]

この発明におけるデータ処理装置は、プログラムコード
を実行する際に必要な引数データ及びプロクラムローカ
ルデータを格納するファンクションスタックメモリに、
実行結果を返すための従来の仮想メモリの代りに設けら
れたデータスタックメモリへのポインタ指示が格納され
ているか否かの情報を持ち、関数からのリターン時に前
記データスタックメモリの解放のための情報として使用
するスタックタグメモリと、前記ファンクションスタッ
クメモリ内及びデータスタックメモリ内の使用位置を示
すポインタをそれぞれ制御する第1及び第2のスタック
レジスタを設けたので、CPUで自由に(自動的に)結
果格納エリアを決定できる。
The data processing device according to the present invention includes a function stack memory that stores argument data and program local data necessary when executing a program code.
Contains information as to whether a pointer instruction to a data stack memory provided in place of conventional virtual memory for returning execution results is stored, and information for releasing the data stack memory upon return from a function. Since we have provided a stack tag memory to be used as The result storage area can be determined.

【発明の実施例】[Embodiments of the invention]

以下、この発明の一実施例を図について説明する。 第1図はこの発明の一実施例によるデータ処理装置の構
成を示すブロック図であり、従来のデータ処理装置(第
5図)と同−又は相当部分には同一符号を付して説明を
省略する。 図において、2aはファンクションスタックメモリ6内
の使用位置を示す第1のスタックレジスタとしてのファ
ンクションスタックレジスタ(スタックセグメントをS
Sf、スタックポインタをSPfとする)、2bはデー
タスタックメモリ7内の使用位置を示す第2のスタック
レジスタとしてのデータスタックレジスタ(スタックセ
グメントをSSd、スタックポインタをSPdとする)
、6はコードデータメモリ3に格納されているプログラ
ムコードを実行する際に必要な引数データ及びプログラ
ムローカルデータを格納するファンクションスタックメ
モリ、7は前記プログラムコードの関数結果を格納する
データスタックメモリ、8は前記ファンクションスタッ
クメモリ6に関数結果を返すためのデータスタックメモ
リ7へのポインタ指示がいくつ存在するかという情報を
持つスタックタグメモリである。 第2図はこのファンクションスタックメモリ6とスタッ
クタグメモリ8との関係を説明する図であり、スタック
タグメモリ8はファンクションスタックメモリ6の1 
 wordにつき1ビツトの情報を持ち、ファンクショ
ンスタックメモリ6内にデータスタックレジスタ2dを
指すポインタが格納されていれば、そのメモリポインタ
に対応するビットをONにしておく。 次に動作について説明する。 ここでは、CPUIが実行する高級言語レベルのソース
プログラムを第3図(a)とする。なお、このソースプ
ログラムは第7図(a)で示したソースプログラムに対
応しているが、関数結果を返すポインタ指定がない。ま
た、記号@Aは変数へのデータを格納するポインタを示
し、各関数は以下の入出力関係を持っていることとする
。 ■func 1人カニ3つのポインタ入力出カニ第1引
数の変数ポインタで指定 される場所に演算結果を返す。 ■func 2人カニ2つのポインタ入力出カニ演算結
果をSSd:SPdで指 定されるデータスタックメモリ 内に返す。 ■func 3人カニ1つのポインタ入力func 4
出カニ演算結果をSSd : SPdで指定されるデー
タスタックメモリ 内に返す。 なお、前記func 2+ func 3. func
 4はポインタを返す型付関数であり、func 1は
特に何も返さない型のない関数である。 このようなソースプログラムにより、CPUIが実際に
実行するプログラムコードはコンパイラ等の言語処理に
よって第3図(b)のように生成される。 次にこの第3図[有])に示すプログラムコードを実行
する際のファンクションスタックメモリ6、データスタ
ックメモリ7、スタックタグメモリ8.2つのスタック
レジスタ2a、2bの動作について、第4図を用いて説
明する。このプログラムコードの1〜3行目を実行した
直後の各メモリ6゜7.8及びレジスタ2a、2bの状
態を第4図における(a)、(ロ)に示す、3行目まで
の動作は以下のようになる。 ■ 変数A、Bのポインタをファンクションスタックメ
モリ6に入れる。 ■ 命令CAL LT func 3を実行することに
よりCAL LT funC3からのリターンポインタ
をファンクションスタックメモリ6に入れ、関数fun
c 3のプログラムコードのエントリにジャンプする。 ■ func 3の実行後、この関数結果をデータスタ
ックメモリ7のデータスタックレジスタ2bの内容SS
d : SPdで指定されるエリアに格納し、データス
タックレジスタ2bの内容SSd: SPdを更新する
。 ■ func 3の関数結果を格納したエリアへのポイ
ンタ(Φ)では@LQA (0))を、func 3の
第1引数をセットしたファンクションスタックメモリ6
の位置(@Bをセットしたエリア)にセットするととも
に、ファンクションスタックレジスタ2aの内容SSf
:SPfを更新する。 ■ ファンクションスタックメモリ6にデータスタック
メモリ7へのポインタ(@LQA (0)をセットした
ことを示すために、スタックタグメモリ8の対応するセ
ット位置をONとする。 ■ func 3より復帰し、命令CA L L T 
func3を完了する。 プログラムコードの4行目、5行目についても同様に実
行され、第4図における状態(C)から(d)の状態と
なり、ファンクションスタックメモリ6には2つのfu
nc 3の関数結果を示すポインタが格納されることと
なる。 プログラムコードの6行目では、第4図における(e)
の状態から(f)の状態へと変化する。この状態(e)
において、関数func 2はデータスタックメモ+J
 7上に存在する2個の引数データ(@LQA(0)。 @LQA(1))を使用して演算する。スタックタグメ
モリ8の情報から、関数func 2完了時にはデータ
スタックメモリ7上にある1個の関数結果データエリア
が存在すれば良いことが判るため、状態げ)で示す位置
にデータスタックのレジスタ2bの内容SSd : S
Pdが更新される。 このようにして、プログラムコードの8行目まで実行す
ることにより各メモリ6.7.8及びレジスタ2a、2
bの状態は(□□□から(ハ)へと変化していく。 9行目のプログラムコードは、他の命令CALLTと異
なり、命令CALLNとなっている。このCALLNは
関数結果が得られた後に、命令CALLTと違い、結果
ポインタをファンクションスタックメモリ6上に格納し
ない関数呼出であることを示す。命令CALLTの場合
は、各状態(a)から(ハ)で説明されているように、
関数結果が、関数演算後にファンクションスタックメモ
リ6上に格納される。9行目の命令CALLN fun
c 1実行完了により第4図における状態(i)に示す
ように全てのファンクションスタックメモリ6、データ
スタックメモリ7及びスタックタグメモリ8が元の状態
に戻ることとなる。 なお、上記実施例では、ファンクションスタックメモリ
6、データスタックメモリ7及びスタックタグメモリ8
は異るメモリとなっているが、同一メモリ上にそれぞれ
のメモリエリアが独立して存在していてもよい。 また、第4図において、データスタックメモリ7の1個
の関数結果データ格納エリアのサイズ(nバイト)は、
プログラムコードにより変更・設定可能としてもよい。 また、関数からの復帰プログラムコードとしてFRET
URN (S I ZE。 @データ) ここで s+zE:関数復帰時に解放するファンクショ
ンスタックメ モリ6のサイズ データ :データスタックメモリ7 へ格納する関数演算結果 へのポインタ というマイクロコードを用意して、実施例で述べた関数
復帰処理を行ってもよい。
An embodiment of the present invention will be described below with reference to the drawings. FIG. 1 is a block diagram showing the configuration of a data processing device according to an embodiment of the present invention, and the same or equivalent parts as in the conventional data processing device (FIG. 5) are given the same reference numerals and explanations are omitted. do. In the figure, 2a is a function stack register (stack segment is S
Sf, stack pointer is SPf), 2b is a data stack register as a second stack register indicating the used position in the data stack memory 7 (stack segment is SSd, stack pointer is SPd)
, 6 is a function stack memory that stores argument data and program local data necessary for executing the program code stored in the code data memory 3; 7 is a data stack memory that stores the function result of the program code; 8 is a stack tag memory having information on how many pointers to the data stack memory 7 for returning function results are present in the function stack memory 6. FIG. 2 is a diagram explaining the relationship between the function stack memory 6 and the stack tag memory 8. The stack tag memory 8 is one of the function stack memories 6.
Each word has one bit of information, and if a pointer pointing to the data stack register 2d is stored in the function stack memory 6, the bit corresponding to the memory pointer is turned ON. Next, the operation will be explained. Here, the high-level language level source program executed by the CPU is shown in FIG. 3(a). Although this source program corresponds to the source program shown in FIG. 7(a), there is no pointer specification for returning the function result. Further, the symbol @A indicates a pointer for storing data in a variable, and each function is assumed to have the following input/output relationship. ■func 1 person 3 pointers input/output Returns the calculation result to the location specified by the variable pointer of the first argument. ■func Returns the two pointer input/output operation results into the data stack memory specified by SSd:SPd. ■func 3 people 1 crab pointer input func 4
The output calculation result is returned to the data stack memory specified by SSd: SPd. Note that the func 2+ func 3. func
4 is a typed function that returns a pointer, and func 1 is an untyped function that returns nothing. From such a source program, the program code actually executed by the CPUI is generated by language processing by a compiler or the like as shown in FIG. 3(b). Next, the operations of the function stack memory 6, data stack memory 7, stack tag memory 8, and two stack registers 2a and 2b when executing the program code shown in FIG. I will explain. The states of each memory 6°7.8 and registers 2a and 2b immediately after executing the 1st to 3rd lines of this program code are shown in (a) and (b) in Figure 4. The operation up to the 3rd line is It will look like this: ■ Put the pointers of variables A and B into the function stack memory 6. ■ By executing the instruction CAL LT func 3, the return pointer from CAL LT funC3 is placed in the function stack memory 6, and the function func
c Jump to the program code entry in 3. ■ After executing func 3, the function result is stored in the data stack register 2b contents SS of the data stack memory 7.
d: Store in the area specified by SPd, and update the contents of the data stack register 2b SSd: SPd. ■ The pointer (Φ) to the area where the function result of func 3 is stored is @LQA (0)), and the function stack memory 6 where the first argument of func 3 is set.
(the area where @B is set) and the contents SSf of the function stack register 2a.
: Update SPf. ■ To indicate that the pointer (@LQA (0)) to the data stack memory 7 has been set in the function stack memory 6, the corresponding set position in the stack tag memory 8 is turned ON. ■ Return from func 3 and execute the command CA L L T
Complete func3. The 4th and 5th lines of the program code are executed in the same way, and the state changes from state (C) to state (d) in FIG.
A pointer indicating the function result of nc 3 will be stored. In the 6th line of the program code, (e) in Figure 4
The state changes from the state to the state (f). This state (e)
In, function func 2 is data stack memo + J
The calculation is performed using two argument data (@LQA(0), @LQA(1)) existing on 7. From the information in the stack tag memory 8, it can be seen that when function func 2 is completed, one function result data area on the data stack memory 7 only needs to exist, so the register 2b of the data stack is placed in the position indicated by Content SSd: S
Pd is updated. In this way, by executing up to the 8th line of the program code, each memory 6.7.8 and registers 2a, 2
The state of b changes from (□□□ to (c). The program code on the 9th line is an instruction CALLN, unlike the other instructions CALLT. This CALLN is used when the function result is obtained. Later, it will be shown that unlike the instruction CALLT, this is a function call that does not store the result pointer on the function stack memory 6.In the case of the instruction CALLT, as explained in each state (a) to (c),
The function result is stored on the function stack memory 6 after the function operation. 9th line instruction CALLN fun
Upon completion of c1 execution, all the function stack memory 6, data stack memory 7, and stack tag memory 8 return to their original states as shown in state (i) in FIG. In the above embodiment, the function stack memory 6, the data stack memory 7, and the stack tag memory 8
Although these are different memories, each memory area may exist independently on the same memory. In addition, in FIG. 4, the size (n bytes) of one function result data storage area of the data stack memory 7 is:
It may also be possible to change and set it by program code. Also, FRET is used as the return program code from the function.
URN (SIZE.@Data) Here, s+zE: Size data of function stack memory 6 to be released when function returns: Data: Pointer to function operation result stored in data stack memory 7 A microcode is prepared and used in the example. The function return process described above may also be performed.

【発明の効果】【Effect of the invention】

以上のようにこの発明によれば、関数の呼び出し、復帰
時に関数の引数・関数の結果を格納するエリアをCPU
が自動的に決定できるように構成したので、ソースプロ
グラム生成時に使用エリア決定する必要がなくなり、コ
ーディングが容易となり、これらのソースプログラムを
生成するツールがあれば、そのソース生成処理も容易と
なる。 又プログラムが簡易なるため、容量・速度とも向上する
などの効果がある。
As described above, according to the present invention, when a function is called and returned, the area for storing function arguments and function results is stored in the CPU.
Since the configuration is configured so that the area to be used can be automatically determined, there is no need to determine the area to be used when generating the source program, and coding becomes easy.If there is a tool for generating these source programs, the source generation process becomes easy. Furthermore, since the program is simplified, it has the effect of improving both capacity and speed.

【図面の簡単な説明】[Brief explanation of drawings]

第1図はこの発明の一実施例によるデータ処理装置の構
成を示すブロック図、第2図はこの発明におけるファン
クションスタックメモリとスタックタグメモリとの関係
を示す図、第3図はこの発明のデータ処理装置で実行す
るソースプログラム及びプログラムコードの一例を示す
図、第4図は第3図(b)のプログラムコードを実行す
る際のこの発明における各メモリ状態を示す図、第5図
は従来のデータ処理装置の構成を示すブロック図、第6
図は仮想メモリの構成を示す図、第7図は従来のデータ
処理装置で実行するソースプログラム及びプログラムコ
ードの一例を示す図、第8図及び第9図は第7図ら)の
プログラムコードを実行する際の従来のデータ処理装置
におけるスタックメモリの状態を示す図である。 図において、■はCPU、2aはファンクションスタッ
クレジスタ、2bはデータスタックレジスタ、3はコー
ドデータメモリ、6はファンクションスタックメモリ、
7はデータスタックメモリ、8はスタックタグメモリで
ある。 なお、図中、同一符号は同一、又は相当部分を示す。 2b:テ―ヌズ′メッソレジχ′ノ to) H)1 [cl dl 第 図 (Yol) 第 図 (0) ALL func 1 (@A func 2 (func3 (@ B) 。 func3 (@C1)。 func 4 (@ D ) ) bl 第 図 (矛の 2) el fl (9) +h1 1’Ll 第 5 図 (b) func 41@ D。 @ LQA lot l。
FIG. 1 is a block diagram showing the configuration of a data processing device according to an embodiment of the present invention, FIG. 2 is a diagram showing the relationship between the function stack memory and the stack tag memory in the present invention, and FIG. 3 is a data processing apparatus according to the present invention. A diagram showing an example of a source program and a program code executed by a processing device, FIG. 4 is a diagram showing each memory state in this invention when the program code of FIG. 3(b) is executed, and FIG. Block diagram showing the configuration of the data processing device, No. 6
The figure shows the configuration of virtual memory, Figure 7 shows an example of a source program and program code executed by a conventional data processing device, and Figures 8 and 9 execute the program code shown in Figure 7, etc. FIG. 2 is a diagram showing the state of a stack memory in a conventional data processing device when processing. In the figure, ■ is the CPU, 2a is the function stack register, 2b is the data stack register, 3 is the code data memory, 6 is the function stack memory,
7 is a data stack memory, and 8 is a stack tag memory. In addition, in the figures, the same reference numerals indicate the same or equivalent parts. 2b: Tenes' Messoregi χ'not) H) 1 [cl dl Figure (Yol) Figure (0) ALL func 1 (@A func 2 (func3 (@B). func3 (@C1). func 4 (@D)) bl Figure (2 of spears) el fl (9) +h1 1'Ll Figure 5 (b) func 41@D. @LQA lot l.

Claims (1)

【特許請求の範囲】[Claims] 中央演算処理装置での各種演算に必要なプログラムコー
ド及びデータを格納するコードデータメモリと、前記コ
ードデータメモリに格納されているプログラムコードを
実行する際、必要な引数データ及びプログラムローカル
データを格納するファンクションスタックメモリと、前
記プログラムコードの実行結果を格納するデータスタッ
クメモリと、前記ファンクションスタックメモリに返す
実行結果を格納するデータスタックメモリへのポインタ
指示の存在情報を格納するスタックタグメモリと、前記
ファンクションスタックメモリ内及びデータスタックメ
モリ内の使用位置をそれぞれ示す第1及び第2のスタッ
クレジスタを備えたデータ処理装置。
A code data memory that stores program codes and data necessary for various operations in the central processing unit, and stores necessary argument data and program local data when executing the program code stored in the code data memory. a function stack memory; a data stack memory that stores the execution result of the program code; a stack tag memory that stores existence information of a pointer instruction to the data stack memory that stores the execution result returned to the function stack memory; A data processing device comprising first and second stack registers each indicating a used position within a stack memory and a data stack memory.
JP33174889A 1989-12-21 1989-12-21 Data processor Pending JPH03191426A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP33174889A JPH03191426A (en) 1989-12-21 1989-12-21 Data processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP33174889A JPH03191426A (en) 1989-12-21 1989-12-21 Data processor

Publications (1)

Publication Number Publication Date
JPH03191426A true JPH03191426A (en) 1991-08-21

Family

ID=18247175

Family Applications (1)

Application Number Title Priority Date Filing Date
JP33174889A Pending JPH03191426A (en) 1989-12-21 1989-12-21 Data processor

Country Status (1)

Country Link
JP (1) JPH03191426A (en)

Similar Documents

Publication Publication Date Title
KR950033859A (en) Dynamic register management device and method in floating point unit
US20030081002A1 (en) Method and system for chaining and extending wizards
JPS5911943B2 (en) Trap mechanism for data processing equipment
WO2002048887A2 (en) Single-step processing
JPS5975347A (en) Simulation device of logical circuit
JPH03208159A (en) Extended software function for multiprocessor system
Yurcik et al. A web-based little man computer simulator
JPH03191426A (en) Data processor
JPH06202877A (en) Emulator
JP2567134B2 (en) Bit field logical operation processing device and monolithic microprocessor having the same
JPH02308330A (en) Knowledge information processing device
JPS59191614A (en) Controller of robot
Xue et al. MATLAB Functions Programming
JP2731618B2 (en) emulator
JPS6332587A (en) Display controller
Frenger The growing machine, a pre-Forth language implementation
JPS6250855B2 (en)
JPS5971550A (en) Instruction processing system
JPH11167409A (en) Program controller operating by parallel language
Iliffe DIGITAL SYSTEMS LABORATORY I
JPS61148536A (en) Information processing system
Strite BACI debugger: A GUI debugger for the BACI system
Brees The architecture and design of a high level language processor
Brumbaugh A Web-Based Little Man Computer Simulator
JPS61208143A (en) Information processor