previous | contents | next

718 Part 3½ Computer Classes

Section 4½ Maxicomputers

VAX-11 instruction set provides support for this interpretation.

2 Floating data types are the 32-bit floating and the 64-bit double floating. These data types are binary normalized, have an 8-bit signed exponent, and have a 25- or 57-bit signed fraction with the redundant most significant fraction bit not represented.

3 The variable bit field data type is 0 to 32 bits located arbitrarily with respect to addressable byte boundaries. A bit field is specified by three operands: the address of a byte, the starting bit position P with respect to bit 0 of that byte, and the size S of the field. The VAX-11 instruction set provides for interpreting the field as signed or unsigned.

4 The character string data type is 0 to 65535 contiguous bytes. It is specified by two operands: the length and starting address of the string. Although the data type is named "character string," no special interpretation is placed on the values of the bytes in the character string.

5 The decimal string data types are 0 to 31 digits. They are specified by two operands: a length (in digits) and a starting address. The primary data type is packed decimal with two digits stored in each byte except that the byte containing the least significant digit contains a single digit and the sign. Two ASCII character decimal types are supported: leading separate sign and trailing embedded sign. The leading separate type is a "+ ," "—," or "<blank>" (equivalent to "+") ASCII character followed by 0 to 31 ASCII decimal digit characters. A trailing embedded sign decimal string is 0 to 31 bytes which are ASCII decimal digit characters except for the character containing least significant digit which is an arbitrary encoding of the digit and sign.

All of the data types except field may be stored on arbitrary byte boundaries—there are no alignment constraints. The field data type, of course, can start on an arbitrary bit boundary.

Attributes of and symbolic representations for most of the data types are given in Table 1 and Fig. 1.

Instruction Format and Address Modes

Most architectures provide a small number of relatively fixed instruction formats. Two problems often result. First, not all operands of an instruction have the same specification generality. For example, one operand must come from memory and another from a register; or one must come from the stack and another from memory. Second, only a limited number of operands can be accommodated: typically one or two. For instructions which inherently require more operands (such as field or string instructions), the additional operands are specified in ad hoc ways: small literal fields in instructions, specific registers or stack positions, or packed in fields of a single operand. Both these problems lead to increased programming complexity: they require superfluous move type instructions to get operands to places where they can be used and increase competition for potentially scarce resources such as registers.

To avoid these problems two criteria were used in the design of the VAX-11 instruction format: (1) all instructions should have the "natural" number of operands and (2) all operands should have the same generality in specification. These criteria led to a highly

Table 1 Data Types

Data type

Size

Range (decimal)

Integer

 

Signed

Unsigned

Byte

8bits

—128 to + 127

0 to255

Word

16 bits

—32768 to +32767

0 to 65535

Longword

32 bits

- 231 to +231- 1

0 to 232- 1

Quadword

64 bits

- 263 to + 263- 1

0 to 264- 1

Floating point

 

±2.9 ´ 10- 3 to 1.7 ´ 1038

Floating

32 bits

approximately seven decimal digits precision

Double Floating

64 bits

approximately sixteen decimal digits precision

Packed decimal string

0 to 16 bytes (31 digits)

numeric, two digits per byte sign in low half of last byte

 

Character string

0 to 65535 bytes

one character per byte

 

Variable-length bit field

0 to 32 bits

dependent on interpretation

previous | contents | next