When browsing through the x86 Assembly Language Reference Manual, I came across this definition of an immediate operand:
Operands can be immediate (that is, constant expressions that evaluate to an inline value), [...]
If I got it correctly, an expression returns a value. Does a constant expression then return a constant value? Does inline value mean that it will be substituted by some other value after having undergone the process of assembly?
It just means that the expression must be a value that can be calculated during assembly. Examples of constant expressions include:
5
5+5
5*5
MyConstant (where this constant is defined somewhere else)
MyConstant*4
Values for all above can be determined by the assembler and substituted with the value of the expression.
In contrast, non-constant expressions have values that cannot be determined during assembly. Examples include:
ah (a register)
ah*al (expression containing registers)
[0x800] (a memory location)