让我们将以下程序视为用C++编写的示例程序。
步骤1:预处理器将源代码转换为扩展代码。
当您运行程序时,源代码首先被发送到称为预处理器的工具。预处理器主要做两件事:
它会从程序中删除注释。
它扩展了预处理器指令,如宏或文件包含。
它最终将my-file.cpp或my-file.c转换为包含扩展源代码(或简称为扩展代码)的my-file.i文件。
刚才发生了什么?
宏#define PI 3.14被扩展,即它在area()方法中用3.14替换了PI。
文件包含#include<iostream>已展开,即它被文件iostream中存在的实际代码替换。
源代码(myfile.cpp)被转换为扩展代码(myfile.i)。
步骤2:编译器将扩展代码转换为汇编代码。
接下来是编译器的作用。编译器做两件事:
它检查程序是否存在语法错误。
如果没有发现错误,它会将扩展代码转换为汇编代码。
基本上,扩展代码my-file.i被转换为包含汇编代码的file.s。
步骤3:汇编程序将汇编代码转换为目标代码。
在此步骤中,下一个名为Assembler的工具将Assembly代码转换为Object代码。
目标代码也称为字节码、二进制代码或计算机可理解的机器级代码。
在windows上,包含目标代码的文件将是my-file.obj。
在macOS和Linux上,包含目标代码的文件将是my file.o。
步骤4:链接器将目标代码转换为可执行代码。
在此步骤中,名为Linker的工具将目标代码转换为可执行代码,即可执行文件my-file.exe。
步骤5:最后,加载器将可执行文件加载到内存中。
在最后一步中,加载器将可执行文件加载到内存中,程序开始在可执行环境中运行。