iAPX432のデータ型

 iAPX432のマニュアルを読もうとしてさっぱりわからないのでとっかかりになりそうな所からメモ。

 Introduction to the iAPX432 Architecture(PDF)

CHAPTER 3 DATA MANIPULATION

3.1章から3.3章まで

iAPX432は以下のデータ型を持つ。(Primitive Data Type)

・CHARACTER 8bit
・ORDINAL
 SHORT ORDINAL 16bit符号なし整数
 ORDINAL 32bit符号なし整数
・INTEGER
 SHORT INTEGER 16bit符号付き整数
 INTEGER 32bit符号付き整数
・REAL
 SHORT REAL 単精度浮動小数点
 REAL 倍精度浮動小数点
 TEMPORARY REAL 80bit拡張浮動小数点

 従来の(現在もそうだけど)プロセッサは命令によって扱えるデータの型は決まっている。例えばメモリ上のビット列を整数とみなして演算するときはadd命令、浮動小数点とみなして演算するときはfadd命令のように。iAPX432は命令(オペレータ)とそれに引数として与えるデータ型によって、データ型に合った演算が行われる。その組み合わせについては以下のとおり。

画像


X は演算可能なデータ型
* は与えられたデータ型とTEMPORARY REAL型との組み合わせもできる
ー はあっても無効な型で演算不可能
空白は演算不可能

・MOVE OPERATORS(MOVE,SAVE,ZERO,ONE)
 REAL型のONE演算を除きすべてできる。

・LOGICAL OPERATORS(AND,OR,XOR.XNOR.COMPLEMENT)
 CHARACTER型とORDINAL型のみ。

・ARITHMETIC OPERATORS(加減乗除余り+1-1負値絶対値√)
 加減算はすべての型でできる。REAL型はTEMPORARY REAL型を混ぜることもできる。
 乗除算はCHAR型以外すべてできる。REAL型はTEMPORARY REAL型を混ぜることもできる。
 剰余はORDINAL,INTEGER,TEMPORARY REAL型のみ。
 +1/-1はREAL型以外可能。
 負の値はINTEGER型とREAL型が可能。(CHARACTERとORDINALは符号なしなので)
 絶対値はREAL型のみ
 平方根はTEMPORARY REAL型のみ

・BIT FIELD OPERATORS(EXTRACT,INSERT,SIGNIFICANT BIT)
 ORDINAL型のみ。

・RELATIONAL OPERATORS(==,!=,=0,>,≧,正.負)
 EQUAL,EQUAL ZEROはすべての型で可能
 NOT EQUAL,NOT EQUAL ZEROはREAL型以外で可能
 GREATER THAN/GREATER THAN OR EQUALはすべての型で可能
 正負判定はINTEGER型とREAL型のみ

・CONVERSION OPERATORS(型変換)
 CHARACTERとSHORT ORDINALは相互に変換できる。
 ORDINALとSHORT ORDINALは相互に変換できる。
 INTEGERとSHORT INTEGERは相互に変換できる。
 INTEGERとORDINALは相互に変換できる。
 CHARACTER型以外はTEMPORARY REAL型に変換できる。
 TEMPORARY REAL型はINTEGER/ORDINAL/REALに変換できる。
 →浮動小数点から整数に相互に変換するにはTEMPORARY REAL型を経由しなければならない。
 →8bitと16bitは相互変換可能、16bitと32bitは相互変換可能だが、8bitと32bitの変換は直接できない。

 これらのデータ型はPrimitiveと呼ばれるが、組み合わせてStructured Data types(配列や構造体)として扱うこともできる。ハードの支援機能はないが扱いやすい仕組みがある。


感想:
・浮動小数点演算の基本はTEMPORARY REAL型(80bit)っぽい
・CHARACTER型は文字コードが8bit以内であることが前提
・現代からみればINTEGER/ORDINALが32bitまでと拡張性に乏しい。浮動小数点も同様。
・演算できない型の組み合わせはどうするんだろうか。例外発生?
・ORDINAL型とINTEGER型は分ける必要があるのだろうか?

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック