Generating machine code for high-level programming languages