• 検索結果がありません。

IA-32 インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 上巻:基本アーキテクチャ

4-4

データ型

4

4.2.1.

整数

IA-32

アーキテクチャは、2種類の整数(符号なし整数と符号付き整数)を定義してい

る。符号なし整数は、0~正の最大数の範囲の通常の

2

進値で、選択したオペランド・

サイズでエンコードできる。符号付き整数は、正と負の両方の整数値を表現できる、

2

の補数の

2

進値である。

一部の整数命令(

ADD

SUB

PADDB

PSUBB

命令など)は、符号なし整数と符号 付き整数のオペランドを操作できる。その他の整数命令(

IMUL

MUL

IDIV

DIV

FIADD

FISUB

など)は、いずれかのタイプの整数だけを操作する。

以下の各節では、

2

種類の整数のエンコーディングと範囲について説明する。

4.2.1.1. 符号なし整数

符号なし整数は、1バイト、1ワード、1ダブルワード、またはクワッドワードに格納 される符号なし

2

進数である。符号なし整数値の範囲は、符号なしバイト整数では

0

255、符号なしワード整数では 0

65,535、符号なしダブルワード整数では 0

2

32

-1、符号なしクワッドワード整数では 0

2

64

-1

になる。符号なし整数は、序数とも呼

ばれる。

4.2.1.2. 符号付き整数

符号付き整数は、1バイト、1ワード、1ダブルワード、または

1

クワッドワードに格 納される符号付き

2

進数である。符号付き整数のすべての演算において、2の補数表 現が使用されているものと見なされる。符号ビットは、バイト整数ではビット

7

に、

ワード整数ではビット

15

に、ダブルワード整数ではビット

31、クワッドワード整数

ではビット

63

に配置される(符号付き整数のエンコーディングについては表

4-1.

を参 照)。

IA-32 インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 上巻:基本アーキテクチャ

4-6

符号ビットは、負の整数に対してセットされ、正の整数とゼロに対してはクリアされ る。整数値の範囲は、バイト整数では

-128

+127

、ワード整数では

-32,768

+32,767

、 ダブルワード整数では

-2

31

+2

31

-1

、クワッドワード整数では

-2

63

+2

63になる。

整数値をメモリに格納するとき、ワード整数は連続する

2

バイトに格納され、ダブル ワード整数は連続する

4

バイトに格納され、クワッドワード整数は連続する

8

バイト に格納される。

整数不定値は、

x87 FPU

が整数値を操作するときに戻すことがある、特殊な値である。

詳細は

8.2.1.

項「不定値」を参照のこと。

4.2.2.

浮動小数点データ型

IA-32

アーキテクチャは、単精度浮動小数点、倍精度浮動小数点、拡張倍精度浮動小

数点の

3

つの浮動小数点データ型を定義しており、これらのデータ型を操作する(図

4-3.

を参照)。これらのデータ型のデータ・フォーマットは、

2

進浮動小数点演算に関 する

IEEE

規格

754

で指定されたフォーマットに直接対応する。

4-2.は、それぞれの浮動小数点データ型で表現できる、長さ、精度、および近似的

な正規化範囲を示している。これらのデータ型では、デノーマル値もサポートされる。

表4-1. 符号付き整数のエンコーディング

クラス 2の補数のエンコーディング

符号

最大 0 11..11

. .

. .

最小 0 00..01

0 0 00..00

最小 1 11..11

. .

. .

最大 1 00..00

整数不定値 1 00..00

符号付きバイト整数 符号付きワード整数 符号付きダブルワード整数 符号付きクワッドワード整数

7ビット

15 ビット

31ビット

63 ビット

データ型

4

注記

4.8.節「実数フォーマットと浮動小数点フォーマット」では、IEEE規格754の浮 動小数点フォーマットの概要を説明し、整数ビット、QNaN、SNaN、デノーマル 値などの用語を定義する。

4-3.は、3

つの浮動小数点データ型について、0、デノーマル型有限数、ノーマル型

有限数、無限大、NaNの浮動小数点エンコーディングを示している。また、QNaNの 浮動小数点不定値のフォーマットを示す。(QNaNの浮動小数点不定値の使い方の説明 は、4.8.3.7.項「QNAN浮動小数点不定数」を参照のこと。)

単精度フォーマットと倍精度フォーマットでは、仮数部の小数部分だけがコード化さ れる。整数部分は、

0

とデノーマル型有限数を除き、すべて

1

と見なされる。拡張倍 精度フォーマットでは、整数部分がビット

63

に、小数部分の最上位ビットがビット

62

に格納される。この場合、整数部分はノーマル型数、無限大、

NaN

に対しては明示的 に

1

に設定され、ゼロおよびデノーマル型数については

0

に設定される。

表4-2. 浮動小数点データ型の長さ、精度、および範囲

データ型 長さ 精度

(ビット)

ノーマル型の近似範囲

2 0

単精度 32 24 2–126 ~ 2127 1.18 × 10–38~ 3.40 × 1038

倍精度 64 53 2–1022~ 21023 2.23 × 10–308 ~ 1.79 × 10308

拡張倍精度 80 64 2–16382 ~216383 3.37 × 10–4932 ~ 1.18 × 104932

IA-32 インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 上巻:基本アーキテクチャ

4-8 注:

1.整数ビットは暗黙であり、単精度や倍精度フォーマットでは格納されない。

2. SNaNのエンコーディングの小数部分は、ゼロでない値で、最上位ビットが0でなければならない。

それぞれの浮動小数点データ型の指数は、バイアス付きフォーマットでコード化され

る。

4.8.2.2.

項「バイアス付き指数」を参照のこと。バイアス定数は、単精度フォー

マットでは

127

、倍精度フォーマットでは

1023

、拡張倍精度フォーマットでは

16,383

になる。

浮動小数点値をメモリに格納する場合は、単精度値はメモリ内の連続する

4

バイトに、

倍精度値は連続する

8

バイトに、拡張倍精度値は連続する

10

バイトにそれぞれ格納さ れる。

表4-3. 浮動小数点とNaNのエンコーディング

クラス 符号 バイアス付き指数 仮部数

整数部分1 小数部分

+∞ 0 11..11 1 00..00

+ノーマル 0

. . 0

11..10 . . 00..01

1 . . 1

11..11 . . 00..00 +デノーマル 0

. . 0

00..00 . . 00..00

0 . . 0

11.11 . . 00..01

+ゼロ 0 00..00 0 00..00

ゼロ 1 00..00 0 00..00

デノーマル 1 . . 1

00..00 . . 00..00

0 . . 0

00..01 . . 11..11

ノーマル 1

. . 1

00..01 . . 11..10

1 . . 1

00..00 . . 11..11

− ∞ 1 11..11 1 00..00

NaNs SNaN X 11..11 1 0X..XX2

QNaN X 11..11 1 1X..XX

QNaN 浮動小数点不 定数

1 11..11 1 10..00

単精度: 倍精度: 拡張倍精度:

8ビット

11ビット

15ビット

23ビット

52ビット

63ビット

データ型

4

単精度および倍精度浮動小数点データ型は、

x87 FPU

命令、

SSE

SSE2

SS3

によっ て操作される。拡張倍精度浮動小数点フォーマットは、

x87 FPU

だけが操作できる。

x87 FPU

命令と、

SSE

SSE2

SSE3

の間の、単精度および倍精度浮動小数点データ型 の互換性については、

11.6.8.

項「

SIMD

浮動小数点データ型と

x87 FPU

浮動小数点デー タ型の互換性」を参照のこと。