JPH05173789A - リスト型データ表現形式における数値表現方法及び数値表現変換方法 - Google Patents
リスト型データ表現形式における数値表現方法及び数値表現変換方法Info
- Publication number
- JPH05173789A JPH05173789A JP34419091A JP34419091A JPH05173789A JP H05173789 A JPH05173789 A JP H05173789A JP 34419091 A JP34419091 A JP 34419091A JP 34419091 A JP34419091 A JP 34419091A JP H05173789 A JPH05173789 A JP H05173789A
- Authority
- JP
- Japan
- Prior art keywords
- storage space
- value
- floating point
- address
- expressing
- 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
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 リスト型データ表現の浮動小数点を表現する
ために十分大きな記憶空間を割付け、最終的に、浮動小
数点の値との1:1の写像関係を持つ変換を可能とし、
浮動小数点のリスト表現としてその値を格納する記憶領
域を不要にすること。 【構成】 リスト型データ表現形式における数値を、計
算機の記憶空間における未使用記憶空間、即ち、論理的
記憶領域から物理的記憶領域を除いた領域のアドレス値
により表現し、十分有効桁数の大きな浮動小数点の表現
を可能とした。
ために十分大きな記憶空間を割付け、最終的に、浮動小
数点の値との1:1の写像関係を持つ変換を可能とし、
浮動小数点のリスト表現としてその値を格納する記憶領
域を不要にすること。 【構成】 リスト型データ表現形式における数値を、計
算機の記憶空間における未使用記憶空間、即ち、論理的
記憶領域から物理的記憶領域を除いた領域のアドレス値
により表現し、十分有効桁数の大きな浮動小数点の表現
を可能とした。
Description
【0001】
【産業上の利用分野】本発明は、リスト型データ構造を
扱う言語処理系や情報処理システム等に適用されるリス
ト型データ表現形式における数値表現方法及び数値表現
変換方法に関する。
扱う言語処理系や情報処理システム等に適用されるリス
ト型データ表現形式における数値表現方法及び数値表現
変換方法に関する。
【0002】
【従来の技術】従来、LispやPrologなどの記号処理言
語では、リストによりデータを表現し処理を行うように
している。
語では、リストによりデータを表現し処理を行うように
している。
【0003】このようなリストにおける整数の表現とし
ては、 リストにおける整数表現は、整数の実体を格納した
記憶領域へのポインタ値とし、このポインタ値の中又は
実体のある記憶領域にタイプを示すタグを設けたもの。 方法の実体の配置につき、記憶領域にある空間を
整数データのための空間とし、そこに整数値(実体値)
を置いておくデータタイプはアドレスの範囲検査で判定
するようにしたもの。 方法の改良として、整数の実体を持たず、アドレ
ス値からその空間のベースを差し引いて整数値を得るよ
うにしたもの。 等がある。
ては、 リストにおける整数表現は、整数の実体を格納した
記憶領域へのポインタ値とし、このポインタ値の中又は
実体のある記憶領域にタイプを示すタグを設けたもの。 方法の実体の配置につき、記憶領域にある空間を
整数データのための空間とし、そこに整数値(実体値)
を置いておくデータタイプはアドレスの範囲検査で判定
するようにしたもの。 方法の改良として、整数の実体を持たず、アドレ
ス値からその空間のベースを差し引いて整数値を得るよ
うにしたもの。 等がある。
【0004】しかし、浮動小数点のリスト型データ表現
では、その値の実体を格納した記憶領域へのポインタ値
としている。
では、その値の実体を格納した記憶領域へのポインタ値
としている。
【0005】
【発明が解決しようとする課題】このように、従来方式
では浮動小数点値は実体を格納する記憶領域を確保して
いるため、不要になった数値記憶領域を回収し再利用す
る処理(一般には、バーゲージコレクションと称され
る)が必要であり、その処理のためにプログラムの実行
が遅くなったり、中断することがある。このような結
果、有効桁数の大きな浮動小数点の表現には不適なもの
となってしまう。
では浮動小数点値は実体を格納する記憶領域を確保して
いるため、不要になった数値記憶領域を回収し再利用す
る処理(一般には、バーゲージコレクションと称され
る)が必要であり、その処理のためにプログラムの実行
が遅くなったり、中断することがある。このような結
果、有効桁数の大きな浮動小数点の表現には不適なもの
となってしまう。
【0006】
【課題を解決するための手段】請求項1記載の発明で
は、リスト型データ表現形式における数値表現方法とし
て、リスト型データ表現形式における数値を、計算機の
記憶空間における未使用記憶空間のアドレス値により表
現するようにした。
は、リスト型データ表現形式における数値表現方法とし
て、リスト型データ表現形式における数値を、計算機の
記憶空間における未使用記憶空間のアドレス値により表
現するようにした。
【0007】請求項2記載の発明では、浮動小数点値か
らリスト型データ表現形式における浮動小数点への変換
方法として、ある浮動小数点値に対してその語全体を右
1ビットシフトさせた後、計算機の記憶空間中の物理的
記憶領域の最大アドレス値を加算した未使用記憶空間の
アドレス値により表現することで行うようにし、また、
請求項3記載の発明では、リスト型データ表現形式にお
ける浮動小数点から浮動小数点値への変換方法として、
ある浮動小数点を表現した計算機の記憶空間における未
使用記憶空間のアドレス値からこの記憶空間の物理的記
憶領域の最大アドレス値を減算した後、左1ビットシフ
トさせることで行うようにした。
らリスト型データ表現形式における浮動小数点への変換
方法として、ある浮動小数点値に対してその語全体を右
1ビットシフトさせた後、計算機の記憶空間中の物理的
記憶領域の最大アドレス値を加算した未使用記憶空間の
アドレス値により表現することで行うようにし、また、
請求項3記載の発明では、リスト型データ表現形式にお
ける浮動小数点から浮動小数点値への変換方法として、
ある浮動小数点を表現した計算機の記憶空間における未
使用記憶空間のアドレス値からこの記憶空間の物理的記
憶領域の最大アドレス値を減算した後、左1ビットシフ
トさせることで行うようにした。
【0008】
【作用】請求項1記載の発明によれば、計算機の記憶空
間における未使用記憶空間のアドレス値を利用して、リ
スト型データ表現形式における数値、例えば浮動小数点
を表現することにより、十分有効桁数の大きな浮動小数
点の表現が可能となる。
間における未使用記憶空間のアドレス値を利用して、リ
スト型データ表現形式における数値、例えば浮動小数点
を表現することにより、十分有効桁数の大きな浮動小数
点の表現が可能となる。
【0009】また、請求項2,3記載の発明によれば、
リスト型データ表現の浮動小数点と浮動小数点値との間
の変換方法として、1:1の写像関係を持たせることが
でき、リスト型データ表現の浮動小数点の実体を格納す
る記憶領域が不要となる。
リスト型データ表現の浮動小数点と浮動小数点値との間
の変換方法として、1:1の写像関係を持たせることが
でき、リスト型データ表現の浮動小数点の実体を格納す
る記憶領域が不要となる。
【0010】
【実施例】本発明の一実施例を図面に基づいて説明す
る。まず、本実施例の要旨の説明に先立ち、前提的な補
足説明として、「リスト表現」、「計算機の記憶空間構
造」、「整数の内部表現」及び「浮動小数点の内部表
現」について順に説明する。
る。まず、本実施例の要旨の説明に先立ち、前提的な補
足説明として、「リスト表現」、「計算機の記憶空間構
造」、「整数の内部表現」及び「浮動小数点の内部表
現」について順に説明する。
【0011】まず、本発明で前提とするリスト表現につ
いて説明する。前述したように、LispやProlog等の記
号処理言語では、リストによりデータを表現し処理を行
うが、このような「リスト」とは、例えば図2に示すよ
うに、必ず二股に分かれる節だけからなる2進木構造に
より表現される。図示例は、あるリスト表現((AB)
C10)に対応する。図中、1はコンスセルを示し、2
はアトムを示す。このような2進木を実現するために、
コンスセル1なる基本データ構造は、図3に示すように
CAR部3とCDR部4との2つのアドレス部を有す
る。また、リストの要素としては、そのデータ分類を模
式的に示す図4のように、アトムと称されるデータがあ
り、一般には、シンボルアトムと文字列アトムと数値ア
トムとに分けられる。数値アトムでは、整数型又は浮動
小数点型の数値を表現することになる。また、リストの
終端を示すために、特殊なアトムNILがある。
いて説明する。前述したように、LispやProlog等の記
号処理言語では、リストによりデータを表現し処理を行
うが、このような「リスト」とは、例えば図2に示すよ
うに、必ず二股に分かれる節だけからなる2進木構造に
より表現される。図示例は、あるリスト表現((AB)
C10)に対応する。図中、1はコンスセルを示し、2
はアトムを示す。このような2進木を実現するために、
コンスセル1なる基本データ構造は、図3に示すように
CAR部3とCDR部4との2つのアドレス部を有す
る。また、リストの要素としては、そのデータ分類を模
式的に示す図4のように、アトムと称されるデータがあ
り、一般には、シンボルアトムと文字列アトムと数値ア
トムとに分けられる。数値アトムでは、整数型又は浮動
小数点型の数値を表現することになる。また、リストの
終端を示すために、特殊なアトムNILがある。
【0012】ついで、計算機の記憶空間構造について説
明する。一般に、計算機の「論理的記憶空間」の大きさ
は、図5(a)に示すように、アドレスを表現するワード
長によって決まる。しかし、実際には、その計算機の実
記憶メモリの大きさや仮想記憶スワップ領域の設定によ
り使用可能な記憶空間は制限されている。このような使
用可能な記憶空間を「物理的記憶空間」と呼び、その大
きさは、計算機の種類や構成により異なっている。具体
的には、次の2つのパラメータ 物理的記憶空間の最大アドレス値:MAX PHYSICAL ADDRE
SS 論理的記憶空間の最大アドレス値:MAX LOGICAL ADDRES
S が存在する。図5(a)は、32ビット計算機で134メ
ガバイトのスワップ領域を備えた例を示す。
明する。一般に、計算機の「論理的記憶空間」の大きさ
は、図5(a)に示すように、アドレスを表現するワード
長によって決まる。しかし、実際には、その計算機の実
記憶メモリの大きさや仮想記憶スワップ領域の設定によ
り使用可能な記憶空間は制限されている。このような使
用可能な記憶空間を「物理的記憶空間」と呼び、その大
きさは、計算機の種類や構成により異なっている。具体
的には、次の2つのパラメータ 物理的記憶空間の最大アドレス値:MAX PHYSICAL ADDRE
SS 論理的記憶空間の最大アドレス値:MAX LOGICAL ADDRES
S が存在する。図5(a)は、32ビット計算機で134メ
ガバイトのスワップ領域を備えた例を示す。
【0013】また、実行時におけるユーザのプロセス空
間は、図5(b)に示すように、命令コードやデータ領域
を含んだ「プログラム空間」と、ユーザが記憶割当てを
受けることが可能な「記憶割当空間」と、「スタック空
間」とがある。ここに、プロセス空間の大きさは、図5
(a)(b)間に関連付けて示すように、物理的記憶空間の
大きさを超えないことはいうまでもない。次のパラメー
タ 記憶割当空間の最小アドレス値:MIN FREE ADDRESS は、プログラムの実行中、最初に記憶割当てを行った時
に知ることができる。
間は、図5(b)に示すように、命令コードやデータ領域
を含んだ「プログラム空間」と、ユーザが記憶割当てを
受けることが可能な「記憶割当空間」と、「スタック空
間」とがある。ここに、プロセス空間の大きさは、図5
(a)(b)間に関連付けて示すように、物理的記憶空間の
大きさを超えないことはいうまでもない。次のパラメー
タ 記憶割当空間の最小アドレス値:MIN FREE ADDRESS は、プログラムの実行中、最初に記憶割当てを行った時
に知ることができる。
【0014】例えば、32ビット構成の計算機では、図
5(a)に示すように論理的記憶空間は0番地から4,296,
967,296 番地(=FFFFFFFF)であり、その大きさは約4
ギガバイトである。また、その計算機には100メガバ
イトのスワップ領域があるとすると、その物理的記憶空
間は100メガバイトであり、それ以上の記憶空間は未
使用である。このような「未使用記憶空間」やプログラ
ム空間にはリストのデータが存在することはない。従っ
て、これらの空間のアドレス値を利用して、浮動小数点
や整数の値を表現し得ることが判る。
5(a)に示すように論理的記憶空間は0番地から4,296,
967,296 番地(=FFFFFFFF)であり、その大きさは約4
ギガバイトである。また、その計算機には100メガバ
イトのスワップ領域があるとすると、その物理的記憶空
間は100メガバイトであり、それ以上の記憶空間は未
使用である。このような「未使用記憶空間」やプログラ
ム空間にはリストのデータが存在することはない。従っ
て、これらの空間のアドレス値を利用して、浮動小数点
や整数の値を表現し得ることが判る。
【0015】また、整数の内部表現については、整数を
1ワードの機械語で表現する場合、2の補数表現が一般
的である。図6は、32ビットの計算機による整数「2
0」の内部表現例を示す。
1ワードの機械語で表現する場合、2の補数表現が一般
的である。図6は、32ビットの計算機による整数「2
0」の内部表現例を示す。
【0016】さらに、浮動小数点の内部表現について
は、計算機の種類により実現方法が若干異なるが、例え
ば、1ワードの機械語によって浮動小数点を実現する場
合であれば、1ビットの正負符号、nビットの指数部、
mビットの仮数部から構成され、ワード長=m+n+1
となる。
は、計算機の種類により実現方法が若干異なるが、例え
ば、1ワードの機械語によって浮動小数点を実現する場
合であれば、1ビットの正負符号、nビットの指数部、
mビットの仮数部から構成され、ワード長=m+n+1
となる。
【0017】ここでは、一般的な表現方法について説明
するものとする。まず、32ビットの計算機を対象と
し、浮動小数点の内部表現は1ビットの正負符号、8ビ
ットの指数部、23ビットの仮数部からなると仮定す
る。指数部は、−127バイアスをかけることで、−1
27から128を表現する。また、仮数部は正規化が行
われており、その最左ビットが1の位になるように位取
りされているものとする。この時、その最左ビットは必
ず1になるため、このビットを省略して第2桁目から左
に1ビット詰められている(Hidden bit) 。
するものとする。まず、32ビットの計算機を対象と
し、浮動小数点の内部表現は1ビットの正負符号、8ビ
ットの指数部、23ビットの仮数部からなると仮定す
る。指数部は、−127バイアスをかけることで、−1
27から128を表現する。また、仮数部は正規化が行
われており、その最左ビットが1の位になるように位取
りされているものとする。この時、その最左ビットは必
ず1になるため、このビットを省略して第2桁目から左
に1ビット詰められている(Hidden bit) 。
【0018】この計算機において、求める浮動小数点の
値は、sign=1又は0、p=仮数値、q=指数値とする
と、次式によって得られる。
値は、sign=1又は0、p=仮数値、q=指数値とする
と、次式によって得られる。
【0019】
【数1】
【0020】例えば、10.75を表現する機械語の内
容は、図7にも例示するように、 0100|0001|0010|1100|0000|0000|0000|0000 となり、ここでは、q=“1000010”=130,p=“0
101010”は最左に1を補って、実際の仮数は“1.010101
0” となる。この仮数に、23 (=130−127)を
かける(3ビット左シフト)と、求める値“1010.101
0”(=10.75)となる。
容は、図7にも例示するように、 0100|0001|0010|1100|0000|0000|0000|0000 となり、ここでは、q=“1000010”=130,p=“0
101010”は最左に1を補って、実際の仮数は“1.010101
0” となる。この仮数に、23 (=130−127)を
かける(3ビット左シフト)と、求める値“1010.101
0”(=10.75)となる。
【0021】このような前提の下、リスト型データ表現
における本実施例の数値表現について説明する。一般
に、整数や浮動小数点等の数値は、繰返し文などの制御
変数や算術演算において一時的なデータになる割合が高
いと考えられる。よって、数値が発生する度にその値を
格納するための記憶領域をヒープ領域に確保していて
は、不要な数値アトムが大量に発生するので、その回収
作業を頻繁に行う必要がある。このような事態を避ける
ためには、リストにおける数値表現として、値を格納す
る記憶領域を作成せずに、ポインタ値そのもので値を表
現することが望ましい。そのため、本実施例では、基本
的には、計算機の記憶空間におけるリストのデータが存
在しない空間(=未使用記憶空間)のアドレス値を利用
して、整数や浮動小数点の値を表現するようにしたもの
である。さらには、リストは、その要素にアトムと呼ぶ
様々なデータを含むことができるので、リスト処理の際
にはそのデータのタイプを調べることが重要となるた
め、データに対してそれが数値を表現する値であるか否
かを知るためのデータタイプの判定法についても言及す
るものとする。
における本実施例の数値表現について説明する。一般
に、整数や浮動小数点等の数値は、繰返し文などの制御
変数や算術演算において一時的なデータになる割合が高
いと考えられる。よって、数値が発生する度にその値を
格納するための記憶領域をヒープ領域に確保していて
は、不要な数値アトムが大量に発生するので、その回収
作業を頻繁に行う必要がある。このような事態を避ける
ためには、リストにおける数値表現として、値を格納す
る記憶領域を作成せずに、ポインタ値そのもので値を表
現することが望ましい。そのため、本実施例では、基本
的には、計算機の記憶空間におけるリストのデータが存
在しない空間(=未使用記憶空間)のアドレス値を利用
して、整数や浮動小数点の値を表現するようにしたもの
である。さらには、リストは、その要素にアトムと呼ぶ
様々なデータを含むことができるので、リスト処理の際
にはそのデータのタイプを調べることが重要となるた
め、データに対してそれが数値を表現する値であるか否
かを知るためのデータタイプの判定法についても言及す
るものとする。
【0022】まず、整数の表現方法について説明する。
計算機の記憶空間における表現範囲は、図8に示すよう
に、正の整数はプログラム空間(0からMIN FREEADDRES
S)のアドレス値を利用し、負の整数は、未使用空間の
一部 (-MIN FREE ADDRESSからFFFFFFF) を利用するも
のとする。この場合の整数値・整数のリスト型データ表
現間の変換手続きは、いわゆる即値アドレス表現であ
り、アドレス値そのものが整数値を示しているため、変
換処理は不要である。ただし、整数値は最大値(MIN FR
EE ADDRESS)と最小値(-MIN FREE ADDRESS) の範囲内
でなければならないという制約を受ける。このような整
数の表現方法の場合のタイプの判定方法としては、ある
データが与えられるとその値が記憶空間における整数の
表現範囲内のアドレス値であれば、そのタイプは整数で
あると判別するものとする。即ち、 ptr< MAX FREE ADDRESS 又は、 ptr>-MAX FREE ADD
RESS を満足する限り、データptr は整数型である。大小比較
は符号なし演算を行っている。
計算機の記憶空間における表現範囲は、図8に示すよう
に、正の整数はプログラム空間(0からMIN FREEADDRES
S)のアドレス値を利用し、負の整数は、未使用空間の
一部 (-MIN FREE ADDRESSからFFFFFFF) を利用するも
のとする。この場合の整数値・整数のリスト型データ表
現間の変換手続きは、いわゆる即値アドレス表現であ
り、アドレス値そのものが整数値を示しているため、変
換処理は不要である。ただし、整数値は最大値(MIN FR
EE ADDRESS)と最小値(-MIN FREE ADDRESS) の範囲内
でなければならないという制約を受ける。このような整
数の表現方法の場合のタイプの判定方法としては、ある
データが与えられるとその値が記憶空間における整数の
表現範囲内のアドレス値であれば、そのタイプは整数で
あると判別するものとする。即ち、 ptr< MAX FREE ADDRESS 又は、 ptr>-MAX FREE ADD
RESS を満足する限り、データptr は整数型である。大小比較
は符号なし演算を行っている。
【0023】ついで、本実施例の要旨とする浮動小数点
の表現方法について説明する。まず、リスト要素として
の浮動小数点の表現では、計算機内部における浮動小数
点の機械語表現がある条件を満たしていなければならな
い。これは、仮数部の位置が機械語において右端にあ
り、かつ、その最左ビットから有効数字が納められてい
るという条件であり、この条件は、一般には成立するた
め、特に問題にはならないと考えられる。即ち、変換の
際に機械語を1ビットシフトすることにより失う情報を
仮数部の下1ビットに限定するため、このような仮定が
必要となる。
の表現方法について説明する。まず、リスト要素として
の浮動小数点の表現では、計算機内部における浮動小数
点の機械語表現がある条件を満たしていなければならな
い。これは、仮数部の位置が機械語において右端にあ
り、かつ、その最左ビットから有効数字が納められてい
るという条件であり、この条件は、一般には成立するた
め、特に問題にはならないと考えられる。即ち、変換の
際に機械語を1ビットシフトすることにより失う情報を
仮数部の下1ビットに限定するため、このような仮定が
必要となる。
【0024】このような仮定の下、浮動小数点は、図1
に示すように、論理的記憶空間における未使用記憶空間
のアドレス値を利用して表現するものとする。未使用記
憶空間とは、論理的記憶空間から物理的記憶空間を除い
た記憶空間であり、浮動小数点の表現範囲はこのような
未使用記憶空間中において、MAX LOGICAL ADDRESS から
(MAX LOGICAL ADDRESS)/2+MAX PHYSICAL ADDRESS ま
での範囲、即ち、論理的記憶空間の半分の大きさとされ
ている。
に示すように、論理的記憶空間における未使用記憶空間
のアドレス値を利用して表現するものとする。未使用記
憶空間とは、論理的記憶空間から物理的記憶空間を除い
た記憶空間であり、浮動小数点の表現範囲はこのような
未使用記憶空間中において、MAX LOGICAL ADDRESS から
(MAX LOGICAL ADDRESS)/2+MAX PHYSICAL ADDRESS ま
での範囲、即ち、論理的記憶空間の半分の大きさとされ
ている。
【0025】このような計算機の記憶空間中の未使用記
憶空間のアドレス値を利用して浮動小数点の表現を行う
ことにより、十分な有効桁数を持った浮動小数点の表現
が可能となる。
憶空間のアドレス値を利用して浮動小数点の表現を行う
ことにより、十分な有効桁数を持った浮動小数点の表現
が可能となる。
【0026】ついで、リストの要素としてのポイント値
(浮動小数点のリスト型データ表現)から浮動小数点へ
の変換と、その逆変換の手続きについて説明する。浮動
小数点からポイント値への変換方法としては、 ステップ1;浮動小数点の値が表現している機械語を右
に1ビット論理シフトする。 ステップ2;物理的記憶空間の最大番地(MAX PHYSICAL
ADDRESS)を加算する。という手順で行われる。例え
ば、32ビット構成で270メガバイトのスワップ領域
を備えた計算機において、浮動小数点の値が10.75
の場合のポイント値への変換例を図9に示す。この場
合、ステップ2における物理的記憶空間の最大番地は
“0100000”=約270MBとなる。
(浮動小数点のリスト型データ表現)から浮動小数点へ
の変換と、その逆変換の手続きについて説明する。浮動
小数点からポイント値への変換方法としては、 ステップ1;浮動小数点の値が表現している機械語を右
に1ビット論理シフトする。 ステップ2;物理的記憶空間の最大番地(MAX PHYSICAL
ADDRESS)を加算する。という手順で行われる。例え
ば、32ビット構成で270メガバイトのスワップ領域
を備えた計算機において、浮動小数点の値が10.75
の場合のポイント値への変換例を図9に示す。この場
合、ステップ2における物理的記憶空間の最大番地は
“0100000”=約270MBとなる。
【0027】また、ポイント値から浮動小数点への変換
方法としては、 ステップ1;浮動小数点を表現するポイント値から最大
番地(MAX PHYSICALADDRESS) を減算する。 ステップ2;左に1ビット論理シフトする。 という手順、即ち、全く逆の手順で行われる。
方法としては、 ステップ1;浮動小数点を表現するポイント値から最大
番地(MAX PHYSICALADDRESS) を減算する。 ステップ2;左に1ビット論理シフトする。 という手順、即ち、全く逆の手順で行われる。
【0028】このような手続きにおいて、内部表現の浮
動小数点を右に1ビットシフトすることにより、仮数部
の下1桁の情報を落してしまい、浮動小数点の表現空間
を元の半分にしてしまう。そして、物理的記憶空間の最
大番地を加算してこの空間を嵩上げすることで、この空
間が物理的記憶空間と干渉し合わないようにする。即
ち、このような変換では、シフトで桁落ちした仮数部は
最大有効桁数が1つ減ることに留意する必要がある。
動小数点を右に1ビットシフトすることにより、仮数部
の下1桁の情報を落してしまい、浮動小数点の表現空間
を元の半分にしてしまう。そして、物理的記憶空間の最
大番地を加算してこの空間を嵩上げすることで、この空
間が物理的記憶空間と干渉し合わないようにする。即
ち、このような変換では、シフトで桁落ちした仮数部は
最大有効桁数が1つ減ることに留意する必要がある。
【0029】このような変換方法によれば、1:1の写
像関係が実現でき、リスト型データ表現の浮動小数点の
実体を格納する記憶領域が不要となる。
像関係が実現でき、リスト型データ表現の浮動小数点の
実体を格納する記憶領域が不要となる。
【0030】このような浮動小数点の表現方法における
タイプの判定は、あるデータが記憶空間における浮動小
数点の表現範囲内のアドレス値であればそのタイプは浮
動小数点であると判別することにより行われる。即ち、 ptr> MAX PHYSICAL ADDRESS かつ ptr< (MAX LOGICAL ADDRESS/2) + MAX PHYSICAL AD
DRESS を満足する場合に限り、データptr は浮動小数点型であ
ると判別される。大小比較は、符号なし演算により行
う。
タイプの判定は、あるデータが記憶空間における浮動小
数点の表現範囲内のアドレス値であればそのタイプは浮
動小数点であると判別することにより行われる。即ち、 ptr> MAX PHYSICAL ADDRESS かつ ptr< (MAX LOGICAL ADDRESS/2) + MAX PHYSICAL AD
DRESS を満足する場合に限り、データptr は浮動小数点型であ
ると判別される。大小比較は、符号なし演算により行
う。
【0031】さらに、データタイプの決定法について説
明する。リストはその要素にアトムと呼ぶ様々なデータ
を含むことができるので、リスト処理の際にはそのデー
タのタイプを調べることが重要となる。あるデータが与
えられた時、それがどのタイプなのかを決定するために
は、各データタイプの判定を順次実行していけば、その
中のどれかの判定によりタイプを決定することができ
る。ここでは、非数値データのタイプの判定法について
説明した後、効率のよい判定順序について説明する。
明する。リストはその要素にアトムと呼ぶ様々なデータ
を含むことができるので、リスト処理の際にはそのデー
タのタイプを調べることが重要となる。あるデータが与
えられた時、それがどのタイプなのかを決定するために
は、各データタイプの判定を順次実行していけば、その
中のどれかの判定によりタイプを決定することができ
る。ここでは、非数値データのタイプの判定法について
説明した後、効率のよい判定順序について説明する。
【0032】非数値データ(コンスセル、文字アトム、
シンボルアトム)は、実行時に動的に記憶割当てにより
生成されるため、リスト要素のポイント値が記憶割当空
間の範囲内、即ち、 ptr< MAX FREE ADDRESS かつ ptr> MAX PHYSICAL A
DDERSS にあれば、それは非数値データであると判定できる。
シンボルアトム)は、実行時に動的に記憶割当てにより
生成されるため、リスト要素のポイント値が記憶割当空
間の範囲内、即ち、 ptr< MAX FREE ADDRESS かつ ptr> MAX PHYSICAL A
DDERSS にあれば、それは非数値データであると判定できる。
【0033】そして、非数値データにはポインタ値が指
し示す実体が存在しており、そこにデータが格納されて
いる。その実体にはタイプを示すタグがあり、そのタグ
を調べることでタイプを知ることができる。
し示す実体が存在しており、そこにデータが格納されて
いる。その実体にはタイプを示すタグがあり、そのタグ
を調べることでタイプを知ることができる。
【0034】このようにあるデータが与えられた時、そ
れがどのタイプなのかを調べるためには、各データタイ
プの判定を順次実行していき、その中のどれかの判定に
よりタイプが判別されるが、これでは、後に判定される
タイプ程、そのデータタイプの決定に要する時間が遅く
なってしまうので、効率のよい判定順序が必要となる。
れがどのタイプなのかを調べるためには、各データタイ
プの判定を順次実行していき、その中のどれかの判定に
よりタイプが判別されるが、これでは、後に判定される
タイプ程、そのデータタイプの決定に要する時間が遅く
なってしまうので、効率のよい判定順序が必要となる。
【0035】そこで、本実施例では、このような判定順
序を動的に変化させるものとし、与えられたデータのタ
イプをできるだけ早く決定できるようにした。このよう
な動的変化方法としては、例えば最後に判定したデータ
のタイプが、次の判定時の最初のタイプとなるようにす
ればよい。これは、処理の最中は、同じようなタイプの
データが続く傾向にあるという性質を仮定した場合、効
率のよいタイプ判定順序となる。
序を動的に変化させるものとし、与えられたデータのタ
イプをできるだけ早く決定できるようにした。このよう
な動的変化方法としては、例えば最後に判定したデータ
のタイプが、次の判定時の最初のタイプとなるようにす
ればよい。これは、処理の最中は、同じようなタイプの
データが続く傾向にあるという性質を仮定した場合、効
率のよいタイプ判定順序となる。
【0036】例えば、整数の計算を行う場合には、処理
の対象となるデータは殆どが整数である。よって、この
ような場合であれば、整数の判定を最初に行う判定順序
が、この処理の中で最も効率のよいものとなる。
の対象となるデータは殆どが整数である。よって、この
ような場合であれば、整数の判定を最初に行う判定順序
が、この処理の中で最も効率のよいものとなる。
【0037】例えば、 関数名;LIST TYPE 入力;リストデータ 出力;データのタイプを示す値 (整数→1、浮動小数点→2、文字列アトム→3、シン
ボルアトム→4、コンスセル→5) とした場合の、タイプ決定処理例を図10のフローチャ
ートに示す。
ボルアトム→4、コンスセル→5) とした場合の、タイプ決定処理例を図10のフローチャ
ートに示す。
【0038】
【発明の効果】本発明は、上述したように構成したの
で、請求項1記載の発明によれば、計算機の記憶空間に
おける十分大きな記憶空間なる未使用記憶空間のアドレ
ス値を利用して、リスト型データ表現形式における数
値、例えば浮動小数点を表現することで、十分有効桁数
の大きな浮動小数点の表現を可能とすることができる。
で、請求項1記載の発明によれば、計算機の記憶空間に
おける十分大きな記憶空間なる未使用記憶空間のアドレ
ス値を利用して、リスト型データ表現形式における数
値、例えば浮動小数点を表現することで、十分有効桁数
の大きな浮動小数点の表現を可能とすることができる。
【0039】また、請求項2,3記載の発明によれば、
リスト型データ表現の浮動小数点と浮動小数点値との間
の変換方法として、1:1の写像関係を持たせることが
でき、リスト型データ表現の浮動小数点の実体を格納す
る記憶領域を不要にすることができる。
リスト型データ表現の浮動小数点と浮動小数点値との間
の変換方法として、1:1の写像関係を持たせることが
でき、リスト型データ表現の浮動小数点の実体を格納す
る記憶領域を不要にすることができる。
【図1】本発明の一実施例の浮動小数点の表現範囲を示
す記憶空間の模式図である。
す記憶空間の模式図である。
【図2】リスト構造を示す模式図である。
【図3】コンスセル構造を示す説明図である。
【図4】データ分類を示す説明図である。
【図5】未使用記憶空間及びプロセス空間の構造を示す
模式図である。
模式図である。
【図6】整数の内部表現例を示す説明図である。
【図7】浮動小数点の内部表現例を示す説明図である。
【図8】整数の表現範囲を示す記憶空間の模式図であ
る。
る。
【図9】浮動小数点からポイント値への変換例を示す説
明図である。
明図である。
【図10】タイプ決定処理例を示すフローチャートであ
る。
る。
Claims (3)
- 【請求項1】 リスト型データ表現形式における数値
を、計算機の記憶空間における未使用記憶空間のアドレ
ス値により表現するようにしたことを特徴とするリスト
型データ表現形式における数値表現方法。 - 【請求項2】 浮動小数点値からリスト型データ表現形
式における浮動小数点への変換を、ある浮動小数点値に
対してその語全体を右1ビットシフトさせた後、計算機
の記憶空間中の物理的記憶領域の最大アドレス値を加算
した未使用記憶空間のアドレス値により表現することで
行うようにしたことを特徴とするリスト型データ表現形
式における数値表現変換方法。 - 【請求項3】 リスト型データ表現形式における浮動小
数点から浮動小数点値への変換を、ある浮動小数点を表
現した計算機の記憶空間における未使用記憶空間のアド
レス値からこの記憶空間の物理的記憶領域の最大アドレ
ス値を減算した後、左1ビットシフトさせることで行う
ようにしたことを特徴とするリスト型データ表現形式に
おける数値表現変換方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34419091A JPH05173789A (ja) | 1991-12-26 | 1991-12-26 | リスト型データ表現形式における数値表現方法及び数値表現変換方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34419091A JPH05173789A (ja) | 1991-12-26 | 1991-12-26 | リスト型データ表現形式における数値表現方法及び数値表現変換方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH05173789A true JPH05173789A (ja) | 1993-07-13 |
Family
ID=18367329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34419091A Pending JPH05173789A (ja) | 1991-12-26 | 1991-12-26 | リスト型データ表現形式における数値表現方法及び数値表現変換方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH05173789A (ja) |
-
1991
- 1991-12-26 JP JP34419091A patent/JPH05173789A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5805475A (en) | Load-store unit and method of loading and storing single-precision floating-point registers in a double-precision architecture | |
US6189086B1 (en) | Data processing apparatus | |
CN115357216A (zh) | 数据处理方法、介质、电子设备和程序产品 | |
JPH05173789A (ja) | リスト型データ表現形式における数値表現方法及び数値表現変換方法 | |
US5694605A (en) | Program translator with selective data value amendment and processor with data extension instructions | |
JPH0831029B2 (ja) | 除算用近似逆数生成装置 | |
CN101300544A (zh) | 大数乘法方法和装置 | |
JPS5932038A (ja) | 浮動小数点加算器 | |
JP3465592B2 (ja) | データ形式変換装置 | |
JP2713283B2 (ja) | データ処理装置 | |
JP3082249B2 (ja) | ファジィ演算処理装置 | |
Gazi | Modern C Programming: Including Standards C99, C11, C17, C23 | |
JPS6410855B2 (ja) | ||
JPH09128218A (ja) | 除算装置 | |
Sexton | C++ Programming Made Simple | |
JP2889431B2 (ja) | 文字処理装置 | |
WO2023177446A1 (en) | Reducing reference count updates for stack variables | |
JP2624738B2 (ja) | 丸め処理方式 | |
JP2708526B2 (ja) | 2進整数除算処理方法 | |
JP2985093B2 (ja) | 演算制御装置 | |
JP2924281B2 (ja) | アドレス・ポインタ | |
JPH0553759A (ja) | 固定小数点演算ユニツト | |
JPS6138493B2 (ja) | ||
JP2005031847A (ja) | 整数演算の方法および整数演算プログラム、ならびに整数演算装置 | |
JP2003303096A (ja) | 除算回路 |