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

淘宝店铺800一个收购汕头seo不错

淘宝店铺800一个收购,汕头seo不错,创客贴做网站吗,seo搜索引擎优化方案怎么写hi,各位,让我们开启今日份博客~ 小编个人主页点这里~ 目录 一、翻译环境和运行环境1、翻译环境1.1预处理(预编译)1.2编译1.2.1词法分析1.2.2语法分析1.2.3语义分析 1.3汇编1.4链接 2.运行环境 一、翻译环境和运行环境 在ANSI C…

hi,各位,让我们开启今日份博客~

小编个人主页点这里~

目录

  • 一、翻译环境和运行环境
    • 1、翻译环境
      • 1.1预处理(预编译)
      • 1.2编译
        • 1.2.1词法分析
        • 1.2.2语法分析
        • 1.2.3语义分析
      • 1.3汇编
      • 1.4链接
    • 2.运行环境

一、翻译环境和运行环境

在ANSI C(ANSI C 是美国国家标准协会创立的一套C标准,于1989年完成,这个版本的语言常被叫做C89.) 的任何一种实现中,存在两个不同的环境。
第一种是翻译环境,在这个环境中,源代码被转换成可执行的机器指令(二进制指令)。
第二种是运行环境,它用于实际执行代码。

在这里插入图片描述

1、翻译环境

翻译由编译链接两大部分组成,其中编译又分为预处理、编译、汇编三个过程。

在编译器中一个C语言的项目可能有多个.c文件一起构建,那多个.c文件如何生成可执行程序呢?

  • 首先多个.c文件单独经过编译器,编译处理成对应的目标文件(在Windows环境下的目标文件后缀是.obj,Linux环境下目标文件的后缀是.o)
  • 然后多个目标文件和编译库一起经过链接器处理生成最终的可执行程序(链接库是指运行时库【它是支持程序运行的基本函数集合】或者第三方库)。

如果我们再把编译器分成预处理、编译、汇编这三个过程,那就变成了以下过程:
在这里插入图片描述

1.1预处理(预编译)

在预处理阶段,源文件和头文件会被处理成.i为后缀的文件.
在gcc下观察对test.c文件预处理后的test.i文件,命令如下:

gcc test.c -E -o test.i

  • -E选项:提示编译器执行完当前命令后就停下来,后面的编译、汇编和链接暂不执行
  • -S选项:提示编译器执行完编译停下来,汇编、链接暂不执行
  • -c选项:提示编译器执行完汇编就停下来

预处理过程进行的操作
1、对#include 头文件进行包含
2、删除代码中的注释(使用空格替换)
3、#define 定义的符号进行替换,使用完后,符号删除

1.2编译

编译是将C语言程序转换成了汇编代码
在gcc下观察对test.i文件编译后的test.s文件,命令如下:

gcc test.i -S -o test.s

1.2.1词法分析

词法分析是使用一种叫做lex的程序实现词法扫描,它会按照用户之前描述好的词法规则将输入的字符串分割成一个个记号。产生的记号一般分为:关键字、标识符、字面量(包含数字、字符串等)和特殊符号(运算符、等号等),然后他们放到对应的表中。

我们以以下表达式为例进行词法分析:

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

在这里插入图片描述

1.2.2语法分析

语法分析器根据用户给定的语法规则,将词法分析产生的记号序列进行解析,然后将它们构成一棵语法树。这些语法树是以表达式为节点的树,对于不同的语言,只是其语法规则不一样。

如下:
在这里插入图片描述

1.2.3语义分析

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

如下:
在这里插入图片描述

1.3汇编

汇编过程是通过汇编器来完成的,汇编器将汇编代码转变成机器可执⾏的指令(2进制的指令),每⼀个汇编语句⼏乎都对应⼀条机器指令。它是根据汇编指令和机器指令的对照表一一 的进行翻译的,不做指令优化。
gcc下汇编命令如下:

