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

实验室网站建设重要性阳谷网站建设网络推广

实验室网站建设重要性,阳谷网站建设网络推广,国产做网站,福州鼓楼区建设局网站程序环境1.程序的翻译环境和执行环境2. 详解编译 链接2.1 翻译环境2.2 编译的三部分预编译编译汇编2.3链接3.运行环境1.程序的翻译环境和执行环境 在ANSI C的任何一种实现中#xff0c;都存在两个不同的环境。 翻译环境#xff0c;在这个环境中源代码被转换成可执行的机器指… 程序环境1.程序的翻译环境和执行环境2. 详解编译 链接2.1 翻译环境2.2 编译的三部分预编译编译汇编2.3链接3.运行环境1.程序的翻译环境和执行环境 在ANSI C的任何一种实现中都存在两个不同的环境。 翻译环境在这个环境中源代码被转换成可执行的机器指令。 例如vs2022这个集成开发环境就包括翻译环境执行环境 它用于实际执行代码 2. 详解编译 链接 一个.c文件想要编程一个可执行程序需要经过编译和链接两步 而编译又可细分为预编译编译和汇编三过程如图 2.1 翻译环境 一个项目可能是由很多个.c文件共同构成的,每个.c文件需要分别进行编译产生.obj后缀的目标文件windows环境 在linux环境下是.o为后缀 接着在链接器的作用下将所有目标文件结合在一起进行最后产生了可执行程序。 组成一个程序的每个源文件单独通过编译过程分别转换成目标代码(object code)每个目标文件由链接器(linker)捆绑在一起形成一个单一而完整的可执行程序。链接器同时会引入标准C函数库中任何被程序引用到的函数而且它可以搜索程序员个人的程序库将其所需要的函数也链接到程序中。 2.2 编译的三部分 下面我们就以一个例子来为大家简单的解释一下每个步骤都在干什么。 注以下例子只是用来演示c语言编译各个阶段的特点无实际意义 test.c #includestdio.h #include add.c //这是注释 #define M 100 extern int g_val; extern int Add(int x, int y); int main() {//开始struct s k;int b 10;int c Add(M,b);printf(%d, c);return 0;//结束 }add.c int Add(int x, int y) {return x y; }struct s {int a;char c; };int g_val 100;预编译 在预编译过程中会进行的操作有#include头文件的包含以及#define 宏的替换预处理指令还有注释的删除总的来说就是对代码文本进行改进。 我们用gcc编译器来编译代码通过指令使其停在预处理结束之后的阶段由此来观看代码文本的变化。 在终端输入: gcc -E test.c -o test.i即可生成预处理之后的文件然后我们看看文件中的内容如图 编译 编译过程主要将进行语法分析词法分析语义分析以及符号汇总四个内容同样我们可以通过命令的方式得到编译后的文件。 这里简单讲解一下符号汇总其实就是把函数名和全局变量之类的汇总起来便于下一步作用。 命令gcc -S test.c,然后我们看一下文件内容。 我们可以看到其实经过编译之后就是把我们的c语言代码转换为汇编代码。 汇编 接下来就是编译的最后一步汇编了通过这一步之后我们写的c程序就完全转换成了目标文件object code由于目标文件是由二进制指令构成所以我们是没办法看懂的但是依旧可以通过指令的方式得到汇编后生成的文件。 指令 gcc -C test.c 通过这一指令将生成test.o的文件其和我们用vs编译生成的.obj 后缀文件性质相同。 汇编过程的进行大致有以下两步 形成符号表 在编译过程中进行了符号汇总而形成符号表简单来说就是将这些符号与地址配对符号表 符号地址 例如上面那个例子两个文件的符号表就可以如此表示 地址是博主随便设的doge test.c的符号表 符号地址g_val0x010Add0x783main0x666add.c的符号表 符号地址Add0x200g_val0x300汇编指令- 二进制指令 -------test.o和add.o 2.3链接 链接部分主要执行两个操作 合并段表符号表的合并和符号表的重定位 这里为了解释合并段表我们进行一定的扩展 在linux环境下生成的test.o和可执行程序都是elf格式的文件而elf格式的文件时分段式的结构每个段放置不同功能的数据如图 也就是说这里段表的合并就是把多个.o文件中相同功能的段合并在一起。 而符号表的合并和重定位就是将相同的符号合并并且替换掉无效的地址。 就拿刚才的例子来说test.c 中的g_val 和Add符号是用extern外部引入的需要在其他的文件才能找到其定义也就是说此时test 文件的符号表中这两个的地址是无效的真正有效的地址在add.c中,因此需要进行合并。 上诉代码合并之后的符号表如下 符号地址g_val0x300Add0x200main0x666以上就是从.c文件到.exe 文件的大体过程啦当然其实编译的过程还有很多细节如果有机会之后博主会继续补充的嘿嘿 3.运行环境 程序的执行过程 程序必须载入内存中。在有操作系统的环境中一般这个由操作系统完成。在独立的环境中程序 的载入必须由手工安排也可能是通过可执行代码置入只读内存来完成。程序的执行便开始。接着便调用main函数。开始执行程序代码。这个时候程序将使用一个运行时堆栈stack存储函数的局部变量和返回 地址。程序同时也可以使用静态static内存存储于静态内存中的变量在程序的整个执行过程一直保留他们的值。终止程序。正常终止main函数也有可能是意外终止。 以上就是关于程序环境的相关内容了如果觉得写的不错还请大家多多点赞啊哈哈
http://www.w-s-a.com/news/407759/

相关文章:

  • 奖励网站代码设计制作ppt时
  • 茂名优化网站建设门户网站和部门网站的区别
  • 一尊网 又一个wordpress站点wordpress获取当前文章名称
  • 营销型网站多少钱新建网站的外链多久生效
  • 网站空间怎么选择tp5企业网站开发百度云
  • 网站建设saas排名成立公司的流程和要求及费用
  • 网站建设共享骨科医院网站优化服务商
  • 肯尼亚网站域名万能进销存软件免费版
  • 做商城网站价格上海做网站建设
  • 广州制作外贸网站公司阿里云网站模板
  • 做网站为什么要买服务器十堰城市建设网站
  • 西安网站seo技术厂家东莞如何制作免费的网页
  • 做旅游的网站的目的和意义极限优化wordpress
  • 做美食视频网站有哪些品牌营销策划机构
  • 佛山知名营销网站开发wordpress可视化编辑器排行
  • 石岩做网站哪家好石家庄做网站设计
  • 建设网站需要冠县做网站
  • 保定网站seo哪家公司好wordpress教程视频下载
  • 网站开发 哪些文档网站海外推广方法
  • 广西建设局网站首页如何做条形码网站怎么搞
  • 琼海建设网站wordpress 商城站下载地址
  • 网站需要多大数据库divider wordpress
  • 兰州北京网站建设网络广告推广网站
  • 宁晋网站建设森网站建设
  • 网站没有收录原因trel域名
  • 建设门户网站的目的和需求台州专业网站建设方案
  • 苏州网站建设系统方案成都行业网站设计
  • wordpress多说读者墙seo分析师招聘
  • 视频网站开发计划书wordpress文件详情
  • 重庆付费网站推广电商网站 开发周期