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

湖南智能网站建设费用网站建站上市公司

湖南智能网站建设费用,网站建站上市公司,长春火车站属于哪个区,wordpress带手机验证码目录 程序的翻译环境和执行环境 翻译环境分为两部分#xff0c;编译链接 第一步#xff1a;预编译#xff08;预处理#xff09; 第二步#xff0c;编译 第三步#xff1a;汇编 关于运行环境分为四点#xff1a; 关于链接库 程序的翻译环境和执行环境 在 ANSI C(标…目录 程序的翻译环境和执行环境 翻译环境分为两部分编译链接 第一步预编译预处理 第二步编译 第三步汇编 关于运行环境分为四点 关于链接库 程序的翻译环境和执行环境 在 ANSI C(标准C) 的任何一种实现中存在两个不同的环境。 *第1种是翻译环境。 在这个环境中源代码被转换为可执行的机器指令。 在编译器中以VS2019为例我们写的C语言代码都是文本的信息各种字符串数据结构体等站在人类的角度我们能够理解但是计算机不行代码需要翻译成计算机呢能够识别的指令二进制指令 *第2种是执行环境。它用于实际执行代码。 代码经过翻译环境后生成的二进制指令代码由执行环境来执行生成。 代码编译时生成可执行程序时的步骤 1. 组成一个程序的每个源文件通过编译过程分别转换成目标代码 object code 。 2. 每个目标文件由链接器 linker 捆绑在一起形成一个单一而完整的可执行程序。 3. 链接器同时也会引入标准 C 函数库中任何被该程序所用到的函数而且它可以搜索程序员个人的程序库将其需要的函数也链接到程序中。 简述来说: 每一个源文件.c都单独经过编译器进行编译生成目标文件.obj目标文件和链接库再通过链接器的处理这个过程就叫链接就生成了可执行程序.exe)。 如下图 翻译环境分为两部分编译链接 编译本身也分为几个阶段预处理 , 编译 汇编。 接下来我们用一个简单的代码源文件名test.c,使用gcc这个编辑器给大家演示整个过程 第一步预编译预处理 预编译的指令是gcc 源文件.c -E - 源文件名 .i  1. 预处理 选项 gcc - E test.c - o test.i 预处理完成之后就停下来预处理之后产生的结果都放在 test.i文件中,具体内容可看下图。 如下面的代码 源文件文件名 test.c#includestdio.h//定义全局变量赋值2023 int year 2023; #define M 100 int main() {int a M;printf(%d\n, M);return 0; } 1.输入指令gcc test.c -E -test i 终端输出 2.观察test.c和test .i的内容  3.在test.i文件中查看 我们发现在test.i整个代码的末尾才是我们源代码的内容那前面的几百行代码又是什么呢是头文件stdio.h的整个内容包含进来了。同时细心的同学发现test.i中没有了注释也没有了宏定义的符号M了所以预处理的作用是 注释的删除#includestddio.h头文件的包含#define 符号的替换文本操作所以的预处理指令都是在预处理阶段处理的 第二步编译 编译指令gcc -S 源文件.c / gcc -S 源文件名 .i 编译 选项 gcc - S test.c 编译 选项 gcc -S test.i   (编译时这两个文件都可以输入指令中都会生成文件test.s) 编译完成之后就停下来结果保存在 test.s 中。 我们输入  gcc - S test.c 为例 1.输入指令gcc -S test.c / gcc -S test.i 终端输出 2.生成了test.s文件的内容并展示test.s文件的内容   3.总结 上面黄圈部分就是test.s的内容里面就是汇编指令。编译的作用是把c语言代码翻译成汇编指令 。编译的方式是通过语法分析词法分析语义分析符号汇总等方式。总的来说编译就是把我们的c语言代码拆解分析然后翻译成汇编指令给下一步汇编的动作。 第三步汇编 汇编指令gcc -c 源文件.c / gcc -c 源文件名 .s 汇编 gcc - c test.c 汇编完成之后就停下来结果保存在 test.o 中。  1.输入指令gcc -c test.c / gcc-c test.s 终端输出   2.生成了test.o的目标文件 但是你会发现这是test.o目标文件存放的二进制文件编译器是不支持显示的的如果仍要打开如下图;    3. 总结 1.目标文件中存放的是二进制的指令 2.汇编是把汇编指令翻译成二进制指令 顺便提一下Linux下gcc编译产生的目标文件test.o可执行程序test都是按照ELF的这种文件格式存储的  最后以上过程完成了编译之后到链接过程 链接指令gcc 源文件名.o -o 新文件名  对目标文件进行链接。可生成一个可执行文件  1.输入指令gcc test.o -o vskkk 输出终端 2,对vskkk的内容进行查看  但是文件还是二进制的指令无法查看。 3.总结 链接的作用是 1.合并线段 2.符号表的合并和重定位   关于运行环境分为四点 运行环境相较于翻译环境就好理解的多了通俗理解有以下几点: 1. 程序必须载入内存中。在有操作系统的环境中一般这个由操作系统完成。在独立的环境中程序的载入必须由手工安排也可能是通过可执行代码置入只读内存来完成。 2. 程序的执行便开始。接着便调用 main 函数。 3.开始执行程序代码。这个时候程序将使用一个运行时堆栈stack存储函数的局部变量和回 地址。程序同时也可以使用静态 static 内存存储于静态内存中的变量在程序的整个执行过程 一直保留他们的值。 4. 终止程序。正常终止 main 函数也有可能是意外终止。 关于链接库 我们知道再写C语言代码时只要加上头文件 #includestdio.h 就可以直接使用库函数了比如scanf(),printf(),那为什么可以直接使用呢原因是我们把这些库函数都已经提前编译好打包好放在静态库中可以直接提供给我们比如我们熟悉的scanf函数如下图的打红圈内容标记部分后缀以LIB结尾的就是静态库.LIB库函数的静态库和目标文件在链接器中发生链接生成可执行程序。程序就可以运行啦。 以上就是全部内容了希望能帮助到大家如果可以也希望大家给博主点点赞支持一下谢谢。如果有错误的地方希望大家能在评论区批评指出我会进行订正的。
http://wiki.neutronadmin.com/news/415624/

