当前位置:首页 » 编程软件 » 计算机编译器工作

计算机编译器工作

发布时间: 2024-06-28 10:50:31

㈠ C语言编译器是用来做什么的

编译器,是将便于人编写,阅读,维护的高阶计算机语言翻译为计算机能解读、运行的低阶机器语言的程序。编译器将原始程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源代码一般为高阶语言 (High-level language), 如 Pascal、C++、Java 等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。
一个现代编译器的主要工作流程如下:
源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 汇编程序 (assembler) → 目标代码 (object code) → 连接器 (Linker) → 可执行程序 (executables)

㈡ 编译器能够完成的工作是

1. 词法分析词法分析器根据词法规则识别出源程序中的各个记号(token),每个记号代表一类单词(lexeme)。源程序中常见的记号可以归为几大类:关键字、标识符、字面量和特殊符号。词法分析器的输入是源程序,输出是识别的记号流。词法分析器的任务是把源文件的字符流转换成记号流。本质上它查看连续的字符然后把它们识别为“单词”。
2. 语法分析语法分析器根据语法规则识别出记号流中的结构(短语、句子),并构造一棵能够正确反映该结构的语法树。
3. 语义分析语义分析器根据语义规则对语法树中的语法单元进行静态语义检查,如果类型检查和转换等,其目的在于保证语法正确的结构在语义上也是合法的。
4. 中间代码生成中间代码生成器根据语义分析器的输出生成中间代码。中间代码可以有若干种形式,它们的共同特征是与具体机器无关。最常用的一种中间代码是三地址码,它的一种实现方式是四元式。三地址码的优点是便于阅读、便于优化。
5. 中间代码优化
优化是编译器的一个重要组成部分,由于编译器将源程序翻译成中间代码的工作是机械的、按固定模式进行的,因此,生成的中间代码往往在时间和空间上有很大浪费。当需要生成高效目标代码时,就必须进行优化。
6. 目标代码生成
目标代码生成是编译器的最后一个阶段。在生成目标代码时要考虑以下几个问题:计算机的系统结构、指令系统、寄存器的分配以及内存的组织等。编译器生成的目标程序代码可以有多种形式:汇编语言、可重定位二进制代码、内存形式。
7 符号表管理
符号表的作用是记录源程序中符号的必要信息,并加以合理组织,从而在编译器的各个阶段能对它们进行快速、准确的查找和操作。符号表中的某些内容甚至要保留到程序的运行阶段。
8 出错处理用户编写的源程序中往往会有一些错误,可分为静态错误和动态错误两类。所谓动态错误,是指源程序中的逻辑错误,它们发生在程序运行的时候,也被称作动态语义错误,如变量取值为零时作为除数,数组元素引用时下标出界等。静态错误又可分为语法错误和静态语义错误。语法错误是指有关语言结构上的错误,如单词拼写错、表达式中缺少操作数、begin和end不匹配等。静态语义错误是指分析源程序时可以发现的语言意义上的错误,如加法的两个操作数中一个是整型变量名,而另一个是数组名等。

㈢ 编译器有什么用

简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器(Linker) → 可执行程序 (executables)
高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言 (High-level language), 如Pascal、C、C++、Java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。
对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。

㈣ 编译器是什么

简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)
高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言 (High-level language), 如Pascal、C、C++、Java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。
对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。
编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。
典型的编译器输出是由包含入口点的名字和地址, 以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的EXE,
所以我们电脑上的文件都是经过编译后的文件。

㈤ 璁$畻链虹▼搴忕殑瑙i喷鍜岀紪璇戞柟寮

璁$畻链虹▼搴忔槸濡备綍杩愪綔镄勫憿锛熻В閲婃柟寮忓拰缂栬疟鏂瑰纺澶т笉钖岋紒链鏂囧皢娣卞叆鎺㈣ㄨ$畻链虹▼搴忕殑瑙i喷鍜岀紪璇戞柟寮忥纴甯锷╄昏呮洿濂藉湴浜呜В杩欎袱绉嶆柟寮忕殑镙规湰鍖哄埆銆
🔍瑙i喷鏂瑰纺
瑙i喷鏂瑰纺鏄阃愬彞镓鎻忋侀愬彞缈昏疟锛岀劧钖庨愬彞镓ц屻傝繖镒忓懗镌锛屽綋婧愮▼搴忓嚭鐜板惊鐜镞讹纴瑙i喷绋嫔簭浼氶吨澶岖炕璇戝拰镓ц岃繖涓缁勮鍙ワ纴鏁堢巼澶уぇ闄崭绠銆
🚀缂栬疟鏂瑰纺
缂栬疟鏂瑰纺鍒欐槸鍏埚皢婧愮▼搴忕炕璇戞垚鐩镙囱瑷绋嫔簭锛岀劧钖庡啀杩愯屻傝繖涓崭粎澶уぇ鎻愰珮浜嗘墽琛岄熷害锛岃缮阆垮厤浜嗛吨澶岖炕璇戝拰镓ц岀殑娴璐广
🎯镙规湰鍖哄埆
鍒ゆ柇鏄瑙i喷鍣ㄨ缮鏄缂栬疟鍣锛屽叧阌鐪嬫槸钖︽湁镫绔嬬殑鐩镙囩▼搴忕敓鎴愩傜紪璇戝櫒浼氱敓鎴愮嫭绔嬬殑鐩镙囩▼搴忥纴钥岃В閲婂櫒鍒欎笉浼氥傝繖灏辨槸瑙i喷鍜岀紪璇戞柟寮忕殑镙规湰鍖哄埆锛

㈥ C语言工作原理

作为一种编程语言,本身是谈不上工作原理的,实际上C语言所有的语法,正是C语言编译器的工作原理或者工作机制的具体实现。要细致的讨论起来是不可能,但是作为C语言程序员,必须了解这个大致的流程。一个程序,从C语言源码,到系统可执行的文件,一般经历四个过程。
1、预处理阶断,这个阶断是文本处理阶断,有预处理器来完成,会将源码中的带"#"开头的预处理命令进行相应的处理,在Linux上C语言的预处理器程序是cp命令。
2、编译阶断,这个阶断是有C语言编译阶断,在Linux上C语言的编译器是cc命令,它将C语言源码转换成汇编指令。
3、汇编阶断,这个阶断是汇编编译阶断,在Linux上C语言的汇编器是as命令,这个阶断会将汇编指令编译成二进制机器码。
4、链接阶断,这个阶断是会将汇编阶断生成的机器码目标文件,装载成一个系统可执行的文件,在Linux平台以ELF格式进行组装,在Windows平台上以PE格式进行组装。在Linux平台上的链接器命令为ld,在windows平台上的链接器命令为linker。

热点内容
androidadtmac下载 发布:2024-06-30 23:08:09 浏览:152
qq空间访问量排行 发布:2024-06-30 23:03:06 浏览:592
皓影什么配置座椅通风 发布:2024-06-30 23:01:27 浏览:381
看手机解压 发布:2024-06-30 23:01:27 浏览:837
安卓手机的系统怎么升级 发布:2024-06-30 23:01:25 浏览:264
apktool回编译失败怎么回事 发布:2024-06-30 22:53:16 浏览:928
sql获取时间的日期 发布:2024-06-30 22:51:57 浏览:729
亚索编程的 发布:2024-06-30 22:35:35 浏览:880
axis2上传文件 发布:2024-06-30 22:26:04 浏览:16
安卓本地音乐怎么转移到苹果 发布:2024-06-30 22:21:54 浏览:616