This is classic and is still quite applicable today. Create the simplest thing that could possibly work. This classic sequence applies to all software development, but bears repetition.Ĭoncentrate on the first step of the sequence. In languages like Java and C# linking may be totally dynamic, done by the VM at load time. Most native-code compilers know how to call a linker to produce an executable, but it's not a compilation step per se. the use of vector instructions when possible, instruction reordering to increase branch prediction efficiency, and so on.Īfter that, object code is ready for linking.
Then that language is converted into platform-specific code (x86, ARM, etc) doing roughly the same thing in a platform-optimized way.
They use an intermediate low-level but platform-independent language for initial code generation. Most modern compilers (for instance, gcc and clang) repeat the last two steps once more.