JPH0126092B2 - - Google Patents

Info

Publication number
JPH0126092B2
JPH0126092B2 JP56102900A JP10290081A JPH0126092B2 JP H0126092 B2 JPH0126092 B2 JP H0126092B2 JP 56102900 A JP56102900 A JP 56102900A JP 10290081 A JP10290081 A JP 10290081A JP H0126092 B2 JPH0126092 B2 JP H0126092B2
Authority
JP
Japan
Prior art keywords
variable
value
function
name
list
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.)
Expired
Application number
JP56102900A
Other languages
English (en)
Other versions
JPS584452A (ja
Inventor
Akira Hatsutori
Hiroshi Hayashi
Akio Shinagawa
Takeshi Shinoki
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP56102900A priority Critical patent/JPS584452A/ja
Priority to DE8282303394T priority patent/DE3270597D1/de
Priority to EP82303394A priority patent/EP0069525B1/en
Priority to US06/393,533 priority patent/US4517640A/en
Publication of JPS584452A publication Critical patent/JPS584452A/ja
Publication of JPH0126092B2 publication Critical patent/JPH0126092B2/ja
Granted legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】 本発明は、数値ではなく記号を処理するリスプ
(LispすなわちList Processor)のような関数型
言語用の関数型情報処理装置に係り、とくに関数
が実行される環境(変数の値として何をつかうか
ということ)をコンピユータ内部の記憶回路にス
タツク構造的に格納するにあたつて、そのスタツ
クに格納された変数の検索時間を短縮するために
上記スタツクメモリの外部に連想バツフアを設け
ることを特徴とする関数型情報処理装置に関す
る。
リスプは第1図に示すような2進木リストすな
わち記号のつながりを閉路を含まない節点と枝の
集合である木構造(第1図a)であらわしたもの
を扱うものである。すなわち、第1図aのような
木構造であらわされる記号のつながりを第1図b
のように各ノードからでる枝が2本づつである2
進木表現に直した形で第1図cに示されるような
主記憶装置に格納する。すなわち、各リストセル
は主記憶装置の1語または2語からなりその各セ
ルは左、右2つの部分からなる。各セルの左の部
分は普通はある記号、たとえばAという文字の記
号のビツトパターンが格納され、右の部分はその
記号とつながるべき、次の記号を格納しているセ
ルの番地を格納することによつて2つセルが連結
していることを表現する。従つて、第1図cのリ
ストセルのつながりは、第1図bの2進木リスト
を記憶回路上で実現しているものである。リスプ
は、このようなリスト構造をリスプ言語を実行す
ることによつて、プロセツサを使つて動的に変換
し、目的のリスト構造を得る装置である。
リスプにおいてプログラムするということは、
2進木リストを変換するために必要な以下の5つ
の基本関数を組み合せて形成される関数を定義
し、その値を求めることである。
5つの基本関数とは、 (イ) car〔X〕カール 2進木リストXの左の枝の先にある2進木リ
ストを値とする。
(ロ) cdr〔X〕クダー 2進木リストXの右の枝の先にある2進木リ
ストを値とする。
(ハ) cons〔X:Y〕コンス 新しいリスト・セルを設け、その左の枝を2
進木リストXとし右の枝を2進木リストYとす
るような新たな2進木リストを作つてそれを値
とする。
(ニ) atom〔X〕アトム Xがアトムの時、真という値(“T”や“*
T*”で示す)を取り、そうでないとき、偽
(“NIL”というアトムで示す)とする。
(ホ) eq〔X:Y〕イク XとYが同じ2進木リストの時、真の値
(“T”や“*T*”)を取り、そうでない時、
偽の値(“NIL”)を取る。
例えば、f(x、y)=xy+yxの定義は f=λ〔〔X、Y〕;XY+YX〕と表わすことによ
り、f(2、3)の値は、 λ〔〔X、Y〕;XY+YX〕〔2、3〕=23+32 となり、変数の対応関係を明確に規定することが
できる。
ここで、(X、Y)は仮引数と呼ばれる変数で
あつて(2、3)は(X、Y)のそのときの値で
ある実引数と呼ばれるものである。そして、この
実引数(2、3)を仮引数(X、Y)に代入する
ことを束縛(binding)すると呼び、実引数を仮
引数に束縛することによつて関数の値、この場合
23+32という目的のリストをつくることがリスプ
を実行することである。したがつて、リスプすな
わち関数型情報処理装置にあつては、仮引数と実
引数をどのように束縛するかが問題となる。
本発明においては、変数の束縛値(Bind
Value)が線形リスト(環境リスト)すなわち
FILO(First In Last OutまたはPush down Pop
up)型スタツクへ変数名と値の対で格納される。
ここでFILO型スタツクとは前記記憶回路上で2
進木リスト構造でデータを間接アドレス方式(す
なわち、あるセルに次につながるセルのアドレス
を格納しておく方式)で格納していくことであ
る。この変数名と値との対を格納していく順序
は、引数変数の関数が呼ばれたときに実引数を値
とする順番になる、いわゆるダイナミツクスコー
ピング(Dynamic Scoping)型の環境をもつ関
数型言語であつて、その変数の値がなにであるか
を参照する手順は、基本的には上記環境リスト
(又はスタツク)を先頭からシーケンシヤルに検
索して最初に見つかつた値を使う、いわゆるデイ
ープバインド(Deep Bind)型変数束縛を行な
う場合に、大域変数(関数の引数のように関数を
起動する時に束縛値が決定されている局所変数と
は異なり、それ以前からその値が決められている
変数)を捜し出すアクセスタイムを短縮するため
に主記憶装置の他に連想バツフアを設けることが
本発明の特徴である。
一般に、第2図に示すように関数型とは、その
プログラム構造や実行形態が呼ぶべき関数すなわ
ち実行するべき関数f=λ〔〔X、Y〕;XY+YX
の仮引数(X、Y)へ実引数(2、3)を結合す
なわち束縛(バインド)し、呼ばれた(起動され
た)関数は、渡されたすなわち代入されるべき実
引数や大域変数を参照して所定の手続きを実行
し、その関数の値23+32を呼び側へ返し、それ以
外の副作用(環境を変更すること)はないものを
言う。副作用については、本発明の要旨からみ
て、説明を省略する。
関数を呼び出す(Call)場合、その仮引数への
実引数の束縛の方法には、デイープバインド法と
シヤローバインド(Shallow Bind)法がある。
デイープバインド法は前述したように、束縛さ
れた変数名(X、Y)と値(2、3)の対(ペ
ア、すなわち、Xは2、Yは3の対)を線型リス
トやスタツク構造に格納し、変数値を参照する場
合には、最後に束縛された方向からシーケンシヤ
ルにたどり、最初に発見したその変数の値を使う
という環境の構成である。
すなわち、デイープバインド法は、第3図aに
示すように、主記憶装置の記憶単位である語の構
成が左、右2つの部分に分かれ、1つのセルにな
つていて、左部に変数名を格納し、右部はそのセ
ルが接続する次のセルのアドレスを格納すること
によつて次のセルのその変数の値を知ることがで
き、沢山の変数がある場合は、第3図aのように
連結し、等価的に第3図bのようなFILO型のス
タツクを構成するものである。
関数コール(Call)の時に、引数変数に値をバ
インドするときには、環境リスト(または環境ス
タツク)の検索出発点の方向から、その名前と値
の対をつなげ、検索出発点ポインタを新たに付加
した項目の先頭へ更新する。すなわち、第3図a
の主記憶装置上では、先頭の1つのセルn+1を
設けることに対応し、そのセルがつながる次のセ
ルがnであることに対応する。これは、第3図b
においては、スタツクのプツシユ(Push)動作
Aに対応し、その変数名がn+1であつて、その
値が(n+1)であるセルをスタツクの最下段に
プツシユして入れることに対応する。関数のリタ
ーン(Return)時には、その関数がコールされ
たときの状態に検索出発点ポインタを戻す。すな
わち、第3図aの主記憶回路上では、先頭のセル
n+1を1つとつて、セルnを先頭にすることに
対応し、第3図bでは、n+1とその値(n+
1)をポツプ動作Bで外に出すことを意味する。
デイープバインド法の長所は、スタツクのプツシ
ユポツプ動作が簡単であるので関数コール時の引
数変数のバインド処理関数リターン時の引数変数
のアンバインド(Unbind)処理のオーバーヘツ
ドが比較的少ないことであり、短所は、大域変数
(自由変数とも呼ぶ)のように、かなり以前にバ
インドされた変数すなわちスタツクの奥の方にあ
る変数の参照に時間がかかることである。
シヤローバインド法は、各変数毎に、その値を
保持するランダムアクセス域(Value Cellと呼
ぶ)を設け、関数コール時には引数変数のバリユ
ーセルへその実引数を格納し、バリユーセルに以
前から存在した値を、線形リスト(またはスタツ
ク)へ名前と旧値の対として格納し、変数参照は
対応するバリユーセルを読むだけでよく、関数リ
ターン時には、その引数変数のバリユーセルへ線
形リスト(またはスタツク)へ格納してあつた旧
値を戻す。シヤローバインド法の長所は、変数参
照時間が短かいことであり、短所は関数コール時
の引数変数のバインド処理、関数のリターン時の
アンバインド処理のオーバーヘツドが大きいこと
である。
以上のようにデイープバインド法はシヤローバ
インド法に比べて、引数のバインド/アンバイン
ド処理については高速であるが、変数の参照とく
に大域変数の参照が遅い。この点を改良するのが
本発明の方式である。
本発明の目的は、上述したような関数型情報処
理装置において、データ間のつながりを表わすリ
ストをデイープバインド方式に従つてスタツクメ
モリ内に格納される変数を参照するアクセスタイ
ムを短縮するために主記憶装置の外部に連想バツ
フアを設けた関数型情報処理装置を提供すること
にある。
本発明の特徴とするところは、プログラムの構
造及び実行形態が仮引数としての変数名と実引数
としての変数値の対として環境リストである
First−In−Last−Out型のスタツクメモリへ格納
することによつて呼ぶべき関数の仮引数変数へ実
引数を束縛し、呼ばれた関数は変数の値を参照す
る場合、上記環境リストの最近の束縛値を使つて
処理を行い、その関数の値が得られれば、関数の
仮引数変数を上記環境リストから削除して上記関
数値をリターンするという一連の処理を繰返す関
数型情報処理装置において変数名、変数値および
その変数が束縛されている前記環境リスト上の位
置情報を対として各ワードが構成され、プログラ
ム実行中に変数を参照する場合には変数名をキー
として連想検索し内部変数と一致がとれれば対応
する変数値を読出して使い、不一致であれば前記
環境リストから変数名を検索し最近にみつかる変
数値をつかう処理装置の動作にともなつてその変
数名と変数値を前記環境リスト上の位置情報も加
えて新しく書込み、引数変数名と名前が一致する
ワードを削除する機能を有し、変数値を変更する
場合には、上記環境リスト上の最近値を変更する
情報処理装置の動作と共にその変数が内部に存在
すればその変数値のみを変更する機能を有し、関
数がその呼び側に復帰する場合には、その引数名
と束縛値の対を上記環境リストから外す処理装置
の動作に伴なつてその環境リスト上の位置情報を
キーとして対応するワードを削除する機能を有す
る連想バツフアを設けた関数型情報処理装置であ
る。
以下図面を参照して本発明の一実施例を説明す
る。
まず、スタツク上のデイープバインド方式では
次のような処理が行なわれる。関数呼び出しが起
こる手前で実引数がそろうとスタツクは第4図a
のようになる。ここでSTPはスタツクトツプポ
インタである関数が呼び出されると呼び出された
関数側で第4図bのような形になる。以上のよう
な処理によつて第4図cのようにスタツク中の関
数毎の情報間は、旧FPによつてリンクされる。
ここでFPはフレームポインタすなわち現在実行
している関数の制御情報の先頭を指すものであ
る。このリンクによつて変数の参照があつたとき
それをたどつて変数名をサーチすることによつて
その値を得ることができる。
たとえば F1(Z)=Z2+F2(10) F2(x)=x2+x+F3(7) F3(x)=x5+1+Z という関係にある3つの関数において、F1(3)の
値を求める場合を説明する。関数F1(Z)をコー
ルする時点で仮引数Zは3に束縛されて、環境リ
スト上にその束縛関係が格納される。しかし、
F1(Z)の計算には関数F2(x)の値F2(10)が必要
であるので、関数F2(x)をコールする。このコ
ール時において仮引数xは10に束縛されて環境リ
スト上にその束縛関係が格納される。しかし、ま
た、F2(10)の計算には関数F3(x)の値F3(7)が必
要であるので、関数F3(x)をコールする。この
コール時において、仮引数xは7に束縛されて環
境リスト上にその束縛関係が格納される。しか
し、F3(x)の値F3(7)を求めるのにF3(x)=x5
+1+ZのZは大域変数、すなわち、その時点で
束縛されない変数であるが、ZはF1(Z)をコー
ルする時点でZ=3に束縛されているので、環境
リスト上をさかのぼつてZが3であることをサー
チするわけである。そしてはじめてF3(7)=75
1+3が求まり、F2(x)にリターンしてF2(10)=
102+10+F3(7)が求まり、F1(Z)にリターンし
て、F1(3)=32+F2(10)となり、F1(3)という値が求
まるのである。
一般に関数型情報処理装置において、大域変数
は束縛された局所変数(または仮引数)に比べそ
の数は少いが少数の大域変数が多数回参照される
場合が多い。そこで本発明の関数型情報処理装置
においては新しく連想バツフアを設け、ある関数
が大域変数を参照した場合、前記バツフアにその
変数がない場合は、環境リスト(またはスタツ
ク)をシーケンシヤルに検索し、得た値をその変
数名と対にして前記高速な連想バツフアメモリに
格納しておき、以後その変数が参照された場合に
は、変数名でバツフアを連想アクセスしてアクセ
ス時間の大幅な短縮をすることができるのであ
る。
第5図aは環境リストにおいて、関数F1はF2
を、F2はF3を、F3はF4を、F4はF5を、そして
F5はF6をコールするようになつているとする。
このとき関数F6を F6(N)=N2+x+Z+Z2 であると仮定する。すなわち、Nは局所変数で、
xとZは大域変数である。大域変数であるxは関
数F2(x、y)をコールする時点でx=5である
ように束縛されており、Zは関数F3(Z)をコー
ルする時点でZ=8であるように束縛されてい
る。F6(N)の値を計算するために、Nとxそし
てZの各変数を参照するため、まず環境リスト上
をサーチするが、局所変数Nに対しては即座にそ
の値(例えばN=10)をみつけることができる
が、xやZは最初は環境境リスト上をさかのぼつ
てサーチする必要があり、x=5、Z=8である
ことがわかる、しかし、もし、この最初のサーチ
において、見つけたx=5、Z=8を第5図bの
ように連想バツフアに対として格納しておけば、
2度目の同じ変数名の参照は連想バツフアをまず
アクセスすることによつてなされ高速化されるこ
とになる。すなわち、F6(N)=N2+x+Z+Z2
の最後の項Z2は連想バツフアにZ=8という対が
格納されていて変数Zをキーとして連想検索すれ
ばZ=8であることがただちに決まりZ2に代入す
ればよいことになる。本発明はこのような連想バ
ツフアを設置することによつて大域変数の参照ア
クセスタイムを速くすることができる。
このバツフアメモリの持つべき機能は以下のも
のである。なお、バツフアメモリの具体的構成は
第9図を参照して後述する。
(1) ある大域変数を初めてアクセスした場合、そ
の変数をバツフアへ登録しておき、以後のアク
セスの高速化をはかる。この場合、変数名、変
数値の他に、そのバインド値の環境リスト(又
はスタツク)上での位置情報EID
(Environment Identifier)も同時に格納する。
(2) 与えられた変数名が内部格納変数名と一致す
るかどうかをハード的に行ない、一致がとれれ
ばその変数名に対応する値を読んだり書いたり
することができること、すなわち、変数名をキ
ーとしてバツフアを連想検索して、値をリード
またはライトする機能をもつことである。これ
は、変数を参照したり、変更したりする場合に
必要である。
(3) 変数名をキーとしてバツフアメモリ上でその
変数と同一名の変数の有効表示ビツトVをリセ
ツトする機能を持つことである。これは参照さ
れてバツフアに存在する大域変数と同一名の仮
引数名をもつ関数をコールする場合、バツフア
上のその大域変数を削除するために必要であ
る。この処理をおこたると同一変数名の参照の
場合に、大域変数より局所変数を優先するスコ
ーピングの原則がくずれる。
(4) 位置情報EIDをキーとして、それが一致する
すべての項目の有効表示ビツトVをリセツトす
る機能を有する。これ関数が呼び側の関数へリ
ターンする時に、そのリターンする関数の引数
変数を全てバツフアから除去するのに必要であ
る。この処理をおこたると、もしこの関数の仮
引数変数と同一名の変数がこの関数以前にバイ
ンドされており、その変数を参照すると、既に
環境から除去されたはずの値が誤まつて使われ
ることになる。
上述したように、各変数を環境上での位置情報
EID付でバツフアに格納していないと、リターン
する関数の各仮引数名をキーとして、それぞれバ
ツフアを検索して除去するか、バツフアのオール
クリアを行なう必要がある。前者では、時間がか
かり、後者では大域変数のバツフア内での寿命は
初めて参照した関数がリターンするまでとなり、
バツフアの効果はほとんどなくなる。
第6図は、前述のバツフアメモリの必要機能(1)
を説明する図であり、Eiは#i関数の引数のバイ
ンドブロツク、Fiは#i関数のフレーム、EPは
エンバイロンメントポインタ(環境リストポイン
タ)である。今、関数#4がある変数VARを参
照したとし、EPからE4、E3、E2と環境を検索
し、E2でその変数VARが見つかつたとすると、
バツフアに格納する環境リスト上の位置情報とは
E2バインドブロツクのスタツク内アドレスEA2
のことである。このアドレスをハツシング(圧縮
コード化)して、長さを短縮してEIDとすること
もできる。
第7図a,bはバツフアメモリの前述の必要機
能(3)を説明するものである。いま、関数#4が仮
引数名VARをもつ関数#5をコールしようとし
ているとする。このときバインドブロツクに変数
VARとその実引数値が対として格納され、更に、
変数バツフアに変数名VARをもつ項目がもし存
在すれば、それのバリツドビツトをリセツトす
る。
第8図は、前述のバツフアメモリの必要機能(4)
を説明するものである。関数#4が大域変数
VARを参照し、それがE2内で見つかり、バツフ
アに格納されている。いづれ、関数#4、#3と
リターンしてゆき、関数#2がリターンする場合
を考える。関数#2がリターンすれば、その引数
VARのE2バインドブロツクでの束縛も解除され
るので、バツフアメモリ中の変数VARも削除さ
れる必要がある。そこで、そのときのEPの値
EA2をキーとしてバツフアからEIDが一致する項
目を削除する。
第9図は、本発明の連想バツフアメモリの具体
的構成図である。すなわち、プログラムの構造お
よび実行形態が変数名と変数値の対として、環境
リストへ格納することによつて、呼ぶべき関数の
仮引数変数に実引数を束縛し、呼ばれた関数は、
変数の値を参照する場合、上記環境リストの最近
の束縛値を使かつて処理を行ない、関数の値が得
られれば、関数の仮引数変数を上記環境リストか
ら削除して、上記関数値をリターンするという一
連の処理を繰り返す関数型情報処理装置の内部に
連想バツフアメモリを新たに加えてなる構成図で
ある。前記連想バツフアメモリの持つべき機能
は、前記(1)、(2)、(3)、(4)である。
上記実施例には、まずメモリ10,20,30
が設けられ、それぞれが1〜nのレジスタで構成
される。メモリ10は変数名ネームを格納するも
のであり、20は環境アイデンテイフアイヤEID
を格納するものであり、30は変数値ヴアリユー
を格納するものである。前記メモリ10,20,
30のi番目(i=1、2、………n)のレジス
タはそれぞれが対応し、1つのワードを形成して
いる。これが第1の機能である。関数情報処理装
置の環境リスト内のある大域変数をはじめてアク
セスした場合、その大域変数とEIDと変数値を前
記連想バツフアの前記メモリ10,20,30…
……にそれぞれ登録していき、以後のアクセスの
高速化を図る。連想バツフアへの登録は変数名ネ
ームに対しては入力線101,103をネームi
のセルに書込みパルス信号WEiを活性化して書き
込む。このとき同時に、環境位置情報である環境
アイデンテイフアイヤEIDを入力線201,20
3を通して、EIDのi番目のセルに前記書込み信
号WEiを活性化して書き込む。同様に変数値は入
力線301からヴアリユーのi番目のセルに前記
書込み信号WEiを活性化して書込む。前記第2の
機能を行なうために、連想バツフアは、与えられ
た変数名ネームが、あらかじめ内部メモリ10に
格納しておいた変数名と一致回路40で一致する
かどうかを検出し、一致がとれれば出力線401
のn本のうちのどれか一本が活性化されて、選択
回路60を制御して、対応するセル30の内容、
すなわち対応する変数値を出力線601に出力す
る。すなわち、変数名をキーとして、連想検索し
て変数値を読出すことができる機能をもつ。しか
も、変数値を格納するメモリ30は書き込みも行
えるので、変数名に対応する値を読出したり、書
込んだりすることとができる。これは、変数値を
参照したり変更したりするときに必要である。
第3及び第4の機能である、変数名または環境
アイデンテイフアイアをキーとして、連想メモリ
バツフアから同一名の項目の有効表示ビツトVを
リセツトする機能を実現するため、本実施例に
は、選択回路70、有効表示ビツト格納セル群8
0および選択回路90が含まれる。
有効表示ビツトVを格納するセル群のうち、
Viセルは前記変数名i、EIDi、変数値iを書き
込むときの前記書込み信号WEiによつてセツトす
る。
変数名をキーとする場合は、選択回路70で一
致回路401の出力を選択し、リセツト信号10
01が論理1のとき、AND回路100によつて
出力1002のうち一致回路40で内部変数名i
番目と入力された変数名i番目の一致がとれたと
き、対応する有効表示ビツトViがリセツトされ
る。
有効表示ビツトセル群の出力は選択回路90に
入力され、一致回路40の出力401の制御をう
けて選択されるので、出力901には変数名と格
納変数名が一致がとれている対応する有効表示ビ
ツト選択回路90の出力901に出力される。
また、機能(4)を実現するために、選択回路70
で、一致回路50の出力501を選択すれば、入
力のEIDと格納されているEIDの一致がとれたと
き、対応する有効表示ビツトがリセツトされ、外
部変数名と内部変数名が一致がとれたとき、選択
回路90で選択されて、出力901に出力され
る。
以上説明したように、本発明によれば、デープ
バインド方式に従つて実行していく関数型情報処
理装置において、特に大域変数の値を検索するア
クセスが前記連想バツフアを使うことによつて高
速に行なうことができる。
【図面の簡単な説明】
第1図a,b,cは2進木リストを説明するた
めの図、第2図は関数型情報処理を説明するため
の図、第3図a,bはデイープバインド法を説明
する図、第4図a,b,cはスタツク上のデイー
プバインド法を説明する図、第5図a,bは環境
リストを説明する図、第6図は本発明のバツフア
メモリの機能を説明する図、第7図a,bは本発
明のバツフアメモリの他の機能を説明する図、第
8図は本発明のバツフアメモリのさらに他の機能
を説明する図、第9図は本発明の一実施例のブロ
ツク図である。 10……変数名メモリ、20……位置情報
(EID)メモリ、30……変数値メモリ、40,
50……一致回路、60,70,90……選択回
路。

Claims (1)

    【特許請求の範囲】
  1. 1 プログラムの構造及び実行形態が仮引数とし
    ての変数名と実引数としての変数値の対として環
    境リストであるFirst−In−Last−Out型のスタツ
    クメモリへ格納することによつて呼ぶべき関数の
    仮引数変数へ実引数を束縛し、呼ばれた関数は変
    数の値を参照する場合、前記環境リストの最近の
    束縛値を使つて処理を行い、その関数の値が得ら
    れれば関数の仮引数変数を前記環境リストから削
    除して前記関数値をリターンするという一連の処
    理を繰返す関数型情報処理装置において、変数
    名、変数値およびその変数が束縛されている前記
    環境リスト上の位置情報を対として各ワードが構
    成され、プログラム実行中に変数を参照する場合
    には、変数名をキーとして連想検索し、格納され
    ている変数と一致がとれれば対応する変数値を読
    出して使い、不一致であれば前記環境リストから
    変数名を検索し最近に見つかる変数値を使う処理
    装置の動作にともなつてその変数名と変数値を前
    記環境リスト上の位置情報も加えて新しく書込
    み、それとともに引数変数名と名前が一致するワ
    ードを削除でき、変数値を変更する場合には前記
    環境リスト上の最近値を変更する情報処理装置の
    動作と共に、その変数が内部に存在すればその変
    数値のみを変更し、関数がその呼び側に復帰する
    場合には、その引数名と束縛値の対を前記環境リ
    ストからはずす処理装置の動作にともなつて、そ
    の環境リスト上の位置情報をキーとして対応した
    ワードを削除する連想バツフアメモリを設置した
    関数型情報処理装置。
JP56102900A 1981-06-30 1981-06-30 関数型情報処理装置 Granted JPS584452A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP56102900A JPS584452A (ja) 1981-06-30 1981-06-30 関数型情報処理装置
DE8282303394T DE3270597D1 (en) 1981-06-30 1982-06-29 Data processing system
EP82303394A EP0069525B1 (en) 1981-06-30 1982-06-29 Data processing system
US06/393,533 US4517640A (en) 1981-06-30 1982-06-30 Stack machine with improved cache memory for variables

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP56102900A JPS584452A (ja) 1981-06-30 1981-06-30 関数型情報処理装置

Publications (2)

Publication Number Publication Date
JPS584452A JPS584452A (ja) 1983-01-11
JPH0126092B2 true JPH0126092B2 (ja) 1989-05-22

Family

ID=14339729

Family Applications (1)

Application Number Title Priority Date Filing Date
JP56102900A Granted JPS584452A (ja) 1981-06-30 1981-06-30 関数型情報処理装置

Country Status (1)

Country Link
JP (1) JPS584452A (ja)

Also Published As

Publication number Publication date
JPS584452A (ja) 1983-01-11

Similar Documents

Publication Publication Date Title
US4086629A (en) Hierarchical data store with look-ahead action
US4517640A (en) Stack machine with improved cache memory for variables
JPH03266039A (ja) フリーフォーマットデータリンク処理方式
JPS6137654B2 (ja)
JPH0126092B2 (ja)
JPS6367691B2 (ja)
US5855010A (en) Data processing apparatus
CN112035380A (zh) 一种数据处理方法、装置、设备及可读存储介质
JP2702943B2 (ja) 半導体記憶装置
JPH06511588A (ja) ブール関数に関連する確率の自動決定方法
JPS585852A (ja) 関数型情報処理装置
JPS6046456B2 (ja) デ−タアクセス装置
JPS584451A (ja) 関数型情報処理装置
JPH0315772B2 (ja)
JPS6211426B2 (ja)
JP2705166B2 (ja) データ処理装置
JPH01240936A (ja) 継承解決方式
JPS60160444A (ja) リスト処理方法
KR890010718A (ko) 데이타 조작에 의한 메모리 공간확장 방법
JPH046984B2 (ja)
JPS61148536A (ja) 情報処理システム
JPS585851A (ja) 関数型情報処理装置
JPH0333978A (ja) ファイルシステムの検索装置
JPS63153674A (ja) 論理回路の合成用の手順において使用されるルール構造およびルール実行の手順
JPH03157729A (ja) 多重継承制御方式