JPS6391740A - Stack control system - Google Patents

Stack control system

Info

Publication number
JPS6391740A
JPS6391740A JP23775986A JP23775986A JPS6391740A JP S6391740 A JPS6391740 A JP S6391740A JP 23775986 A JP23775986 A JP 23775986A JP 23775986 A JP23775986 A JP 23775986A JP S6391740 A JPS6391740 A JP S6391740A
Authority
JP
Japan
Prior art keywords
frame
stack
pointer
stacks
allocated
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
JP23775986A
Other languages
Japanese (ja)
Inventor
Yoshihide Tsujihata
辻畑 好秀
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP23775986A priority Critical patent/JPS6391740A/en
Publication of JPS6391740A publication Critical patent/JPS6391740A/en
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

PURPOSE:To always secure and release frames by a last-in first-out method by providing a frame pointer indicating the latest frame and plural stack pointers, which can be allocated to the frames next time, in the frame of each stack. CONSTITUTION:In using a stack (b) first time, the frame b1 is secured. The leading address of the next frame b2 is held in the stack pointer S24 in the frame b1, while the leading address of the frame c1 in a stack (c) is held in the stack pointer S31. In this time, the leading address of the frame b1 is held in the frame pointer (a). In using the stack (c) next time, the frame pointer (a) reads the stack pointer S31 in the frame b1, and according to the read-out value, the frame c1 is secured. The stack pointer S24 in the frame b1 is moved to the stack pointer S24 in the frame c1 as it is, and the leading address of the frame c2 is held in the stack pointer S31.

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は電子計算機システムにおいて、処理ルーチンの
切り替る際にレジスタ等の内容を退避するのに用いられ
るスタックの制御方式に係り、特に性質の異なる複数の
スタックに任意の順序でフレームを確保するのに好適な
スタック制御方式に関する。
[Detailed Description of the Invention] [Field of Industrial Application] The present invention relates to a stack control method used to save the contents of registers and the like when switching processing routines in an electronic computer system, and particularly relates to a method of controlling a stack used for saving the contents of registers etc. when switching processing routines. The present invention relates to a stack control method suitable for securing frames in an arbitrary order in a plurality of different stacks.

〔従来の技術〕[Conventional technology]

一般にスタックは複数のフレーム(データ格納エリア)
からなり1次にデータを格納するフレームはスタックポ
インタで示される。スタックが1個の場合、該スタック
に1フレ一ム分データを格納したら、該フレーム分だけ
スタックポインタを更新すればよく、スタック制御は簡
単である。−方、スタックポインタが複数個ある場合、
従来は各スタックを各々全く独立に使用するか、あるい
は、各スタックをチェインして使用しく即ち、あるスタ
ックがオーバフローしたら次のスタックに切り替える)
、論理的には一つのスタックとして使用するかのいずれ
かであり、スタック制御は、スタック1個の場合と基本
的に同様であった。
In general, a stack consists of multiple frames (data storage area)
The frame that stores data primarily is indicated by a stack pointer. When there is one stack, once data for one frame is stored in the stack, the stack pointer can be updated by the number of frames, and stack control is simple. - On the other hand, if there are multiple stack pointers,
Traditionally, each stack was used completely independently, or each stack was chained; in other words, if one stack overflowed, it was switched to the next stack)
, either logically used as one stack, and stack control was basically the same as in the case of one stack.

なお、スタックポインタによるスタック制御は、例えば
特開昭54−74646号公報に記載されている。
Note that stack control using a stack pointer is described in, for example, Japanese Patent Laid-Open No. 74646/1983.

〔発明が解決しようとする問題点〕[Problem that the invention seeks to solve]

近年、24ビツトと31ビツトアドレスシングモードの
ように、複数のアドレシングモードをサポートする電子
計算機システムが出現してする。
In recent years, computer systems have emerged that support multiple addressing modes, such as 24-bit and 31-bit addressing modes.

この場合、ユーザプログラムでアドレシングモードの切
替えを意識させないためには、レジスタ等の内容退避に
使用するスタックを各アドレシングモード対応に独立に
用意し、がっ、これらのスタックを任意の順序で使用し
、しがも個々のスタック内では後入れ先出しが保証され
、複数スタック全体でもフレーは常に後入れ先出しで確
保・解放が行われる必要がある。従来技術は、複数のス
タックを任意の順序で使用することについては配慮され
ていない。
In this case, in order to make the user program unaware of addressing mode switching, prepare separate stacks for saving the contents of registers, etc. for each addressing mode, and then use these stacks in any order. However, within each stack, last-in, first-out is guaranteed, and even across multiple stacks, frames must always be allocated and released on a last-in, first-out basis. The prior art does not consider using multiple stacks in any order.

