Das Zuordnen von Code an Speicheradressen kann zu drei unterschiedlichen Zeitpunkten geschehen:

graph TB
    A((source<br>program)) --> B
    subgraph Compile Time
        B[compiler or<br>assembler]
    end
    C((object<br>module))
    D((other<br>object<br>modules))
    subgraph Load Time
        E[linkage<br>editor]
        E --> F((load<br>module))
        G((system<br>library)) --> H[loader]
    end
    B --> C
    C --> E
    D --> E
    F --> H
    I((dynamically<br>loaded<br>system<br>library)) -- dynamic linking --> J
    H ---> J
    subgraph Execution/Run Time
        J[in-memory<br>binary<br>memory<br>image]
    end