Address Binding

Inside a program's source code, memory addresses are usually referred to using symbolic names such as i, count, and maxItem, which we call variables.

These symbolic names must be mapped or bound to physical memory addresses, which occurs in one or more of the following several stages:

  1. Compilation Time: If it is known at compilation time where a program will reside in physical memory, then absolute code can be generated by the compiler, containing actual physical addresses.
  2. Load Time: If the location at which a program will be loaded is not known at compile time, then the compiler must generate relocatable code, which references addresses relative to the start of the program.
  3. Execution Time: If a program can be moved around in memory during the course of its execution, then binding must be delayed until execution time. This requires special hardware, and is the method implemented by most modern OSes.