Most general purpose computer systems are built around a general-purpose processor, which is typically an integrated circuit operable to perform a wide variety of operations useful for executing a wide variety of software. The processor is able to perform a fixed set of instructions, which collectively are known as the instruction set for the processor. A typical instruction set includes a variety of types of instructions, including arithmetic, logic, and data movement instructions.
Arithmetic instructions include common math functions such as add and multiply. Logic instructions include logical operators such as AND, NOT, and invert, and are used to perform logical operations on data. Data movement instructions include instructions such as load, store, and move, which are used to handle data within the processor.
Data movement instructions can be used to load data into registers from memory, to move data from registers back to memory, and to perform other data management functions. Data loaded into the processor from memory is stored in registers, which are small pieces of memory typically capable of holding only a single word of data. Arithmetic and logical instructions operate on the data stored in the registers, such as adding the data in one register to the data in another register, and storing the result in one of the two registers or in a third register.
A variety of data types and instructions are typically supported in sophisticated processors, such as operations on integer data, floating point data, and other types of data in the computer system. Because the various data types are encoded into the data words stored in the computer in different ways, adding the numbers represented by two different words stored in two different registers involves different operations for integer data, floating point data, and other types of data.
For these and other reasons, it is desirable to carefully consider the data types and instructions supported in a processor's register and instruction set.