编译器多大工作量
Ⅰ 我想做一个C语言编译器……
没什么可不可取的,弄出来的话你的编程水平会有很大的提升,没弄出来也会,除非你一开始就放弃.
首先不建议你搞x86架构的,当然想挑战自己也行,因为x86架构的指令格式十分的操蛋.
建议写arm架构的编译器,因为指令结构简单,而且你学了之后做嵌入式方向很有用
工作量相当的大,给你说一下你要点的技能点吧
*数据结构(编程必修)
*编译原理(理论知识,没有他你没法下手)
*了解一种架构的汇编语言(不会的话你不知道怎么该让cpu去处理c的语句)
*了解你学的那种架构的汇编语言的指令格式(不翻译成机器指令cpu咋跑)
*了解一种可执行文件的格式(windows就搜PE文件的格式,linux就搜elf文件的格式,不把编译出来的东西组织成os能识别的格式咋运行)
*还有需要一定的英文阅读能力(因为有的资料没有中文)
还有一定要丢掉老掉牙的vc 6.0和tc,这俩家伙用来应付考试还行,用他来实际开发你就找虐吧.
Ⅱ gcc 编译器里的 int 到底范围是多大
这取决于操作系统而不是编译器,32位操作系统的int值范围应该是是+/-2147483647;
malloc能分配多大空间取决于你想申请多大空间;
用gcc --help或者man gcc就可以看到所有的命令参数了.
Ⅲ 编译器给栈分配的空间是不是2M啊
默认是1m,不过可以设
Ⅳ 编译原理难吗
编译原理我觉得不是最难的,或者是读得很浅所以不觉得难。在计算机基础课中最难的我觉得是操作系统,很难很重要,但是很少人会去重视,基本都是草草的上课草草的学了,不得精髓;次之算法也很难,不止是理论,实际用用也难。
国内985本科编译能教的大约是半本龙书组成的前端加一个基本的后端,不难。但是实践的工作量大。认真做一个编译器至少两三万行C++的工作量,只有半个学期的时间,压力很大。当然,compiler的可玩性不错,不那么枯燥。
Ⅳ 汇编语言编程既然效率高、体积小那么为什么软件不用汇编语言编写呢
汇编通用性差,不同型号的CPU,都会带来巨大差异,汇编缺乏一个有效的底层管理,编写的程序会BUG成堆,汇编缺乏各种开发包支持,编复杂的程序几乎成为不可能,他的缺点根本无法用它的效率弥补,如果真用汇编,反而会因为程序写的蹩脚,反而运行效率也大大降低。。。只有移植代码会用会编写,因为需要他进行硬件隔离,让软件编程在逻辑上和硬件无关。。。
虽然所有程序都要有转化汇编这一条,但是人家都是一个千锤百炼的编译器在做这个事,可靠性不用怀疑,如果用汇编,这种事就要亲自上手,你觉得一个程序员写的汇编能和编译器拼可靠性吗??
编程首要任务是缩短开发周期短,工作量小,至于代码运行慢,根本就不是个事,高性能CPU一大把,你用汇编导致的工期延长,买几百CPU没问题,编程发展到今天,汇编除了进行BUG排查,底层代码移植,关键代码编写,需要用,其他都不用。。。因为应用软件用汇编,几乎变的不可能,连个有效的开发库都没有,算个乘方开方这些数学上的东西都是个问题,你说这程序怎么编。。。。。
Ⅵ 编译原理学了有什么用
对大多数人来说,学过编译原理,应该可以知道对于很多代码的优化,编译器其实可以做好,不需要自己写代码的时候杞人忧天。在通用、局部的优化上,甚至编译器往往做得比程序员好。
大概率会意识到编译原理背后的故事,也许会沉迷在某个方向,也许还会乐于看一些奇妙的parser构建方式。
大概还可能会去学习类型系统,发现形式化的故事似乎在很多方面都有对应的版本,而后,他们也许会尝试走向研究,去挑战目前都没有好好解决的代码优化问题,也许会走向应用,用起LLVM,在上面加个target,支持一些新硬件,做个新语言的前端等。

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。
编译原理课程是计算机相关专业学生的必修课程和高等学校培养计算机专业人才的基础及核心课程,同时也是计算机专业课程中最难及最挑战学习能力的课程之一。编译原理课程内容主要是原理性质,高度抽象。
编译可以分为五个基本步骤:词法分析、语法分析、语义分析及中间代码的生成、优化、目标代码的生成。这是每个编译器都必须的基本步骤和流程, 从源头输入高级语言源程序输出目标语言代码。
1、词法分析
词法分析器是通过词法分析程序对构成源程序的字符串从左到右的扫描, 逐个字符地读, 识别出每个单词符号, 识别出的符号一般以二元式形式输出, 即包含符号种类的编码和该符号的值。
词法分析器一般以函数的形式存在, 供语法分析器调用。当然也可以一个独立的词法分析器程序存在。完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。
2、语法分析
语法分析是编译过程的第二个阶段。这阶段的任务是在词法分析的基础上将识别出的单词符号序列组合成各类语法短语, 如“语句”, “表达式”等.语法分析程序的主要步骤是判断源程序语句是否符合定义的语法规则, 在语法结构上是否正确。
而一个语法规则又称为文法, 乔姆斯基将文法根据施加不同的限制分为0型、1型、2型、3型文法, 0型文法又称短语文法, 1型称为上下文有关文法, 2型称为上下文无关文法, 3型文法称为正规文法, 限制条件依次递增。
3、语义分析
词法分析注重的是每个单词是否合法, 以及这个单词属于语言中的哪些部分。语法分析的上下文无关文法注重的是输入语句是否可以依据文法匹配产生式。
那么, 语义分析就是要了解各个语法单位之间的关系是否合法。实际应用中就是对结构上正确的源程序进行上下文有关性质的审查, 进行类型审查等。
4、中间代码生成与优化
在进行了语法分析和语义分析阶段的工作之后, 有的编译程序将源程序变成一种内部表示形式, 这种内部表示形式叫做中间语言或中间表示或中间代码。
所谓“中间代码”是一种结构简单、含义明确的记号系统, 这种记号系统复杂性介于源程序语言和机器语言之间, 容易将它翻译成目标代码。另外, 还可以在中间代码一级进行与机器无关的优化。
5、目标代码的生成
根据优化后的中间代码, 可生成有效的目标代码。而通常编译器将其翻译为汇编代码, 此时还需要将汇编代码经汇编器汇编为目标机器的机器语言。
6、出错处理
编译的各个阶段都有可能发现源码中的错误, 尤其是语法分析阶段可能会发现大量的错误, 因此编译器需要做出错处理, 报告错误类型及错误位置等信息。
Ⅶ Linux系统下C语言编译器
vs系列既然叫studio,就说明他是集成了所有东西。
GCC仅仅是compiler collection,编译器的集合,如果需要搞成IDE,还需要其他软件配合。我现在使用gcc+vim+gdb
也正是因此,我才感觉到vi的确是功能强大。
随便搜了个帖子,希望对你有所帮助
http://hi..com/mikeking20031/blog/item/954b6d06e12f587e03088160.html
Ⅷ C语言编译器是什么
C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。[2]
二十世纪八十年代,美国国家标准局为了避免各开发厂商用的C语言语法产生差异,给C语言制定了一套完整的美国国家标准语法,称为ANSI C。作为C语言最初的标准。[3]2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows, Mac OS X, Linux, Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
例:
#include <stdio.h>
int main() {
printf("Hello,world!");
return 0;
}
编译运行将输出: Hello,world!
Ⅸ 51单片机程序空间大小
AT89C52的程序空间是8KB是确认无疑的,但指的是存放纯二进制的机器码,就是二进制数。而KeilC编译的HEX代码文件并不是纯二进制数,是以ASCII码格式存放的文件,而且其中还有一些编译信息,如地址、校验和等。所以,不能看HEX文件的大小来确定下载到单片机内的真正的程序空间大小,也就是说HEX文件的大小并不是真正下载的单片机的程序大小。而下载到单片机的代码空间大小要看Keilc编译时给出的代码数的提示,才是真正要下载到单片机内的代码空间。举个例子,下图是一个程序编译后的提示,真正的二进制代码是337个字节,而HEX文件却是1KB。这里还有一个误区,你看到的HEX文件的大小是操作系统给出的大小吧,它是取整KB的,就是说HEX文件不足1KB时,也显示是1KB。
再明确一点说吧,假如编译后的代码是750418,用纯二进制数(即BIN格式,有些汇编程序的编译器输出的就是BIN格式)的代码保存就是3个字节,而用HEX格式保存就是6个字节,因为要用6个ASCII码来表示。这来算来,HEX文件大小是BIN文件的二倍,加上一些地址信息,是大于二倍的。
好,回到你的问题来,你的HEX文件是19KB,你看一下编译后的代码大小提示,肯定是不会超过8KB的,否则编译时肯定会报错的。

Ⅹ 正规的GCC大概多少MB
你好,
本词条缺少信息栏、名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!
GCC(GNU Compiler Collection,GNU编译器套装)是一套由GNU工程开发的支持多种编程语言的编译器。GCC是自由软件发展过程中的着名例子,由自由软件基金会以GPL协议发布。GCC是大多数类Unix操作系统(如Linux、BSD、Mac OS X等)的标准的编译器,GCC同样适用于微软的Windows。GCC支持多种计算机体系芯片,如x86、ARM,并已移植到其他多种硬件平台。GCC原名为GNU C编译器(GNU C Compiler),因为它原本只能处理C语言。GCC很快地扩展,并支持处理C++。后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go等。
GCC(Gulf Cooperation Council),海湾合作委员会英文简称,详见网络词条。
本身不大
