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

专业的网站建设服务交易平台哈尔滨网络公司案例

专业的网站建设服务交易平台,哈尔滨网络公司案例,wordpress 查看更多,开发公司个人总结如果你是一名newbird的话#xff0c;建议观看如下视频加深你的理解#xff0c;再看如下内容#xff1a; https://www.bilibili.com/video/BV1N24y1B7nQ?p7 The cherno会额外告诉你如何将目标文件转换成汇编代码#xff0c;CPU执行指令的过程以及编译器如何通过删除冗余变…如果你是一名newbird的话建议观看如下视频加深你的理解再看如下内容 https://www.bilibili.com/video/BV1N24y1B7nQ?p7 The cherno会额外告诉你如何将目标文件转换成汇编代码CPU执行指令的过程以及编译器如何通过删除冗余变量进行优化等知识。 声明 以下内容均是chatGpt生成与对该视频总结获得的希望对大家有所帮助。 什么是C编译器 C编译器是将C源代码转换为可执行程序的软件工具比如最出名的Visual Studio。 工作原理 其工作原理可以分为三个主要阶段预处理、编译和链接。 1. 预处理 预处理阶段处理源代码中的预处理指令如#include和#define等并将它们替换为源代码。 预处理器还可以执行条件编译根据代码中定义的条件来包含或排除代码。处理完成后生成经过预处理的源代码。 2. 编译 编译阶段将预处理的源代码转换为中间代码包括生成抽象语法树等操作。 编译器对代码进行词法分析和语法分析并对代码进行语义检查以确保其符合C语言规范。然后编译器将中间代码转换为机器代码生成目标文件。 2.1 什么是中间代码 C编译器在编译阶段会将预处理后的源代码转换为中间代码也称为目标代码Object Code。 特性 这些中间代码是与平台无关的低级代码通常是二进制格式或汇编代码。 具体来说编译器会将源代码转换为抽象语法树AST。 2.2 什么是AST 概念 AST是编译器在编译过程中使用的一种数据结构用于表示源代码的语法结构。 编译器会对AST进行一系列的优化和转换以生成目标代码。这些优化包括删除冗余代码、提取公共子表达式、常量折叠等。 生成的中间代码是与平台无关的因为它们没有针对特定的CPU架构进行优化。在链接阶段链接器将这些目标文件合并成一个可执行文件并将其与操作系统和CPU架构相关的库文件链接起来生成最终的可执行文件。 3. 链接 链接阶段将多个目标文件和库文件合并成一个可执行文件。 链接器会解析代码中的符号找到其定义并将其连接起来。这些符号可能来自其他目标文件或库文件。 3.1 具体例子 假设我们有两个C源代码文件一个是main.cpp一个是hello.cpp。main.cpp调用了hello.cpp中的一个函数需要将它们链接起来才能生成可执行文件。 现在main.cpp内容如下 #include iostream #include hello.hint main() {hello();return 0; }另一个是hello.cpp内容如下 #include iostream #include hello.hvoid hello() {std::cout Hello, world! std::endl; }还有一个头文件hello.h内容如下 #ifndef HELLO_H #define HELLO_Hvoid hello();#endif当我们运行时会按如下的命令编译这些代码 $ g -c main.cpp $ g -c hello.cpp $ g -o hello main.o hello.o第一条命令将main.cpp编译为main.o目标文件第二条命令将hello.cpp编译为hello.o目标文件最后一条命令将两个目标文件链接起来生成可执行文件hello。 我们可以执行./hello命令来运行程序结果应该输出Hello, world!ChatGpt说的我没测试但是逻辑很合理的样子。 可以看到在链接阶段链接器将main.o和hello.o文件合并为一个可执行文件。首先链接器会对目标文件进行符号解析找到main.o中调用hello.cpp函数的符号引用并在hello.o中找到符号定义。然后链接器将引用和定义链接起来生成可执行文件。 3.2 额外问题符号冲突的问题 概念 链接器还需要解决符号冲突的问题。当多个目标文件中存在相同的符号定义时链接器会报告错误因为无法判断应该使用哪个定义。 解决方案 为了解决这个问题C提供了一些机制。 在头文件中声明函数或变量为extern在链接阶段不进行符号解析而是在运行时再进行解析。此外链接器还可以使用静态库或动态库来解决符号冲突问题。静态库在链接阶段被直接合并到可执行文件中而动态库在运行时加载到内存中。 4. 总结 最终生成的可执行文件可以在计算机上运行执行程序所描述的操作。 总的来说C编译器的工作原理是将源代码转换为可执行文件的过程通过预处理、编译和链接三个阶段实现。
http://www.yayakq.cn/news/6259/

相关文章:

  • 网站后台购买网上政务服务平台入口
  • 子网站 两微一端的建设方案中国机房建设公司排名
  • 网站二级目录是什么建设银行手机外汇网站
  • 学院招生网站建设方案微信小程序开发图解案例教程
  • 注册网站如何备案赣州网络公司排名
  • vs网站制作教程苏州 中英文网站建设
  • 如何把网站放到空间别人可以访问wordpress建站安全吗
  • 东莞品牌网站建设去哪个网站有客户找做标书的
  • 网站商城具有哪些功能模块温州外经贸局网站
  • 如何修改网站后台的用户名和密码个人博客网站的建设结构图
  • 做亚克力在那个网站上好wordpress回帖可见
  • 河源今天发生的重大新闻哈西建站优化
  • 四川阿坝建设招标网站菲律宾网站网站建设
  • 网站建设报价分析危险网站解除
  • 彩票做网站网站如何做好内链
  • 网站建设亇金手指下拉排名亅怎样自创广告网站
  • 网站建设售后服务承诺书做网站竞争者的优势
  • 源码出售网站触屏手机网站设计
  • 新开传奇网站发布站三端互通企业网站设计优化公司
  • 哪里有可以做空比特币的网站福田欧曼货车
  • 哪个行业该做网站但是没有做云捷配快速开发平台
  • 宁夏建设职业技术学院官方网站用KEGG网站做KEGG富集分析
  • 海洋公园网站建设方案wordpress数据库信息文件
  • 易科技 建设网站兴义建设局网站
  • 吉林网站建设方案目前上海有几个区
  • 烟台学校网站建设网页设计图片紧挨着
  • 罗湖网站建设价格贵州建设厅文件网站首页
  • 网站建设方案pptwordpress淘宝客模板修改
  • 佛山手机网站设计制作企业管理系统oa
  • 如何判断网站是否被k自己做网站app