Content deleted Content added
→CPUs: -redundant links; some reformatting |
→CPUs: reorganized for improved flow; grouped sentences into related paragraphs |
||
Line 7:
In CPUs, an opcode may be referred to as '''instruction machine code'''<ref name="Intel_1973_MCS-4"/>, '''instruction code'''<ref name="Intel_1974_MCS-40"/>, '''instruction syllable'''<ref name="Jones_1988_CISC"/><ref name="Domagała_2012"/><ref name="Smotherman_2013"/><ref name="Jones_2016_CISC"/>, '''instruction parcel''' or '''opstring'''<ref name="Schulman_2005"/><ref name="Chiba_2007"/>. Beside the opcode itself, most instructions also specify the data they will process, which are called [[operand]]s. In addition to opcodes used in the [[instruction set architecture]]s (ISAs) of various CPUs, which are hardware devices, they can also be used in [[virtual machine#Process virtual machines|abstract computing machines]] as part of their [[byte code]] specifications.
Specifications and format of the opcodes are laid out in the ISA of the processor in question, which may be a general CPU or a more specialized processing unit.<ref name="Hennessy_2017"/> Opcodes for a given instruction set can be described through the use of an [[opcode table]] detailing all possible opcodes.
Apart from the opcode itself, an instruction normally also has one or more specifiers for operands on which the operation should act, although some operations may have ''implicit'' operands, or none at all.<ref name="Hennessy_2017"/> Depending on architecture, the operands may be [[processor register|register]] values, values in the [[call stack|stack]], other [[memory]] values, [[I/O]] ports (which may also be [[Memory-mapped I/O|memory mapped]]), etc., specified and accessed using more or less complex [[addressing mode]]s.{{citation needed|date=October 2015}} The types of operations include [[arithmetic]], data copying, [[logical operation]]s, and program control, as well as special instructions (such as [[CPUID]] and others).<ref name="Hennessy_2017"/>▼
▲Depending on architecture, the operands may be [[processor register|register]] values, values in the [[call stack|stack]], other [[memory]] values, [[I/O]] ports (which may also be [[Memory-mapped I/O|memory mapped]]), etc., specified and accessed using more or less complex [[addressing mode]]s.{{citation needed|date=October 2015}} The types of operations include [[arithmetic]], data copying, [[logical operation]]s, and program control, as well as special instructions (such as [[CPUID]] and others).<ref name="Hennessy_2017"/>
[[Assembly language]], or just ''assembly'', is a [[low-level programming language]] which uses [[Assembly language#Opcode mnemonics and extended mnemonics|mnemonic]] instructions and operands to represent [[machine code]].<ref name="Hennessy_2017"/> This enhances the readability while still giving precise control over the machine instructions. Most programming is currently done using [[high-level programming language]]s,<ref name="langpop"/> which are typically easier for humans to understand and write.<ref name="Hennessy_2017"/> These languages need to be compiled (translated into assembly language) by a [[Operating system|system]]-specific [[compiler]], or run through other compiled programs.<ref name="Swanson_2001"/>
|