JPH0553800A - ベーシツク・インタプリタのスタツク演算処理方法 - Google Patents

ベーシツク・インタプリタのスタツク演算処理方法

Info

Publication number
JPH0553800A
JPH0553800A JP21344791A JP21344791A JPH0553800A JP H0553800 A JPH0553800 A JP H0553800A JP 21344791 A JP21344791 A JP 21344791A JP 21344791 A JP21344791 A JP 21344791A JP H0553800 A JPH0553800 A JP H0553800A
Authority
JP
Japan
Prior art keywords
stack
character string
stored
storing
processing method
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
JP21344791A
Other languages
English (en)
Inventor
Masami Ogino
正実 荻野
Takao Shimada
隆夫 島田
Takao Hagiwara
隆生 萩原
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.)
Meidensha Corp
Meidensha Electric Manufacturing Co Ltd
Original Assignee
Meidensha Corp
Meidensha Electric Manufacturing Co 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 Meidensha Corp, Meidensha Electric Manufacturing Co Ltd filed Critical Meidensha Corp
Priority to JP21344791A priority Critical patent/JPH0553800A/ja
Publication of JPH0553800A publication Critical patent/JPH0553800A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】 BASICインタプリタで、文字列をスタッ
クに保存する場合、スタック内の隙間を無くし、その小
型化とメモリの節約を実現すると共に、文字列を演算処
理する際に何回もコピーする必要を無くし、処理速度を
向上させる。 【構成】 アドレスを格納するスタック1と文字列本体
を格納するスタック2との2つのスタックを使用する。
スタック2は、動的メモリ領域3内に拡張可能に設定す
る。文字列本体は演算子に従って順次スタック2に格納
し、そのアドレスをスタック1に格納する。文字列の大
きさがスタック2に入らない時は動的メモリ領域3内に
スタック2を設定し直す。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータのマイク
ロプログラミングで命令を1つずつ解釈しながら実行す
るベーシック・インタプリタ(BASIC interpreter)のス
タック演算処理方法に関し、特に、文字列の演算処理方
法に関する。
【0002】
【従来の技術】ベーシック・インタプリタにおいて、命
令のいくつかはスタックに関するものである。スタック
(stack)とは、一時的に記憶されるデータの格納に使用
される一群のメモリのことで、データ移動を伴う一連の
レジスタをハードウェアで形成してもよいし、読み/書
き用記憶領域の一部を割当ててもよい。いずれにせよ、
プログラムが割込み完了と同時に元の時点に戻れるよう
にレジスタの状態を保持し、演算の再開に必要なデータ
を記憶している。抽出する(読み出す)データは「スタ
ックを押し上げる」と言われ、記憶する(書き込む)デ
ータは「スタックを押し下げる」と言われる。スタック
・ポインタがスタックに挿入された最後の項目のアドレ
スを保持していて、該ポインタに従って読み出しが行わ
れるので、例えば末尾から3番目の文字列を読み出すの
は、まず末尾から1番目と2番目の文字列を読み出した
後でなければならない。尚、スタックから読み出された
情報は、再利用のためそのままスタック内にも残されて
いる。
【0003】ベーシック・インタプリタで、スタックを
ワークエリアとして文字列の演算に使用しようとする場
合、文字列の最大長を制限し、図5に示すように、文字
列の最大長Lに固定されたスタックをn個(通常n=
9)に使用して、文字列の演算を行っている。例えば、
A+Bの場合、図6(a)に示す如く文字列Aをスタッ
ク1に格納し、文字列Bをスタック2に格納するか、又
は図6(b)に示す如く同一スタック内で文字列Aに続
けて文字列Bをコピーし、スタックポインタ(SP)を
1減じるかである。
【0004】
【発明が解決しようとする課題】しかしながら、上記従
来の文字列演算方法では、下記の課題がある。
【0005】(1)固定長のスタックを使用しているの
で、文字列の最大長を大きくした場合、スタック全体が
大きくなる。複数のベーシック・プログラムが並列に走
るようなシステムでは全プログラムのスタックを均等に
大きくする必要があるので、メモリに無駄が生じる。
【0006】(2)ベーシック・インタプリタでは、一
般的に演算を逆ポーランド記述法に変換している。命令
の形式には、4項系列と3項系列と2項系列とポーラン
ド式の4種類があって、ポーランド式は操作コードとオ
ペランドを別個に取扱う方式で、正ポーランド式が操作
コードをオペランドの前に書くのに対して、オペランド
の後に書くのを逆ポーランド式と呼んでいる。逆ポーラ
ンド式に展開した式を固定長のスタックで解釈・実行す
ると、例えば前記A+Bの場合、文字列Bを2回コピー
することになる。即ち、A+Bを逆ポーランド式に展開
するとAB+となり、これを前方から順に解釈・実行す
るので、文字列Aと文字列Bをスタックにプッシュし、
演算子“+”が現れたときスタックに取込まれているA
とBを取出し、A+Bの演算を行って、その結果をスタ
ックに保存することになる。
【0007】本発明は、このような課題に鑑みて創案さ
れたもので、スタック内部の隙間を無くしてメモリを節
約し、スタックを小さく設定でき、文字列の加算時に何
回もコピーする必要がなく、処理速度を向上させるスタ
ック演算処理方法を提供することを目的としている。
【0008】
【課題を解決するための手段】本発明における上記課題
を解決するための手段は、ベーシック・インタプリタ
で、データを一時的に格納するスタックを文字列演算の
ワークエリアに使用するスタック演算処理方法におい
て、アドレス格納用の第1のスタックと動的メモリ内に
拡張可能に設けられた第2のスタックとを備え、第2の
スタックに文字列本体を演算子に従って順次格納し、そ
れらの各文字列のアドレスを第1のスタックに格納する
スタック演算処理方法によるものとする。
【0009】
【作用】本発明は、ベーシック・インタプリタで、文字
列の演算処理にスタックを使用する場合、2つのスタッ
クを使用し、文字列本体は動的メモリ内の拡張しか可能
なスタックに格納し、そのアドレスをもう1つのスタッ
クに格納するものである。文字列の本体を格納するスタ
ックが拡張可能な構造なので、大きな文字列を扱うベー
シックのスタックだけを必要に応じて拡張すればよい。
文字列をスタックに格納した時点で、文字列が既に結合
された状態になっていて、何回もコピーする必要はな
い。
【0010】
【実施例】以下、図面を参照して、本発明の実施例を詳
細に説明する。図1は、本発明の一実施例の説明図であ
る。図において、1はスタック1、2はスタック2で、
スタック2は、動的メモリ領域3内に設定され、その大
きさを拡張できるようになっている。前記大きさを拡張
する場合、スタック2に後続する部分が他で使用されて
いるときは、その動的メモリ領域3内の別の場所にスタ
ック2を新規設定し、それまでスタック2として使用し
ていた場所は使用可能領域と解釈される。
【0011】図2は、実施例のスタック1とスタック2
の内容を示す説明図で、スタック2に文字列が格納さ
れ、そのアドレスがスタック1に格納されている。図中
BPはスタック2の開始アドレスを示し、TPはスタッ
ク2の終了アドレスを示している。また、第1のスタッ
クポインタSP1はスタック1の次のデータ入力位置を
示し、第2のスタックポインタSP2は次に文字列を格
納する位置のアドレスを示している。
【0012】図3は、上記実施例の格納処理のフローチ
ャートである。同図に示す如く、スタック2に文字列を
入れる余地があれば、前記ポインタSP1の示すスタッ
クにSP2を入れたのちSP1を+1進め、スタック2
でポインタSP2の示す位置から文字列を格納し、その
文字列のサイズだけSP2に加算する。スタック2に文
字列を入れる余地がない場合は、使用中のスタック2を
解放し、拡張したスタック2を新たに獲得し、それに対
応させてBP,TP,SP2,SP1を変更する。
【0013】図4は、上記実施例の抽出処理の工程図で
ある。文字列を取出す際には前記ポインタSP1を−1
戻し、該SP1の示すスタックの内容をSP2に入れ
る。
【0014】本実施例は下記の効果が明らかである。
【0015】(1)2つのスタックを使って文字列を格
納するようにしたので、スタックの中の空部屋がなくな
り、メモリが節約できる。
【0016】(2)文字列本体を格納するスタックが拡
張可能な構造なので、スタックを小さく設定できる。大
きな文字列を扱うベーシックのスタックだけを、必要に
応じて拡張すればよい。
【0017】(3)文字列をスタックに格納した時点
で、文字列が既に結合された状態になっているので、文
字列の加算(結合)時に何回もコピーする必要がなく、
処理速度が向上する。
【0018】
【発明の効果】以上、説明したとおり、本発明によれ
ば、スタック中の隙間を無くしてメモリを節約し、スタ
ックを小さく設定でき、文字列の加算時に何回もコピー
する必要がなく、処理速度を向上させるスタック演算処
理方法を提供することができる。
【図面の簡単な説明】
【図1】本発明の一実施例の説明図。
【図2】一実施例のスタックの説明図。
【図3】一実施例の格納処理のフローチャート。
【図4】一実施例の抽出処理の工程図。
【図5】従来例の説明図。
【図6】従来例の説明図。
【符号の説明】
1,21…スタック 1、2,22…スタック 2、3…動的メモリ領域。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ベーシック・インタプリタで、データを
    一時的に格納するスタックを文字列演算のワークエリア
    に使用するスタック演算処理方法において、アドレス格
    納用の第1のスタックと動的メモリ内に拡張可能に設け
    られた第2のスタックとを備え、第2のスタックに文字
    列本体を演算子に従って順次格納し、それらの各文字列
    のアドレスを第1のスタックに格納することを特徴とす
    るスタック演算処理方法。
