relocatable vs. absolute expressions
Typically, an expression that refers to a label, variable, procedure, or function is relocatable, and an expression that operates solely on constants is absolute.
A relocatable expression denotes a value that requires relocation at link
time. (Relocation is the process by which the linker assigns absolute
addresses to symbols.)
An absolute expression denotes a value that requires no such relocation.
At compile time, the compiler does not know the final address of a label, variable, procedure, or function.
The final address does not become known until link time, when the linker assigns a specific absolute address to the symbol.
The built-in assembler allows you to carry out any operation on an absolute value, but it restricts operations on relocatable values to addition and subtraction of constants.