This preview shows page 1. Sign up to view the full content.
Unformatted text preview: ble-extended-precision floating-point format is only operated on by the x87 FPU. See Section 11.6.8, "Compatibility of SIMD and x87 FPU Floating-Point Data Types," for a discussion of the compatibility of single-precision and double-precision floating-point data types between the x87 FPU and SSE/SSE2/SSE3 extensions. 4.3 POINTER DATA TYPES Pointers are addresses of locations in memory. In non-64-bit modes, the architecture defines two types of pointers: a near pointer and a far pointer. A near pointer is a 32-bit (or 16-bit) offset (also called an effective address) within a segment. Near pointers are used for all memory references in a flat memory model or for references in a segmented model where the identity of the segment being accessed is implied. A far pointer is a logical address, consisting of a 16-bit segment selector and a 32-bit (or 16-bit) offset. Far pointers are used for memory references in a segmented memory model where the identity of a segment being accessed must be specified explicitly. Near and far pointers with 32-bit offsets are shown in Figure 4-4. Near Pointer Offset 31 Far Pointer or Logical Address Segment Selector 47 32 31 Offset 0 0 Figure 4-4. Pointer Data Types 4.3.1 Pointer Data Types in 64-Bit Mode In 64-bit mode (a sub-mode of IA-32e mode), a near pointer is 64 bits. This equates to an effective address. Far pointers in 64-bit mode can be one of three forms: 16-bit segment selector, 16-bit offset if the operand size is 32 bits 16-bit segment selector, 32-bit offset if the operand size is 32 bits 16-bit segment selector, 64-bit offset if the operand size is 64 bits 4-8 Vol. 1 DATA TYPES See Figure 4-5. Figure 4-5. Pointers in 64-Bit Mode 4.4 BIT FIELD DATA TYPE A bit field (see Figure 4-6) is a contiguous sequence of bits. It can begin at any bit position of any byte in memory and can contain up to 32 bits. Bit Field Field Length Least Significant Bit Figure 4-6. Bit Field Data Type 4.5 STRING DATA TYPES Strings are continuous sequences of bits, bytes, words, or doublewords. A bit string can begin at any bit position of any byte and can contain up to 232 1 bits. A byte string can contain bytes, words, or doublewords and can range from zero to 232 1 bytes (4 GBytes). Vol. 1 4-9 DATA TYPES 4.6 PACKED SIMD DATA TYPES Intel 64 and IA-32 architectures define and operate on a set of 64-bit and 128-bit packed data type for use in SIMD operations. These data types consist of fundamental data types (packed bytes, words, doublewords, and quadwords) and numeric interpretations of fundamental types for use in packed integer and packed floatingpoint operations. 4.6.1 64-Bit SIMD Packed Data Types The 64-bit packed SIMD data types were introduced into the IA-32 architecture in the Intel MMX technology. They are operated on in MMX registers. The fundamental 64-bit packed data types are packed bytes, packed words, and packed doublewords (see Figure 4-7). When performing numeric SIMD operations on these data types, these da...
View Full Document
- Winter '11