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

建筑网站建设公司天空网站开发者

建筑网站建设公司,天空网站开发者,网站后台注入,房地产营销网站建设1.前言 从一个高级语言到可执行程序,要经过预处理、编译,汇编和链接四个过程。大家可以思考下,为什么要有这样的过程? 我们学习计算机之处,就应该了解到,计算机能够识别的只有二进制语言(这是…

1.前言

从一个高级语言到可执行程序,要经过预处理、编译,汇编和链接四个过程。大家可以思考下,为什么要有这样的过程?
在这里插入图片描述

我们学习计算机之处,就应该了解到,计算机能够识别的只有二进制语言(这是本身硬件特点决定的)。计算机刚诞生时,程序员写的就是二进制语言(机器语言),也就是0101的代码串。但机器语言的缺点也是非常明显的(和人类自然语言相差过大,难以理解,难以编写,难以维护)。

后来就发展出易于理解和编写的汇编语言,汇编语言是使用使用助记符和符号来代替机器码中的复杂二进制指令,提高了程序的可读性和可维护性,也降低了编写程序时的复杂程度。但汇编语言依然有其面临的问题,它依赖于硬件(不同CPU指令集不同,寄存器结构也不同),难以跨平台使用。比如如何把0101的机器码翻译成指令,这就与指令集有关。计算机组成原理这门课会将如何设计一个指令系统,感兴趣的请大家自行查阅资料。

基于汇编语言的一些问题,进一步诞生了高级语言,高级语言的特点是可读性更好,移植性也更好,更利于编写和维护。当然,其缺点就是高级语言无法并计算机直接执行,必须翻译成机器码后,才能被计算机执行。基于程序在执行之初,是否就要全部翻译,有编译型语言和解释型语言之分。自然,如python这样的解释型语言,代码是边解释成机器语言边执行,那么其效率自然低一些。与此相对,编译型语言因为在执行之初,就一次性把高级语言代码翻译成了计算机可以识别的机器码。那么其在执行时,花费的时间相对于解释型语言就少(相同的硬件环境下)。

2.翻译过程

言归正传,我们继续讲高级语言翻译成机器码的过程。前面已经提到从高级语言到机器码要经过四步。下面,我们对每一步做详细讲解。
在这里插入图片描述

1.预处理:

预处理之后,代码仍然是高级语言。预处理做了哪些东西呢? 头文件展开(这个过程中会检查头文件循环依赖)
宏替换(宏的本质是文本替换,所以这也是大家看到为什么一些程序员会把定义的宏值用括号给括上)
条件宏(根据预先设定的条件,决定后续编译哪些代码) 版本宏(和条件宏本质一样,只不过常用于隔离不同版本的代码)

……
2.编译过程:.i -> .s

编译过程就是把高级语言程序翻译成汇编语言。 .s文件里面就是汇编指令。这个编译是要经过词法分析和语法分析,具体请看 编译原理相关书籍。
编译器会把每个源文件都编译生成对应的.s文件,也会生成相应的符号表,存储在.s文件中。比如,一个函数修饰成inline了,并且编译器也根据用户建议把该函数给内联了,那么在符号表中是找不到该函数名的。内联的本质不是函数调用,而是把对应的代码嵌入到程序中,是函数展开。

3.汇编过程:.s->.o

.o文件里面已经二进制文件了,它还需经链接才能最终生成可执行文件 o文件叫可重定位目标文件,它是以地址零为链接起始地址进行链接的。
编译器将函数编译成二进制指令后,是从地址零可以将函数的指令序列存放到代码段。每个函数的入口地址都是从地址零开始往后偏移。

4.链接:

链接器将各个目标文件组装到一起,需要重新修改 各个目标文件中的变量或函数的地址,这个过程就是重定位。 链接器怎么知道 .o 重定位目标文件中
哪些函数或变量需要重定位呢?.o文件中实际是把需要重定位的符号手机起来,以section的形式保存到每个可重定位目标文件中了。

3 程序加载过程

最后讲一下,一个可执行文件被装载到内存,待执行的过程。大体分为以下几步:

1.给进程分配虚拟内存空间
2.创建虚拟地址到物理地址的映射,创建页表
3.加载代码段和数据段等数据,即将磁盘中的文件拷贝到物理内存中,并在页表中写入映射关系。
4.将可执行文件的入口地址写入到CPU的指令寄存器PC(PC中存放的就是下一步要执行的指令的地址)

在这里插入图片描述
图引用自 CSDN @汐 风

在这里插入图片描述
图引用自 CSDN @ Rye

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

相关文章:

  • 用wordpress做视频网站做视频网站需要什么空间吗
  • 网站制作公司排名前十万物识别扫一扫
  • 做电脑系统网站网站的模版要怎么重新做
  • 经营虚拟网站策划书链接制作软件
  • php开发的大型网站有哪些平台网站建设收费
  • 电子商务网站建设与管理理解个人域名备案流程
  • 北京做视觉网站有哪些tp5做的网站
  • 河南自助建站建设代理东莞网站推广优化搜索推广
  • 用php做视频网站有哪些网页界面设计中表单的组成部分有哪四个
  • 成都网站建设 冠辰网站建设用vs2010做网站的好处
  • 网站框架方案阿里云服务器免费一个月
  • 网站建设的硬件支持哪个网站是做包装材料珍珠棉包管
  • 网站维护公司广州十八个免费的舆情网站
  • 网站建设惠州国外手机网站模板
  • 从化营销型网站建设咨询网站 获取排名
  • 做坑网站需要辽宁省建设工程信息网首页官网
  • 求一个做健身餐的网站百度为什么不收录我的网站
  • 网站开发入门培训wordpress ajax 搜索
  • 网站建设服务专业上海网站建设网站制作
  • 囊谦县公司网站建设安徽电子工程学校
  • 工作室网站备案解析到网站怎样做
  • 建设公司网站开发方案网站 引导页 设计
  • 微商怎么开通建设优化网站
  • 南通企业建设网站电话东莞做网站一般多少钱
  • 上海网站制作有名 乐云践新有经验的网站建设
  • 管理公司网站的职位山东咕果做网站怎么样
  • 南昌 定制网站如何设计一个网络
  • 南阳手机网站制作个人博客系统源码
  • 做视频网站需要多少上传wordpress p3
  • 网站建设会议记录百度首页排名优化服务