Difference between compile time ,load time and execution time?
These terms seem self explanatory to me, but here's an attempt at describing them. Links for further reading are included.
Compile time is when your code is being processed by a compiler. In this context, it's talking about a compiler that is transforming your code into an executable binary.
Load time is when the Operating System is reading an executable from long term storage (typically a hard drive) and loading it into short term memory (RAM) from which it can be executed. Generally the hard drive is too slow to feed the CPU, so fast memory is used to store instructions/programs that the CPU is getting ready to execute. This is also when the initial memory allocation is reserved and initialized for use by the program.
Execution time is when a program is executing or running. The instructions are in memory and are being processed by the CPU. Additional memory may be allocated and/or deallocated at this time.
Without going too much into how its done, I'll write about what is done. With reference to the "binding" word, here's what I know :
Compile Time Binding : It is the translation of logical addresses to physical addresses at the time of compilation. Now this type of binding is only possible in systems where we know the contents of the main memory in advance and know what address in the main memory we have to start the allocation from. Knowing both of these things is not possible in modern multi-programming systems. So it can be safely said the compile time binding would be possible in systems not having support for multi-programming.
Load Time Binding : It is the translation of the logical addresses to physical addresses at the time of loading. The relocating loader contains the base address in the main memory from where the allocation would begin. So when the time for loading a process into the main memory comes, all logical addresses are added to the base address by the relocating loader to generate the physical addresses.
Run Time Binding : In most modern processors multi-programming is supported. Therefore, there comes the need of shifting the physical addresses from one location to another during run time. This is taken care by the run time binding concept. It is used in Compaction to remove External Fragmentation. It is also used in Virtual Functions.
I hope this solves your doubt!