女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

女孩看到一行加法代码,想知道它怎么变成屏幕上的数字。我们沿着它走一遍。

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 写代码表达 3 加 5
  2. 编译转换为机器能执行的形式
  3. 执行处理数据
  4. 输出显示 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 吗?

想好了吗?点开看解释

不会。保存只是把代码写进文件。还要经过适当的构建和运行步骤,输出语句才会产生可见结果。