Object code is the output of the compiler. It contains instructions and tokens like your source code, but in a compact and optimized (often executable) format. It can also contain other things like debugger symbols. Usually, object code is then processed by the linker, which connects the object code from each compilation unit together to form an executable (or library, such as a dll). The executable or library contains machine code, which can be executed directly by the processor and is specific to the machine architecture and operation set.