Opcode

This is an old revision of this page, as edited by Pearle (talk | contribs) at 09:21, 25 August 2005 (Changing {{cleanup}} to {{cleanup-date|June 2005}}). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

You must add a |reason= parameter to this Cleanup template – replace it with {{Cleanup|June 2005|reason=<Fill reason here>}}, or remove the Cleanup template.

Opcode stands for Operation Code. Opcodes operate on registers, values in memory, values stored on the stack, I/O ports, the bus, etc. They are used to perform arithmetic operations and move and change values. Operands are the things that opcodes operate on. Microprocessors perform operations using binary bits. A bit is either on (1) or off (0). Eight bits is equal to a byte (on most modern processors), and two bytes is equal to a word.

Another term for opcodes is Byte code. Byte code is used especially to describe higher level constructs as is the case with the Java Language's JVM (Java Virtual Machine). For instance, byte code 1A might be the "iconst_2" instruction which pushes the number 2 on the stack. This is a slightly higher level of abstraction than opcodes, which might need to load the number 2 into a register, and then push the register's value on the stack.

As an example let's design a crude 4-bit microprocessor.

  • First: All registers, ALUs, counters, and addresses must have a data path of 4-bits.
  • Second: All of our instructions must fit in a 3-bit address.

Below is a diagram of the opcodes of the micorprocessor:

                op-codes   mnemonic    operations explanation
                 000        ADD        add  A to B and store in b
                 001        mov        move A to B and store in b
                 010        Jmp        jump value in A
                 011        xorA       xor A with next op-code store in b
                 100        clrA       clear A
                 101        return     return to pointer
                 110        counter    counter value
                 111        end        end program

When the op-code values are active at the decoders logic inputs, the desired operations are performed. Each of these operations is assigned a numeric code, this is the opcode. To assist in the use of these numeric codes, mnemonics are used as textual abbreviations. It's much easier to remember ADD than 05, for example.

See also