X86アセンブラ/組み込みデータ型
厳密に言えば、アセンブリには、高級言語のような定義済みのデータ型はありません。汎用レジスタは、2バイト、4バイトあるいは8バイトの任意のシーケンスを保持することができ、そのバイトが数字や文字、その他のデータを表すかどうかは関係ありません。同じように、メモリーブロックにも具体的な型はなく、好きな値を割り当てることができます。
しかし、アセンブリのデータは、整数型と浮動小数点型の2つに分類することができる。浮動小数点の値をレジスタにロードして整数と同じように扱うこともできますが、予想外の結果になるので、分けて考えた方がよいでしょう。
整数
[編集]整数とは、正または負の整数を表します(コンピューターでは0を正として扱います)。8086アーキテクチャーでは、当初、8ビットと16ビットのサイズがあり、最も基本的な操作を行うことができた。その後、80386からはレジスターの大きさが拡張されて32ビットに対応し、そのサイズの整数の演算が可能になりました。最新のx86アーキテクチャーのシステムでは、64ビット命令に対応していますが、最適な効果を得るためには64ビットのオペレーティングシステムが必要である。
コンピューターは、負の数を格納するために2の補数を使用します。最上位のビットが符号を表し、セットされたビットは負の符号を表す。正の数の場合、残りのビットは通常の方法で値を格納します。負の数が格納されている場合、残りのビットは最大値までの差を格納します。これにより、オーバーフロー時に発生する効果を利用した操作が容易になります。ただし、値を符号なしの値として扱うことも可能です。アセンブリ命令の中には、符号ビットの扱いが微妙に異なるものがあるため、符号付き整数と符号なし整数は微妙に区別されます。
浮動小数点数
[編集]浮動小数点数は、実数の(有限の)サブセットです。浮動小数点数は通常、3.14159のように、小数点の前後に数字を含みます。小数点がすべての桁の後にあると理解されている整数とは異なり、浮動小数点数では小数点が桁の並びのどこかに浮かんでいる。
元々、浮動小数点はメインプロセッサーの一部ではなく、エミュレーションソフトウェアを使用する必要があった。しかし、このデータ型を演算できる浮動小数点コプロセッサーが登場し、486DXからはCPUに直接組み込まれるようになった。
このように、浮動小数点演算は必ずしもすべてのプロセッサに対応しているわけではないので、この種の演算を行う必要がある場合には、ソフトウェアライブラリをバックアップコードパスとして使用するとよいでしょう。
最近のプロセッサはすべてIEEE 754規格を採用しており、その詳細はWikibook「浮動小数点数」に記載されています。比較的短い2の累乗(負の累乗も含む)の和として表現できない数値は、常に近似値であることを覚えておく必要があります。