gcc -c test.s -o test.o

1.4链接

链接是⼀个复杂的过程,链接的时候需要把⼀堆⽂件链接在⼀起才⽣成可执⾏程序。链接过程主要包括:地址和空间分配,符号决议和重定位等。

符号解析 目标文件中可能包含一些未定义的符号引用,如函数调用、全局变量引用等。链接器会在所有的目标文件和库文件中查找这些符号的定义,将符号引用与对应的符号定义进行匹配,确保每个符号都有正确的定义。
重定位编译生成的目标文件中的地址通常是相对地址或未确定的地址。链接器会根据最终可执行文件或库文件的布局,对目标文件中的代码和数据进行重定位,将相对地址转换为绝对地址,使程序在运行时能够正确地访问代码和数据。
合并段目标文件通常包含多个段,如代码段、数据段、只读数据段等。链接器会将各个目标文件中的相同类型的段进行合并,形成最终可执行文件或库文件中的相应段,并为每个段分配合适的内存地址。

在生成输出文件时,还会添加一些必要的头部信息,如程序入口点、段的属性等,以便操作系统能够正确的加载和执行程序。

2.运行环境

程序必须载入内存中,在有操作系统的环境中,一般由操作系统来完成,在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。程序载入内存之后,执行才能开始,开始后首先调用main函数,开始执行程序代码。这个时候程序将使用一个运行时堆栈(stack),储存函数的局部变量和返回的地址,程序同时也可以使用静态(static)内存,储存于静态内存中的变量在程序的整个执行过程一直保留他们的值,正常终止main函数时,程序终止,也有可能是意外终止。
在这里插入图片描述
如上图,我们双击以.exe结尾的可执行文件就会进入运行环境,此时程序已经被加载到内存中。

总结:

以上就是本期博客分享的全部内容啦!技术的探索永无止境。
道阻且长,行则将至!后续我会给大家带来更多博客内容,欢迎关注我的CSDN账号,我们一同成长!
(~ ̄▽ ̄)~

http://www.dtcms.com/wzjs/72538.html

相关文章:

  • 做响应式的网站宁波seo教程行业推广
  • 免费个人网站空间注册windows永久禁止更新
  • 做杂志的网站有哪些内容百度推广方式有哪些
  • 公众号的关注怎么加微信网页优化最为重要的内容是
  • 天津网站建设系统网站优化搜索排名
  • 动漫设计工作室网站推广方法个人免费域名注册网站
  • 代码网站模板怎么做百度关键词优化排名技巧
  • 做影视网站对服务器要求济南seo官网优化
  • 如何做国外假发网站今日国际新闻头条15条简短
  • 做淘宝客为什么要做网站淘宝关键词排名查询工具免费
  • 政府网站建站流程google网站推广
  • phpcmsv9手机网站模板计算机培训机构哪个最好
  • 游戏网站建设表格南宁优化网站网络服务
  • 做外贸soho要做网站吗网络营销工程师培训
  • 建网站找那家企业好游戏推广接单平台
  • .课程网站建设与应用关键词优化最好的方法
  • 跨境电商运营主要做什么seo门户网
  • 微网站设计基本要求开鲁网站seo免费版
  • 中小企业网站建设效果朔州网站seo
  • 上海 餐饮网站建设 会员系统优化公司治理结构
  • 荔湾做网站做网络推广需要多少钱
  • 幼儿园主题网络图设计美丽鹭岛什么叫seo
  • 网站广告位怎么做今日热搜榜
  • php+mysql网站开发教程seo排名优化技术
  • 北京网站优化流程网络平台运营是做什么的
  • 海外网络推广专员百度seo搜索
  • ui设计软件哪个好青岛seo杭州厂商
  • dede网站模板替换二十条优化
  • 做兼职的网站打字员网上培训课程平台
  • 浙江广厦建设职业技术学院招生网站seo专员工资待遇