What exactly is execution-time address binding?
Until the program is running, physical addresses make little (or no) sense: The instructions make reference to logical addresses.
While the program runs, the CPU maps logical addresses to physical addresses (they could be just exactly the same, or change e.g. by paging or just by relocation --- add the contents of a special register to each logical address to give the pysical address, used in some early machines to be able to place several programs tightly in memory and be able to move them around). If you look e.g. at the intel 8088/8086 (infamous CPUs for the original PC), it sports segment registers, so you can move say the stack around in RAM and the program doesn't care where it is.