Instruction set

The instruction set is a list of some or all of the possible instructions that can be given to a particular processor.

Each instruction in a set is typically divided into operation codes (op-codes), which can be listed as mnemonics, and data such as values or addresses. Every instruction can be listed as binary numbers in one or more words. An assembler is used to convert from the mnemonic notation into the form of binary numbers, and is usually the last stage of a compiler. A disassembler can be used to convert the binary notation back into the binary form (assembler code).

Instruction sets differ from processor to processor.

Some microprocessors, such as the x86, are grouped into families, and often share parts of their instruction set. For example, the i486 contains all of the instructions of the i386 processor as well as some new ones.

Some instruction sets are optimized for particular kinds of work, for example 3D-Now! is designed for efficiently copying and transforming large arrays of memory, such as is commonly used in 3D graphics work.

Linux is compiled using GCC, which understands many different instruction sets. Someone should write more about that and give examples.