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

如何建设wap网站建设厅注册中心网站考试报名费缴费

如何建设wap网站,建设厅注册中心网站考试报名费缴费,军刀seo,网站建设的前期工作基础✅博客主页:爆打维c-CSDN博客​​​​​​ 🐾 🔹分享c语言知识及代码 一、编译和链接实例 假设我们有一个名为main.c的C语言源文件,它包含了一个简单的Hello World程序。我们可以使用gcc编译器对该源文件进行编译,生成一个可执行…

✅博客主页:爆打维c-CSDN博客​​​​​​ 🐾

🔹分享c语言知识及代码


一、编译和链接实例

假设我们有一个名为main.c的C语言源文件,它包含了一个简单的Hello World程序。我们可以使用gcc编译器对该源文件进行编译,生成一个可执行文件。具体步骤如下:

  1. 预处理:首先,gcc编译器会对main.c文件进行预处理,处理其中的宏定义、条件编译等指令,生成一个预处理后的文件(通常为.i文件)。
  2. 编译:然后,gcc编译器会对预处理后的文件进行编译,将其转换为汇编代码文件(通常为.s文件)。这个过程包括了词法分析、语法分析、语义分析和优化等步骤。
  3. 汇编:接着,汇编器会将汇编代码文件转换为机器语言的目标文件(通常为.o文件)。
  4. 链接:最后,链接器会将目标文件和必要的库文件进行链接,生成一个可执行的二进制文件(如a.out)。

二、预处理、编译、汇编、链接详解

1. 预处理(预编译)

在预处理阶段,源⽂件和头⽂件会被处理成为.i为后缀的⽂件。
gcc 环境下想观察⼀下,对 test.c ⽂件预处理后的.i⽂件,命令如下:
  gcc -E test.c -o test.i
预处理阶段主要处理那些源⽂件中#开始的预编译指令。⽐如:#include,#define,处理的规则如下:
将所有的 #define 删除,并展开所有的宏定义。
处理所有的条件编译指令,如: #if #ifdef #elif #else #endif
处理#include 预编译指令,将包含的头⽂件的内容插⼊到该预编译指令的位置。这个过程是递归进
⾏的,也就是说被包含的头⽂件也可能包含其他⽂件。
删除所有的注释
添加⾏号和⽂件名标识,⽅便后续编译器⽣成调试信息等。
或保留所有的#pragma的编译器指令,编译器后续会使⽤。
经过预处理后的.i⽂件中不再包含宏定义,因为宏已经被展开。并且包含的头⽂件都被插⼊到.i⽂件
中。所以当我们⽆法知道宏定义或者头⽂件是否包含正确的时候,可以查看预处理后的.i⽂件来确认。

2. 编译

编译是将预处理后的源代码转换为汇编代码的过程。编译器会检查源代码的语法和语义错误,并生成一个或多个汇编文件。
编译过程的命令如下:
1 gcc -S test.i -o test.s

在编译阶段,编译器会进行以下操作:

  • 词法分析:将源代码分解为一系列的记号(tokens)或词汇单元(lexical units),如变量名、关键字、操作符、标点符号等。
  • 语法分析:根据语言的语法规则,将记号组合成语法结构(如表达式、语句、程序块等)。
  • 语义分析:检查源代码的语义,确保它们有意义。例如,检查变量是否在使用前已定义,函数调用的参数是否与函数定义匹配等。
  • 中间代码生成:将源代码转换为一种中间表示形式(如三地址码),以便后续的优化和汇编。
  • 优化:对中间代码进行优化,以提高程序的执行效率。
  • 目标代码生成:将优化后的中间代码转换为特定机器或目标平台的汇编代码。

3. 汇编

汇编器是将汇编代码转转变成机器可执⾏的指令,每⼀个汇编语句⼏乎都对应⼀条机器指令。就是根据汇编指令和机器指令的对照表⼀⼀的进⾏翻译,也不做指令优化。
汇编的命令如下:
gcc -c test.s -o test.o

4.链接

链接是⼀个复杂的过程,链接的时候需要把⼀堆⽂件链接在⼀起才⽣成可执⾏程序。
链接过程主要包括:地址和空间分配,符号决议和重定位等这些步骤。
比如写了一个项目,有多个文件
每个文件都是独立的, 每个源⽂件都是单独经过编译器处理⽣成对应的⽬标⽂件。
我们在 test.c 文件中每一次使用snake.c 中的函数时的必须确切的知道snake.c 中的函数的地址,但是由于每个文件是单独编译的,在编译器编译 test.c的时候并不知道snake.c 中的函数的地址,(假设使用Add函数)所以暂时把调用Add函数指令的目标地址搁置。等待最后链接的时候由链接器根据引用的符号,在其他模块中查找Add函数的地址,然后将 test.c 中所有引用到Add函数的指令重新修正,让他们的目标地址为真正的 Add 函数的地址,对于全局变量也是类似的方法来修正地址。这个地址修正的过程也被叫做: 重定位。
http://www.yayakq.cn/news/43599/

相关文章:

  • 网站管理助手 建设中查企业营业执照的网站
  • 秦皇岛做网站汉狮网络汽车服务站建站流程
  • 网站视频怎么做的好投百度做广告效果怎么样
  • 网站制作公司 沈阳合肥比较好的网站制作
  • 新手学做网站看什么书购物网站后台好管理吗
  • 简述企业建设网站的必要性怎么注销自己做的网站
  • 个人网站做哪种类型东莞建筑
  • 高明专业网站建设报价手机网站排名优化软件
  • 亳州网站开发公司蓝色清新phpcms企业网站模板
  • 用php做图书管理网站网站建设备案计划书
  • 高师院校语言类课程体系改革与建设 教学成果奖申报网站北京协会网站建设
  • 婚庆设备租赁网站源码建站优化公司
  • 做网站怎么租个空间wordpress页面不显示
  • 软件网站建设方案微投票网站
  • 网站建设开发实训的目的外贸网上营销的途径有哪些
  • 重庆网站建设沛宣wordpress linux 重装
  • 鄂州网站设计效果叫人做网站多少钱
  • 站内推广有哪些方式创业初期要建立公司的网站吗
  • 代理商加盟网站网址域名注册多少钱
  • 网站分析怎么做的沈阳双兴建设集团有限公司网站
  • 铁岭市网站建设隐秘入口 黑料正能量
  • 做网站电信运营许可证免费开源商城系统源码
  • 免费的ai写作网站网页设计汽车网站建设
  • seo站长查询济南网站建设搜q.479185700
  • 学校网站构建wordpress淘宝客api
  • 西安seo网站推广优化游戏推广话术技巧
  • 潍坊市建设监理协会网站wordpress主题升级
  • php视频网站开发拍卖网站咋做
  • 广州市外贸网站建设品牌企业名词解释
  • 载网站源码 怎么下载不了商务网站推广目标有哪些