本発明の目的は、複数のスタックに対しては。The purpose of the present invention is to address multiple stacks.

フレームが個々のスタックに割り付られる順番は任意で
あるにもがメわらず、個々のスタック内では後入れ先出
しが保証されており、又、複数スタック全体でもフレー
ムは常に後入れ先出しで確保・解放が行われるスタック
制御方式を提供することにある。
Although the order in which frames are allocated to individual stacks is arbitrary, last-in, first-out is guaranteed within each stack, and frames are always allocated on a last-in, first-out basis across multiple stacks. The object of the present invention is to provide a stack control method in which release is performed.

〔問題点を解決するための手段〕[Means for solving problems]

本発明は、複数のスタックを具備する電子計算機システ
ムにおいて、最新のフレームの先頭アドレスを指してい
る複数スタック全体に共通な一つのフレームポインタを
設けると共に、各々のスタックのフレーム内に、自スタ
ック及び他スタックの次にフレームの割付けが可能なア
ドレスを示す複数のスタックポインタを設ける。
The present invention provides, in a computer system equipped with a plurality of stacks, one frame pointer common to all the plurality of stacks pointing to the start address of the latest frame, and a frame pointer that points to the start address of the latest frame. A plurality of stack pointers are provided that indicate addresses to which frames can be allocated next to other stacks.

〔作 用〕[For production]

スタックをn個とする。フレームポインタが指すクレー
ム中には、最新時点でのn個のスタックの利用最終端ア
ドレスが設定されているので、次に何番目のスタックを
使用するか決定できれば、任意のスタック内に次のフレ
ームを確保することができる。
Let there be n stacks. In the claim pointed to by the frame pointer, the final end address of the n stacks used at the latest point in time is set, so if you can determine which stack to use next, you can place the next frame in any stack. can be ensured.

次のフレームをスタックi中に確保するときには以下の
動作を行う。
When securing the next frame in stack i, the following operations are performed.

(1)次のフレームポインタとして、現在のフレームポ
インタが指すフレーム中のスタックポインタiをそのま
N使用する。
(1) As the next frame pointer, the stack pointer i in the frame pointed to by the current frame pointer is used as is.

(2)次のフレーム中に保持するスタックポインタiか
らスタックポインタi−1、及びスタックポインタi+
1からスタックポインタnについては、現在のフレーム
中の対応するスタックポインタの値をそのまS使用する
(2) Stack pointer i to stack pointer i-1 and stack pointer i+ held during the next frame
For stack pointers 1 to n, the value of the corresponding stack pointer in the current frame is used as is.

(3)次のフレーム中のスタックポインタ1については
、現在のフレームポインタに次のフレーム長を加えたア
ドレスを設定する。
(3) For stack pointer 1 in the next frame, set the address of the current frame pointer plus the next frame length.

このようにして、任意の時点のフレームポインタから、
任意のスタック内に任意の順序でフレームを確保するこ
とが可能となる。
In this way, from the frame pointer at any point in time,
It becomes possible to allocate frames in any order in any stack.

〔実施例〕〔Example〕

以下、本発明の一実施例について図面により説明する。 An embodiment of the present invention will be described below with reference to the drawings.

第1図は本発明の一実施例で、24ビツトと31ビツト
アドレシングモードに対応した2種類のスタックと、フ
レームポインタ及び各スタックのフレーム中のスタック
ポインタの関係を示したものである。
FIG. 1 shows one embodiment of the present invention, showing two types of stacks corresponding to 24-bit and 31-bit addressing modes, and the relationship between the frame pointer and the stack pointer in the frame of each stack.

