From WikiChip
immediate value
Revision as of 23:24, 19 July 2014 by Inject (talk | contribs)

An immediate value (or simply an immediate or imm) is a piece of data that is stored as part of the instruction itself instead of being in a memory location or a register. Immediate values are typically used in instructions that load a value or performs an arithmetic or a logical operation on a constant.

Overview

Under most instruction set architectures, various instructions can also perform operation on constant values. For example consider an ISA that can add two registers and store the result in a third register:

add r3, r2, r1       ; r3 = r2 + r1

The instruction set may also support the common case of adding a constant value (such as in the case of many programming languages that support ++var).

add r1, r1, 1       ; r1 = r1 + 1

In the code above, the value 1 is an immediate value that gets encoded in the add instruction itself.

Implementation restrictions

An encoding comparision between the MIPS32 ADD and ADD Immediate instructions. The immediate value is limited to the 0x00-0xFFFF range.

Because the immediate value is packed into the instruction itself certain ISAs have a restricted range of values that can be used as an immediate value. For example in MIPS32, an immediate value is limited to 16-bits. On some more complex architectures such as ARM, some instructions may accept a 16-bit value, others might accepted a smaller range with a the ability to rate the bits as desired.