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

上海要做网站高端网站制作 专业制作平台

上海要做网站,高端网站制作 专业制作平台,学校要建个网站应该怎么做,画logo的手机软件文章目录 一.程序的翻译环境和运行环境二.翻译环境:预编译编译汇编链接(一)预编译(二)编译1)词法分析2)语法分析3)语义分析 (三)汇编(四)链接1.编…

文章目录

  • 一.程序的翻译环境和运行环境
  • 二.翻译环境:预编译+编译+汇编+链接
    • (一)预编译
    • (二)编译
      • 1)词法分析
      • 2)语法分析
      • 3)语义分析
    • (三)汇编
    • (四)链接
      • 1.编译过程中进行符号汇总
      • 2.汇编过程中生成符号表
      • 3.链接符号表汇总
  • 运行环境

一.程序的翻译环境和运行环境

在ANSI C的任何⼀种实现中,存在两个不同的环境。
第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令。
第2种是执行环境,它⽤于实际执⾏代码

在这里插入图片描述

二.翻译环境:预编译+编译+汇编+链接

翻译环境
在这里插入图片描述
一个程序可能不止一个.c文件
• 多个.c⽂件单独经过编译出编译处理⽣产对应的目标文件
• 多个⽬标⽂件和链接库⼀起经过链接器处理⽣成最终的可执⾏程序。
• 链接库是指运⾏时库(它是⽀持程序运⾏的基本函数集合)或者第三⽅库。

编译过程可以分为预处理编译汇编三个阶段。
在这里插入图片描述

(一)预编译

1.将所有的#define删除,展开所有的宏定义

//预处理前
#define M 5
int main()
{int a = M;return 0;
}
//预处理后
int main()
{
int a=5;
return 0;
}

2.处理所有的条件编译指令,如:#if、#ifdef、#elif、#else、#endif 。
3.处理#include 预编译指令,将包含的头⽂件的内容插⼊到该预编译指令的位置。这个过程是递归进⾏的,也就是说被包含的头⽂件也可能包含其他⽂件。

#include<stdio.h>
//将头文件插入到目标文件中

4.删除所有的注释,以减小目标文件的大小。
5.添加行号和文件名标识,⽅便后续编译器⽣成调试信息等。
6.或保留所有的#pragma的编译器指令,编译器后续会使⽤。

(二)编译

把c语言代码翻译成汇编代码

编译过程就是将预处理后的⽂件进⾏⼀系列的:词法分析语法分析语义分析及优化,⽣成相应的汇编代码⽂件。
对下⾯代码进⾏编译的时候,会怎么做呢?假设有下⾯的代码

array[index] = (index+4)*(2+6);

1)词法分析

将代码分割成一系列的记号,例如**(关键字、标识符、字⾯量、特殊字符等)**

在这里插入图片描述

2)语法分析

接下来语法分析器,将对扫描产⽣的记号进⾏语法分析,从⽽产⽣语法树。这些语法树是以表达式为节点的树。

在这里插入图片描述

3)语义分析

语义分析器来完成语义分析,编译器所能做的分析是语义的静态分析。通常包括声明和类型的匹配,类型的转换等。这个阶段会报告错误的语法信息

在这里插入图片描述
4)符号汇总
在后面链接部分会讲到
汇总的符号一般是全局的符号

(三)汇编

把汇编代码翻译成了二进制的指令生产了.o文件(目标文件),生成符号表

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

(四)链接

链接目标文件和链接库生成可执行程序二进制程序
1.符号表的汇总
2.符号表的合并和重定义

1.编译过程中进行符号汇总

前面我们说到在编译过程中会进行符号汇总。
在如下add.c文件中,汇总到一个 Add符号
![在这里插入图片描述](https://img-blog.csdnimg.cn/ed55807131dc482dbc8a295c5b2dfd85.png
在test.c文件中,汇总到 Add和main
在这里插入图片描述

2.汇编过程中生成符号表

在这里插入图片描述
在这里插入图片描述

3.链接符号表汇总

在这里插入图片描述

运行环境

  1. 程序必须载⼊内存中。在有操作系统的环境中:⼀般这个由操作系统完成。在独⽴的环境中,程序的载⼊必须由⼿⼯安排,也可能是通过可执⾏代码置⼊只读内存来完成。
  2. 程序的执⾏便开始。接着便调⽤main函数。
  3. 开始执⾏程序代码。这个时候程序将使⽤⼀个运⾏时堆栈(stack),存储函数的局部变量和返回地址。程序同时也可以使⽤静态(static)内存,存储于静态内存中的变量在程序的整个执⾏过程⼀直保留他们的值。
  4. 终⽌程序。正常终⽌main函数;也有可能是意外终⽌。

码字不易,感谢观看。

如果对你有帮助的话,记得点赞👍+评论+关注哦

http://www.yayakq.cn/news/77235/

相关文章:

  • 新泰网站建设做网站用什
  • asp做的网站亚丝娜娜本子全彩网站设计心得
  • 十里堡网站建设企业网站服务器
  • 简便网站建设做网站优化两年遇到的SEO常态
  • wordpress文章导入微信网站用模板为什么不利于seo推广
  • 网站运营需要哪些资质微信企业邮箱
  • 手机怎么做网站卖东西手机网站建设多少钱一个
  • wordpress目录地址外贸seo公司
  • 小型求职招聘网站源码 phpwordpress培训类网站
  • 泉州企业网站制作定制首都在线
  • 全国做临期进口食品的网站更新目录wordpress
  • 南约社区网站建设站长网站
  • 可以看的网站都有哪些免费html网站开发教程
  • 传奇广告网站怎么做太平洋建设集团招标网站
  • 上海专业做网站的公司北京网站建设上石榴汇
  • 制作网站备案幕布用frontpage制作网页教程
  • 如何自己做代理网站的想法网站商城
  • 网站建设氺首选金手指12wordpress网站外包
  • 网站制作教程下载软件开发用什么工具
  • 鲨鱼座 网站建设wordpress游客发帖插件
  • 动态ip做网站可以备案吗论坛上怎么做网站优化
  • 怎么制作自己的小网站海兴县网站建设
  • 设计网站多少钱做个小网站多少钱
  • 国内外网站建设科技让生活更美好作文600字
  • 网站建设与管理 市场分析开网店的流程图
  • 哪家做网站做得好包头市
  • 电商网站设计哪家好萍乡做网站的公司
  • 做网站要学那些东西公司营销策划方案
  • 东莞东城网站建设公司wordpress主题大前端
  • 钻井网站建设泉州学校网站建设