第1図において、特定番号の汎用レジスタ1上には、−
置所しいフレームの先頭アドレスを示すフレームポイン
タaがある。このフレームポインタaが示すフレームを
現在のフレームと呼ぶものとする。メモリ2上には、2
4ビットアドレス空間に対応したスタックbと31ビッ
トアドレス空間に対応したスタックCの2種類のスタッ
クがある6スタツクb及びC内に後入れ先出しで確保さ
れる一回の割り付け・解放していく記憶域の単位をフレ
ームとしてスタックb中のフレームをb工(i=1.2
.・・・)、スタックC中のフレームをC4(1=1−
+ 2+・・・)とする。スタックb及びCの各フレー
ム内には、スタックb中で次にフレームの割樹付が可能
なアドレスを示す24ビットアドレス空間用のスタック
ポインタS24と、スタックC中で次にフレームの割れ
付けが可能なアドレスを示す31ビットアドレス空間用
のスタックポインタS31の2つのスタックポインタを
保持している。
In FIG. 1, on general-purpose register 1 with a specific number, -
There is a frame pointer a that indicates the starting address of the incorrect frame. The frame indicated by frame pointer a is called the current frame. On memory 2, there are 2
There are two types of stacks: stack b corresponding to 4-bit address space and stack C corresponding to 31-bit address space.6 stacks B and C have memory that is allocated and released once, secured on a last-in, first-out basis. The frame in the stack b is defined as the unit of the area by the frame b (i=1.2
.. ), the frame in stack C is set to C4 (1=1-
+ 2 +...). In each frame of stacks b and C, there is a stack pointer S24 for the 24-bit address space indicating the address at which the next frame can be allocated in stack b, and a stack pointer S24 indicating the address at which the next frame can be allocated in stack C. It maintains two stack pointers: a stack pointer S31 for a 31-bit address space indicating possible addresses.

第1図は、スタックb及びC中のb□→C工→b2→c
2の順にフレームを確保した状態を示したものである。
Figure 1 shows b □ → C engineering → b2 → c in stacks b and C.
This figure shows a state in which frames are secured in the order of 2.

即ち、はじめスタックbを使用する場合、フレームb□
を確保し、該フレームb1内のスタックポインタS24
には次フレームb2の先頭アドレスを保持し、スタック
ポインタS31にはスタックCのフレームC□の先頭ア
ドレスを保持する。この時、フレームポインタaには、
フレームb工の先頭アドレスが保持される。次に、スタ
ックCを使用する場合、フレームポインタaによりフレ
ームb1内のスタックポインタ331を読み出し、その
値によりフレームC1を確保し、該フレームC工内のス
タックポインタS24にはフレームb1内のスタックポ
インタS24をそのま\移し、スタックポインタS31
には次フレームc2の先頭アドレスを保持する。この時
、フレームポインタaには、フレームC□の先頭アドレ
スが保持される。次に、スタックbを再び使用する場合
、フレームポインタaによりフレームC□のスタックポ
インタS24を読み出し、その4jffによりフレーム
b2を確保する。そして、該フレームb2内のスタック
ポインタS24には次フレームb3の先頭アドレスを入
れ、スタックポインタS31にはフレームc1内のスタ
ックポインタS31をそのま\移す。この時、フレーム
ポインタaには、フレームb2の先頭アドレスが保持さ
れる。
That is, if stack b is used initially, frame b□
and secure the stack pointer S24 in the frame b1.
holds the start address of the next frame b2, and the stack pointer S31 holds the start address of frame C□ of the stack C. At this time, frame pointer a has
The start address of frame B is held. Next, when using stack C, read stack pointer 331 in frame b1 using frame pointer a, secure frame C1 using that value, and set stack pointer S24 in frame C to stack pointer 331 in frame b1. Move S24 as is and set stack pointer S31
holds the start address of the next frame c2. At this time, the start address of frame C□ is held in frame pointer a. Next, when stack b is to be used again, stack pointer S24 of frame C□ is read using frame pointer a, and frame b2 is secured using its 4jff. Then, the start address of the next frame b3 is entered into the stack pointer S24 in the frame b2, and the stack pointer S31 in the frame c1 is directly transferred to the stack pointer S31. At this time, the start address of frame b2 is held in frame pointer a.

次に、スタックCを使用する場合、フレームポインタa
によりフレームb2内のスタックポインタS!31を読
み出し、その値によりフレームc2を確保する。
Next, when using stack C, frame pointer a
Therefore, the stack pointer S! in frame b2 is set to S! 31 and secures frame c2 using that value.

