Opcode

From Wikipedia, the free encyclopedia

In computer science, an opcode is the portion of a machine language instruction that specifies the operation to be performed. The term is an abbreviation of Operation Code. Their specification and format will be laid out in the instruction set architecture (ISA) of the computer hardware component in question—normally a CPU, but possibly a more specialised unit. A complete machine language instruction contains an opcode and, optionally, the specification of one or more operands—what data the operation should act upon. Some operations have implicit operands, or indeed none. Some ISAs have instructions with defined fields for opcodes and operands, while others (e.g. the Intel x86 architecture) have a more complicated and ad-hoc structure.

The operands upon which opcodes operate may, depending on CPU architecture, consist of registers, values in memory, values stored on the stack, I/O ports, the bus, etc. The operations an opcode may specify can include arithmetic, data copying, logical operations, and program control.

Opcodes can also be found in byte codes interpreted by a byte code interpreter (or virtual machine, in one sense of that term). In these, an instruction set architecture is created to be interpreted by software, rather than a hardware device. Often, byte code interpreters work with higher-level data types and operations than a hardware instruction set, but are constructed along similar lines. Examples include the Java programming language's Java Virtual Machine (JVM), the byte code used in GNU Emacs for compiled LISP code, and many others.

Machine language is tedious and difficult for humans to program in directly, so if the abstraction given by a higher-level programming language is not desired, an assembly language is used. Here, mnemonic instructions are used that correspond to the opcode and operand specifications of the machine language instructions generated. This gives a greater level of readability and comprehensibility than working with machine language operations directly, while still giving accurate control of the machine language generated. A program called an assembler transforms assembly language into machine code.

[edit] See also

In other languages