JP21344791A 1991-08-26 1991-08-26 ベーシツク・インタプリタのスタツク演算処理方法 Pending JPH0553800A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP21344791A JPH0553800A (ja) 1991-08-26 1991-08-26 ベーシツク・インタプリタのスタツク演算処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21344791A JPH0553800A (ja) 1991-08-26 1991-08-26 ベーシツク・インタプリタのスタツク演算処理方法

Publications (1)

Publication Number Publication Date
JPH0553800A true JPH0553800A (ja) 1993-03-05

Family

ID=16639380

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21344791A Pending JPH0553800A (ja) 1991-08-26 1991-08-26 ベーシツク・インタプリタのスタツク演算処理方法

Country Status (1)

Country Link
JP (1) JPH0553800A (ja)

Similar Documents

Publication Publication Date Title
KR950033859A (ko) 부동 소숫점 유니트에서의 다이나믹 레지스터 관리 장치 및 방법
JPH0410108B2 (ja)
JPS6137654B2 (ja)
JPH0553800A (ja) ベーシツク・インタプリタのスタツク演算処理方法
JPS5848099B2 (ja) 文字パタ−ン発生装置
JP2671160B2 (ja) 例外処理方式
JPH0552539B2 (ja)
JP3490191B2 (ja) 計算機
JP2895892B2 (ja) データ処理装置
JPS60134937A (ja) アドレス拡張装置
JP2716254B2 (ja) リストベクトル処理装置
JP3049726B2 (ja) メモリ領域クリア方式
JP2576589B2 (ja) 仮想記憶アクセス制御方式
JPS61100836A (ja) 移動命令論理比較命令処理方式
JP2652973B2 (ja) 画像処理装置
JPS6162952A (ja) アドレス変換装置
JP2798492B2 (ja) リストベクトル処理装置
JP2705166B2 (ja) データ処理装置
JP2528394B2 (ja) 演算制御装置
JPS6337412B2 (ja)
JPS6142076A (ja) ベクトルマスク情報制御装置
JPH0588890A (ja) データ処理方法
JPH0546581B2 (ja)
JPS5846444A (ja) 電子計算機
JPH05289712A (ja) 言語変換装置