JPH03191426A - データ処理装置 - Google Patents
データ処理装置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
Links
Landscapes
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
二の発明は、高級言語向けのスタック制御を行うデータ
処理装置に関するものである。
処理装置に関するものである。
第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)に戻される
こととなる。
であり、図において、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)に戻される
こととなる。
従来のデータ処理装置は以上のように構成されているの
で、関数の結果を返すのに必要な仮想レジスタ内の使用
位置をソースプログラムレベルで決定する必要があり、
ソースプログラム自体が複雑となり、これらのソースプ
ログラムを自動生成する言語変換等の言語処理も複雑と
なる。また、生成されるプログラムコードの容量も大き
くなり、実行速度も遅くなるなどの課題があった。 この発明は上記のような課題を解消するためになされた
もので、関数の結果を返す格納エリア内の使用位置をC
PUが自動的に決定できるデータ処理装置を得ることを
目的とする。
で、関数の結果を返すのに必要な仮想レジスタ内の使用
位置をソースプログラムレベルで決定する必要があり、
ソースプログラム自体が複雑となり、これらのソースプ
ログラムを自動生成する言語変換等の言語処理も複雑と
なる。また、生成されるプログラムコードの容量も大き
くなり、実行速度も遅くなるなどの課題があった。 この発明は上記のような課題を解消するためになされた
もので、関数の結果を返す格納エリア内の使用位置をC
PUが自動的に決定できるデータ処理装置を得ることを
目的とする。
この発明に係るデータ処理装置は、コードデータメモリ
に格納されたプログラムコードを実行する際に必要な引
数データ及びプログラムローカルデータを格納するファ
ンクションスタックメモリと、このプログラムコードの
実行結果(関数結果)を格納するデータスタックメモリ
と、前記ファンクションスタックメモリに返す実行結果
を格納するデータスタックメモリへのポインタ指示の存
在情報を格納するスタックタグメモリと、前記ファンク
ションスタックメモリ及びデータスタックメモリを管理
するための第1及び第2のスタックレジスタを備えたも
のである。
に格納されたプログラムコードを実行する際に必要な引
数データ及びプログラムローカルデータを格納するファ
ンクションスタックメモリと、このプログラムコードの
実行結果(関数結果)を格納するデータスタックメモリ
と、前記ファンクションスタックメモリに返す実行結果
を格納するデータスタックメモリへのポインタ指示の存
在情報を格納するスタックタグメモリと、前記ファンク
ションスタックメモリ及びデータスタックメモリを管理
するための第1及び第2のスタックレジスタを備えたも
のである。
この発明におけるデータ処理装置は、プログラムコード
を実行する際に必要な引数データ及びプロクラムローカ
ルデータを格納するファンクションスタックメモリに、
実行結果を返すための従来の仮想メモリの代りに設けら
れたデータスタックメモリへのポインタ指示が格納され
ているか否かの情報を持ち、関数からのリターン時に前
記データスタックメモリの解放のための情報として使用
するスタックタグメモリと、前記ファンクションスタッ
クメモリ内及びデータスタックメモリ内の使用位置を示
すポインタをそれぞれ制御する第1及び第2のスタック
レジスタを設けたので、CPUで自由に(自動的に)結
果格納エリアを決定できる。
を実行する際に必要な引数データ及びプロクラムローカ
ルデータを格納するファンクションスタックメモリに、
実行結果を返すための従来の仮想メモリの代りに設けら
れたデータスタックメモリへのポインタ指示が格納され
ているか否かの情報を持ち、関数からのリターン時に前
記データスタックメモリの解放のための情報として使用
するスタックタグメモリと、前記ファンクションスタッ
クメモリ内及びデータスタックメモリ内の使用位置を示
すポインタをそれぞれ制御する第1及び第2のスタック
レジスタを設けたので、CPUで自由に(自動的に)結
果格納エリアを決定できる。
以下、この発明の一実施例を図について説明する。
第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 へ格納する関数演算結果 へのポインタ というマイクロコードを用意して、実施例で述べた関数
復帰処理を行ってもよい。
成を示すブロック図であり、従来のデータ処理装置(第
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 へ格納する関数演算結果 へのポインタ というマイクロコードを用意して、実施例で述べた関数
復帰処理を行ってもよい。
以上のようにこの発明によれば、関数の呼び出し、復帰
時に関数の引数・関数の結果を格納するエリアをCPU
が自動的に決定できるように構成したので、ソースプロ
グラム生成時に使用エリア決定する必要がなくなり、コ
ーディングが容易となり、これらのソースプログラムを
生成するツールがあれば、そのソース生成処理も容易と
なる。 又プログラムが簡易なるため、容量・速度とも向上する
などの効果がある。
時に関数の引数・関数の結果を格納するエリアをCPU
が自動的に決定できるように構成したので、ソースプロ
グラム生成時に使用エリア決定する必要がなくなり、コ
ーディングが容易となり、これらのソースプログラムを
生成するツールがあれば、そのソース生成処理も容易と
なる。 又プログラムが簡易なるため、容量・速度とも向上する
などの効果がある。
第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。
成を示すブロック図、第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。
Claims (1)
- 中央演算処理装置での各種演算に必要なプログラムコー
ド及びデータを格納するコードデータメモリと、前記コ
ードデータメモリに格納されているプログラムコードを
実行する際、必要な引数データ及びプログラムローカル
データを格納するファンクションスタックメモリと、前
記プログラムコードの実行結果を格納するデータスタッ
クメモリと、前記ファンクションスタックメモリに返す
実行結果を格納するデータスタックメモリへのポインタ
指示の存在情報を格納するスタックタグメモリと、前記
ファンクションスタックメモリ内及びデータスタックメ
モリ内の使用位置をそれぞれ示す第1及び第2のスタッ
クレジスタを備えたデータ処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP33174889A JPH03191426A (ja) | 1989-12-21 | 1989-12-21 | データ処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP33174889A JPH03191426A (ja) | 1989-12-21 | 1989-12-21 | データ処理装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH03191426A true JPH03191426A (ja) | 1991-08-21 |
Family
ID=18247175
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP33174889A Pending JPH03191426A (ja) | 1989-12-21 | 1989-12-21 | データ処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH03191426A (ja) |
-
1989
- 1989-12-21 JP JP33174889A patent/JPH03191426A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR950033859A (ko) | 부동 소숫점 유니트에서의 다이나믹 레지스터 관리 장치 및 방법 | |
| US20030081002A1 (en) | Method and system for chaining and extending wizards | |
| JPS5911943B2 (ja) | デ−タ処理装置の為のトラツプ機構 | |
| JPS5960652A (ja) | デ−タ処理装置 | |
| WO2002048887A2 (en) | Single-step processing | |
| JPS5975347A (ja) | 論理回路のシミユレ−シヨン装置 | |
| KR100210205B1 (ko) | 스톨캐쉬를 제공하기 위한 장치 및 방법 | |
| JPH03208159A (ja) | マルチプロセッサコンピュータシステム使用方法 | |
| JPH03191426A (ja) | データ処理装置 | |
| KR900008402A (ko) | 저장 및 복귀방법과 이방법의 실행에 가장 적절한 프로세서 시스템 | |
| JPH06202877A (ja) | エミュレーション装置 | |
| JP2567134B2 (ja) | ビットフィールド論理演算処理装置およびそれを具備するモノリシックマイクロプロセッサ | |
| JPH02308330A (ja) | 知識情報処理装置 | |
| JPH0452986B2 (ja) | ||
| JPS59191614A (ja) | ロボツトの制御装置 | |
| Singh | Requirements for User Interface Programming | |
| Jones | Concurrent OOLs | |
| JPS6332587A (ja) | 表示制御装置 | |
| Strite | BACI debugger: A GUI debugger for the BACI system | |
| Frenger | The growing machine, a pre-Forth language implementation | |
| JPS6250855B2 (ja) | ||
| JPS5971550A (ja) | 命令処理方式 | |
| Iliffe | DIGITAL SYSTEMS LABORATORY I | |
| JPH0221331A (ja) | マイクロコンピュータのプログラム制御方式 | |
| Brees | The architecture and design of a high level language processor |