C语言被编译后是汇编程序吗?,代码编译过程中都发生了什么?快来一起揭秘一下代码的编译过程吧

bczs7142

时间 2024年5月30日 预览 39

专业编程培训机构——完成蜕变以后轻松拿高薪

电话+V: 152079-09430 ,欢迎咨询编译后的代码是什么形式,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]

一、C语言被编译后是汇编程序吗?

当然不是,编译后是OBJ文件,连接后成立可执行代码,是二进制机器码了。

二、c语言经过编译后生成文件的后缀是

C语言经过编译后生成文件的后缀是“.obj”。

当C语言源代码被编译后,通常会生成一个“.o”(objectfile)文件。这个文件包含了编译器所产生的机器代码,但是它还没有被连接到其他模块或库中。相应地,在不同的操作系统上可能会有不同的后缀名和二进制格式。例如,Windows上的VisualC++编译器使用“.obj”作为目标文件的扩展名。

除了目标文件之外,还有其他类型的文件也可能在编译过程中出现。例如,源文件包含了代码的原始文本;头文件包含了程序中使用到的函数和变量的声明。这些文件扩展名通常为“.c”和“.h”。

C语言的优点简述

C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%—20%。因此,C语言可以编写系统软件。

当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其他编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。C语言拥有经过了漫长发展历史的完整的理论体系,在编程语言中具有举足轻重的地位。

代码编译过程中都发生了什么?快来一起揭秘一下代码的编译过程吧

2020-08-0823:34·嵌入式悦翔园

编译器就是把人写的代码翻译成目标程序的语言处理程序,编译用的程序也可以称为编译系统。

一个编译系统把一个源程序翻译成目标程序一般分为5个阶段:词法分析、语法分析、中间代码、代码优化和目标代码生成。其中主要阶段是语法分析和语法分析,也可以称为源代码分析过程中发现有错误语法会给出错误信息。

一、词法分析

词法分析的目的是处理源代码中的单词。词法分析程序分析按照从左到右的顺序依次扫描源代码,生成单词对应的符号,把字符描述的程序转换成符号描述的中间程序。词法分析程序也称为词法扫描器。词法分析过程可以用手工构造和自动生成两种方法。

二、语法分析

语法分析程序使用词法分析程序的结果作为输入。语法分析功能主要是分析单词符号是否符合语法要求,语法分析程序还按照语法规则进行分析检查程序的语句是否符合正确的逻辑结构。

语法分析的顺序有自上而下和自下而上两种方法。自上而下分析法从文章开始的符号向下推导,逐步分析。自下而上分析方法利用堆栈原理,把语法符号按顺序入栈,然后分析语法是否符合要求

三、中间代码生成

中间代码也称中间语言,是一种介于源代码与目标代码之间的一种表达方式。使用中间程序可以完整的表达源代码的意思,同时又使编译过程在逻辑上简单明确。常见的中间语言的形式有以下几种:逆波兰几号、四元式、三元式和树等!

四、代码优化

代码优化的目的是生成有效的目标代码,代码优化通过对中间层分析,进行等价变换,达到减小储存空间和缩短运行时间的目的。需要注意的是程序优化并不改变源代码的功能。代码优化还可以对目标代码进行优化,与中间代码优化相比,对目标代码优化依赖计算机类型,但是优化的效果更好。

五、目标代码生成

程序编译后最后一个步骤就是生成目标代码,目标代码把中间代码变换成目标代码,通常有三种变换方式:立即执行的机器语言代码、待装配的机器语言模块、汇编语言模块

立即执行的机器语言代码:这种方式对应静态的连接方式,程序中所有的地址都重定位,执行效率高,但是占用内存大。

待装配的机器语言模块:该方式不连接系统共享的程序库,在需要的时候会由系统加载共享程序库。

汇编语言代码:该方式经过汇编语言汇编后直接生成可以在操作系统上运行的目标代码。

除此之外生成目标代码还需要考虑三个影响速度的问题:采用什么方式生成比较小的目标代码;如何在目标代码上多使用寄存器,减少目标代码访问外部储存的次数;如何根据不同的平台计算机指令进行优化,提高程序的运行效率。

以上就是代码在运行的时候发生的,C语言编译的整个过程是非常复杂的,里面涉及到的编译器知识、硬件知识、工具链知识都是非常多的,深入了解整个编译过程对工程师理解应用程序的编写是有很大帮助的,希望大家可以多了解一些,在遇到问题时多思考、多实践。

【FUTURE PROGRAMMING COURSE】尊享对接老板

电话+V: 152079-09430

机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。

编译后的代码是什么形式
相关论坛相关论坛
相关广告相关广告
广告图
Copyright2023未知推广科技
拨打电话拨打电话
Copyright2023未知推广科技