なお、第1図に点線で示した経路は、フレーム間の後方
チェインを持たせることにより、上記b□→c1→b2
→c2というフレームを確保する順番はbl、c工T 
S21 c、に対応するプログラムの呼び出し順番と一
致させることができることを示したものである。
Note that the path indicated by the dotted line in FIG. 1 is created by providing a backward chain between frames.
→The order to secure the frame c2 is bl, c, and T.
This shows that it is possible to match the calling order of the program corresponding to S21c.

第2図は、第1図のフレームc2のあと、24ビットア
ドレス空間のスタックbにフレームb3Tb4を割り付
けた後の状態を示したものである。
FIG. 2 shows the state after frame b3Tb4 is allocated to stack b in the 24-bit address space after frame c2 in FIG. 1.

スタックの割り付は要求は、次に割り付けるフレームの
記憶域の大きさと、次にフレームを24ビットアドレス
空間と31ビットアドレス空間のどちらに割り付けるか
が決定された後になされる。
The stack allocation request is made after determining the storage size of the next frame to be allocated and whether the frame will be allocated to a 24-bit address space or a 31-bit address space.

フレームポインタaが24ビットアドレス空間用スタッ
クbのフレームを示している場合(C2のあとに割り付
ける場合)でも、31ビットアドレス空間用スタックC
のフレームを示している場合(b、のあとにb4を割り
付は場合)でも、次に24ビットアドレス空間用スタッ
クb中にフレームを確保するときには、次に示す同一の
動作を行えば良い。
Even if frame pointer a points to a frame in stack b for 24-bit address space (when allocated after C2), stack C for 31-bit address space
(b4 is allocated after b), the next time a frame is secured in stack b for 24-bit address space, the same operation described below can be performed.

(1)次のフレームポインタaの値として現在のフレー
ム中の24ビットアドレス空間用のスタックポインタS
24の値をそのまへ使用する。
(1) Stack pointer S for the 24-bit address space in the current frame as the value of the next frame pointer a
Use the value of 24 as is.

(C2−+b3のとき  a=aが示すC2中の524
b3→b4のとき  a = aが示すす、中の824
)(2)次のフレーム中の31ビットアドレス空間用の
スタックポインタS31の値として、現在のフレーム中
の31ビットアドレス空間用のスタックポインタS31
の値をそのまN使用する。
(When C2-+b3, 524 in C2 indicated by a=a
When b3→b4, a = 824 in the case indicated by a
) (2) Stack pointer S31 for the 31-bit address space in the current frame as the value of the stack pointer S31 for the 31-bit address space in the next frame.
Use the value of N as is.

