当前位置: 首页 > news >正文

C++少儿编程(二十一)—软件执行流程

让我们将以下程序视为用C++编写的示例程序。

  1. 步骤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:最后,加载器将可执行文件加载到内存中。

在最后一步中,加载器将可执行文件加载到内存中,程序开始在可执行环境中运行。

http://www.dtcms.com/a/314581.html

相关文章:

  • 【微实验】MATLAB频谱 三维可视化
  • 量化大型语言模型的评估
  • Flutter开发 MaterrialApp基本属性介绍
  • CSDN文章创作用法
  • sqli-labs:Less-26a关卡详细解析
  • sqli-labs:Less-27a关卡详细解析
  • UA 配置Https域名
  • AI赋能SEO关键词优化
  • k8s的毫核
  • DQL 超维分析 - 1 DQL 原理
  • 无公网环境下在centos7.9上使用kk工具部署k8s平台(amd64架构)
  • redis可视化工具汇总
  • Ubuntu系统VScode实现opencv(c++)图像二维直方图
  • 免费MCP: JSON 转 Excel MCP
  • N4语法书
  • 数据结构——图及其C++实现(1)概念、存储结构、遍历
  • 【09】C++实战篇——C++ 生成静态库.lib 及 C++调用lib,及实际项目中的使用技巧
  • 10.苹果ios逆向-FridaHook-ios中的算法-CCMD5
  • curl发送文件bodyParser无法获取请求体的问题分析
  • RAG From Scratch 系列教程-3: Routing
  • 将AAL图谱对应到Yeo7大网络中【原理,代码分析】
  • 断点续传Demo实现
  • 16.8 华为昇腾CANN架构深度实战:3大核心引擎解析与性能优化216%秘籍
  • C++高频知识点(十四)
  • 如果发送的数据和接受的数据不一致时,怎么办?
  • 从 Hive 数仓出发,全面剖析 StarRocks、MySQL、HBase 的使用场景与区别
  • Linux-Day02.Linux指令
  • Vue 3 + AntV X6 实现流程编辑功能
  • C语言-指针[指针数组和数组指针]
  • 【web应用】Maven:Java 生态的构建与依赖管理利器