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

虚拟机wordpress建站济宁seo推广

虚拟机wordpress建站,济宁seo推广,课工场网站建设培训,网页qq登录保护怎么关1.翻译环境与运行环境 在ANSIC的任何一种实现中,存在两个不同的环境 (1)翻译环境,在这个环境中源代码被转换为可执行的机器指令(二进制指令) (2)执行环境,用于实际执行…

1.翻译环境与运行环境

在ANSIC的任何一种实现中,存在两个不同的环境

(1)翻译环境,在这个环境中源代码被转换为可执行的机器指令(二进制指令)

(2)执行环境,用于实际执行代码

test1.c->编译->链接->可执行程序->输出结果

2.翻译环境

翻译环境由编译和链接两个大的过程组成,编译分解为预处理(预编译),编译,汇编三个过程

test.c->cl.exe(编译器)->test.obj->link.exe(链接器)->xxx.exe(可执行程序)||||||||||||||||||||   @@@@@@@@@@@@@@@@@@@@@编译                     链接

一个c语言项目中可能有多个.c文件一起构建。

多个.c文件单独经过编译器,编译处理生成对应的目标文件。(在Windows环境下目标文件后缀为.obj,Linux环境下目标文件的后缀是.o)

多个目标文件和链接库一起经过连接器处理生成最终的可执行程序

链接库是指运行时库(它是支持程序运行的基本函数集合)或第三方库

//gcc为例
源文件,头文件.c->预处理->预处理后中间文件.i->编译->编译后中间文件.s
->汇编->目标文件.o->链接器->可执行程序^|链接库

预处理阶段,源文件与头文件会变成.i后缀的文件

gcc -E test.c -o test.i

主要处理源文件中#开始的预编译指令:

把所有的#define删除,并展开所有的宏定义。

处理所有的条件编译指令,#if,#ifdef,#else,#endif

处理#include预编译指令,把包含的头文件内容插入到该预编译指令的位置,(递归进行),头文件可能包含头文件

删除所有的注释

添加行号与文件名标识,方便后续编译器生成调试信息等

保留所有的#pragma编译器指令,编译器后续会使用

我们不知道宏定义或头文件是否包含正确时,可以查看预处理后的.i文件

gcc -S test.i -o test.s

编译会对预处理后的文件进行:词法分析,语法分析,语义分析及优化,生成相应的汇编代码文件。

词法分析:把源代码程序输入扫描器,扫描器进行简单的词法分析,把代码中的字符分割成一系列的记号(关键字,标识符,字面量,特殊字符等)

语法分析:语法分析器对扫描产生的记号进行语法分析,产生语法树,这些语法树是以表达式为结点的树

语义分析;由语义分析器来语义分析,即对表达式的语法层面分析。编译器能做的分析是语义的静态分析(包含声明和类型的匹配,类型的转换等),会报告错误的语法信息

汇编,汇编器把汇编代码变成机器可以执行的指令(2进制指令),每一个汇编语句几乎都对应一条机器指令。就是根据汇编指令和机器指令的对照表一一对照翻译,不做指令优化

链接,链接的时候把一堆文件链接在一起才能生成可执行程序。主要包含地址与空间分配,符号决议与重定位等步骤。解决一个项目中多个文件,模块互相调用的问题。

test.c->test.o
#include<stdio.h>
extern int Add(int x,int y);
extern g_val;
int main()
{
int a=10;
int b=20;
int sum=Add(a,b);
printf("%d",sum);
return 0;
}add.c->add.o
int g_val=1;
int Add(int x,int y)
{
return x+y;
}

在test.c文件中每使用一次Add函数和g_val必粗确切的知道Add和g_val的地址,但是由于每个文件是单独编译的,在编译器编译test.c时并不知道Add和g_val变量的地址,所以暂时把调用Add的指令的目标地址和g_val的地址搁置。等待最后链接时由链接器根据引用的符号Add在其他模块中查找Add的地址,将test.c中所有引用到Add指令重新修正,让他们的目标地址真正为Add函数的地址,这个地址修正的过程叫重定位。(更多的去看《程序员的自我修养》)

3.运行环境

1.程序必须载入内存中,在有操作系统的环境中:一般这个由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成

2.程序的执行便开始,接着调用main函数

3.开始执行程序代码,程序将使用一个运行时堆栈(stack),存储函数的局部变量和返回地址。程序同时也使用静态内存(static),存储于静态内存中的变量在程序的整个执行过程一直保留他们的值

4.终止程序

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

相关文章:

  • 网站开发培训排名google store
  • 深圳网站设计要点拉新app推广平台
  • 测评网站怎么做竞价推广公司
  • axure做网站原型尺寸上海网站建设方案
  • 网站推荐广告模板鼓楼网站seo搜索引擎优化
  • 做自媒体有哪些网站企业网络推广网站
  • 网站制作排版注意事项制作网站推广
  • 做网站的产品图片怎么做蛋糕
  • 房地产网站推广网站推广的一般流程是
  • 驾校做网站百度网盘app怎么打开链接
  • 硬件开发测试win7系统优化软件
  • 有关电子商务网站建设的 论文优化关键词首页排行榜
  • 政府网站建设管理问题及对策全媒体广告策划营销
  • 简述电子商务网站开发的基本流程php免费开源crm系统
  • 交通局网站模板查网站流量查询工具
  • 县区网站集约化平台建设研究域名ip地址在线查询
  • 新手做网站应该注意什么自己创建网页
  • 徐州网站开发信息如何宣传推广自己的产品
  • 网站免费优化软件广告推广app
  • 杭州企业网站制作公司关键词怎么选择技巧
  • 网站建设与推广方案软件培训机构有哪些?哪个比较好
  • 网站制作深圳seo服务公司上海
  • 合肥电子商务网站建设推广资讯
  • 网站制作公司排行榜2023最火的十大新闻
  • 哪个网站做ppt能赚钱五个成功品牌推广案例
  • 新乡做网站多少钱搜索引擎大全网站
  • 济南做网站得多少钱在线资源搜索神器
  • 手工艺品外贸公司网站建设方案怎么让百度收录网站
  • 网站公安备案号在哪里找郑州seo全网营销
  • 聚搜济南网站建设公司云南疫情最新情况