(C2−+b、のとき  b、中の531=aが示すC
2中の531b、−*b4のとき  b4中の831=
aが示すb3中の831)(3)次のフレーム中の24
ビットアドレス空間用のスタックポインタS24の値と
しては、現在のフレーム中の24ビットアドレス空間用
のスタックポインタS24に、次のフレームとして割り
付ける記憶域の大きさを加えたアドレスとする。
(When C2-+b, b, 531=a indicates C
531b in 2, when -*b4 831 in b4=
831 in b3 indicated by a (3) 24 in the next frame
The value of the stack pointer S24 for the bit address space is the address obtained by adding the size of the storage area to be allocated as the next frame to the stack pointer S24 for the 24-bit address space in the current frame.

(cz→b、のとき す、中の524=aが示すC2中の834+b、の大き
さ。
(When cz→b, the size of 834+b in C2 indicated by 524=a inside.

b3→b4のとき b4中の824=aが示すす、中のS24+b4の大き
さ逆に、任意の時点のフレームポインタaに対し、次に
31ビットアドレス空間用のスタックCにフレームを割
り付けるときにも上記と同様な動作を行えば良い。但し
、この場合には、S24と831を上記とは入れ替えて
llot作する。
When b3→b4, 824=a in b4 indicates the size of S24+b4.Conversely, when allocating a frame to the frame pointer a at an arbitrary point in the stack C for the 31-bit address space, You can perform the same operation as above. However, in this case, S24 and 831 are replaced with the above and a lot is created.

以上のようにスタックの管理を行うことにより、任意の
時点で任意の順序で24ビツト又は31ビットアドレス
空間内にある2種類のスタックbおよびCを使用できる
。又、これをプログラム制御の面からとらえると、24
ビツト又は31ビットアドレス空間内のスタックを使用
するプログラムを任意の順序で呼び出すことが可能とな
る。
By managing the stacks as described above, two types of stacks b and C within the 24-bit or 31-bit address space can be used at any time and in any order. Also, if we look at this from the perspective of program control, 24
It is possible to call programs that use a stack in a bit or 31-bit address space in any order.

〔発明の効果〕〔Effect of the invention〕

以上の説明から明らかな如く1本発明によれば、複数の
スタックを任意の順序で、しかも各スタック内及び複数
スタック全体で後入れ先出しの順番を維持して使用する
ことができる。
As is clear from the above description, according to one aspect of the present invention, multiple stacks can be used in any order, while maintaining a last-in, first-out order within each stack and across multiple stacks.

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

第1図は本発明の一実施例のスタックおよびフレームポ
インタとスタックポインタの関係を示す図、第2図は本
発明によるフレームポインタとスタックポインタの更新
を説明する図である。 a・・・フレームポインタ、  b、c・・・スタック
、S24.S34・・・スタックポインタ。 ;°−1 第1図
FIG. 1 is a diagram showing a stack and the relationship between a frame pointer and a stack pointer according to an embodiment of the present invention, and FIG. 2 is a diagram illustrating updating of the frame pointer and stack pointer according to the present invention. a...Frame pointer, b, c...Stack, S24. S34...Stack pointer. ;°−1 Figure 1

Claims (1)

【特許請求の範囲】[Claims] (1)複数のスタック内に任意の順序でフレームを確保
するスタック制御方式において、最新のフレームを指示
している各スタックに共通のフレームポインタと、各ス
タックの既に確保されたフレーム内に、自スタックおよ
び他スタックの次にフレームの割付けが可能なアドレス
を指示している複数のスタックポインタとを設け、ある
スタックの使用要求が発生すると、前記フレームポイン
タが示すフレームより使用要求に対応するスタックのス
タックポインタを読み出し、該スタックポインタの値に
より当該スタックにフレームを確保することを特徴とす
るスタック制御方式。
(1) In a stack control method that allocates frames in multiple stacks in any order, a frame pointer common to each stack pointing to the latest frame and a self-linked frame pointer in the already allocated frame of each stack are used. A stack and multiple stack pointers pointing to addresses where frames can be allocated next to other stacks are provided, and when a request to use a certain stack occurs, the frame indicated by the frame pointer is allocated to the stack corresponding to the request. A stack control method characterized by reading a stack pointer and securing a frame on the stack based on the value of the stack pointer.
JP23775986A 1986-10-06 1986-10-06 Stack control system Pending JPS6391740A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP23775986A JPS6391740A (en) 1986-10-06 1986-10-06 Stack control system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP23775986A JPS6391740A (en) 1986-10-06 1986-10-06 Stack control system

Publications (1)

Publication Number Publication Date
JPS6391740A true JPS6391740A (en) 1988-04-22

Family

ID=17020028

Family Applications (1)

Application Number Title Priority Date Filing Date
JP23775986A Pending JPS6391740A (en) 1986-10-06 1986-10-06 Stack control system

Country Status (1)

Country Link
JP (1) JPS6391740A (en)

Similar Documents

Publication Publication Date Title
EP0523863B1 (en) Digital data processor for high level instructions
US3778776A (en) Electronic computer comprising a plurality of general purpose registers and having a dynamic relocation capability
JPS6391740A (en) Stack control system
JPS61136131A (en) Information processor
JPH0756633B2 (en) Task switching method
JPH0833869B2 (en) Data processing device
JPH0715623B2 (en) Display device
JPH03154130A (en) Task switching system
JPH04223537A (en) Image file storing system
JPH01233628A (en) Memory address conversion control circuit
JPS5882344A (en) Interruption control system
JPS63214806A (en) Programmable controller
JPS60169946A (en) Task control system
JPH01309118A (en) File/device control system
JPS63155338A (en) Control system for record of program executing history
JPS61260344A (en) Input and output processor
JPS60169945A (en) Stack control system
JPH06110773A (en) Memory controller
JPS5817587A (en) Blank area controller for main memory
JPH01230134A (en) Information processor
JPS61125648A (en) System call control system
JPH01283653A (en) Memory pool managing system
JPS63118852A (en) Control system for virtual memory
JPH0314073A (en) Vector processing system
JPH0566625B2 (en)