相关文章:

  • 网站开发 招标采购参数wordpress有人尝试登录
  • 成功案例 品牌网站百度seo外包
  • 橘子建站设计网名昵称
  • 南宁做网站比较好的公司建筑网站 知乎
  • 四川建设企业网站淮南做网站的
  • 有什么免费的网站收废铁的做网站有优点吗
  • 做网站的公司排行有必要自建网站做导购吗
  • 新东阳建设集团网站nodejs做视频网站
  • 网站开发 前端 后端最好的销售管理系统
  • 破天网站定制网站实名审核中心
  • 西部数码创建子网站做自己移动端网站
  • 网站建设首选九零后网络网站建设80hoe
  • 企业网站必备模块17z一起做网站广州
  • 天津网站制作的公司黑龙江建设网官方网站监理查询
  • 手机网站源码 html5网站建设汇报书 ppt
  • 第一站商城建设购物网站多少钱
  • 公司 网站建设 会计科目网站建设维护视频教程
  • 商业网站建设开发手机wap网页设计
  • 门户营销型网站搭建网站搭建代码
  • 高端网站创建广州网站建设维护
  • 哪里做网站百度收录块宝安做网站信科
  • 网站开发适合女生吗租空间做网站
  • 百度站长工具网站提交网站关键词密度过高
  • 不建议网站如何购买网站域名
  • 平凉崆峒建设局网站北京做网站价格
  • 南沙定制型网站建设ftp上传网站之后怎么做
  • 加强门户网站建设与管理办法百度网址大全免费下载
  • 邮箱注册网站申请wordpress文章不能添加标签
  • 网站建设开发兴田德润seo是免费推广吗?
  • 泉州建设人才网站如何推销自己的产品