
一起动脑筋 · 先看一个小故事
女孩看到一行加法代码,想知道它怎么变成屏幕上的数字。我们沿着它走一遍。
把过程摊开来看
- 写代码表达 3 加 5
- 编译转换为机器能执行的形式
- 执行处理数据
- 输出显示 8
CPU 执行的是机器指令。C++ 代码要经过工具处理,运行时再由计算机执行。
一行 C++ 不一定对应一条机器指令;编译器也可能提前算出固定结果。这张图帮助理解阶段,不是逐条指令的照片。
01我们写下的一行代码是什么?
int c = a + b;这是一行 C++ 源代码,描述“把 a 和 b 相加,再把结果保存到 c”。
02CPU 会直接读 C++ 吗?
不会。CPU 不直接执行 C++ 文本,它最终执行的是目标处理器能够识别的机器指令。
03从源码到可执行程序
预处理
处理 #include、宏等。
编译
分析语法语义并生成较低层代码。
汇编
生成目标文件中的机器代码。
链接
把目标文件和库组合成程序。
04运行时怎样进入内存?
启动时,操作系统创建进程,并把需要的代码和数据映射到进程虚拟地址空间;真正访问时可以按需调入物理内存。
05CPU 最后执行什么?
内存中的机器代码→CPU 取指、译码、执行→结果发生变化
06一行代码对应一条机器指令吗?
通常不是一一对应。一行 C++ 可能生成多条机器指令,也可能被编译器优化掉;多行代码也可能被合并优化。
你已经知道了什么
- C++ 源代码不会被 CPU 直接执行。
- 构建通常经历预处理、编译、汇编和链接。
- 运行时由操作系统创建进程并按需映射代码和数据。
- CPU 最终执行机器指令。
- 一行源码并不固定对应一条机器指令。
轮到你来试一试
只保存源代码,还没编译运行,屏幕就一定会出现 8 吗?
想好了吗?点开看解释
不会。保存只是把代码写进文件。还要经过适当的构建和运行步骤,输出语句才会产生可见结果。