Content deleted Content added
m Changing {{cleanup}} to {{cleanup-date|June 2005}} |
Wholly rewritten. I felt the example was incomprehensible to anyone needing the help, so I removed it. Perhaps a better one can be created? |
||
Line 1:
{{cleanup-date|June 2005}}
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 '''Op'''eration '''Code'''. Their specification and format will be laid out in the [[instruction set architecture]] (ISA) of the [[computer hardware]] component in question—normally a [[central processing unit|CPU]], but possibly a more specialised unit. A complete machine language instruction contains an opcode and, optionally, the specification of one or more [[operand]]s—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 on may, depending on CPU architecture, consist of [[processor register|registers]], values in [[memory]], values stored on the [[Stack (computing)|stack]], [[I/O]] ports, the [[Computer bus|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 code]]s 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.
[[Category:Computing]]
|