① 如何知道电脑里有哪些编译器
可以看下环境变量PATH的值,一般安装的编译器会在这里设置路径。
② 编译器是什么
电脑是不会直接读取你的程序的,就算是汇编也不会,它只会读010101,而编译器就承担了把你的程序转换成二进制,也就是电脑看的懂得样子,有些编译器还允许设置中间语言,比如,我把c++的程序编译,中间语言是汇编语言,它会先转换成汇编语言,再转换成机器语言,不求采纳,点个赞就好了
③ 汇编语言编译器是怎么编写的
编译器自举!搜索这个关键字
程序都是编译器编译的。这个是肯定的
至于第一款X语言编译器是不是直接1010101010自己写的那就不知道啦
一般开发编译器的话。有两条路选择
1.利用yacc(或者其变种)&lex(词法分析)-等工具自己生成语法模板
词法语法都可以使用这些工具自己生成
然后自己编写生成的中间码和生成的机器码就可以了
一般做编译原理类似试验都是如此的。许多编译器也的确是这样
2.自己写词法分析和语法分析。可以参考一些开源的编译器
lcc-这个是ANSI C99标准的编译器是开源的
或者nasm,watcom等编译器到www.sf.net上不少开源的编译器
总的来说。高级语言编译器比较难写
如果想快速写出一个的话
可以采用第一种做法。利用工具生成语法词法模板
先写一个简单的汇编编译器比较简单
开源的有nasm,jwasm(支持masm语法开源的编译器)
http://www.japheth.de/JWasm.html
fasm(这款编译器是自举的.就是自己可以编译自己),
http://flatassembler.net/
剩下的就是自己做好语言规则关键字map
引用高手的话。语言map做好了你的编译器也做好一半了
剩下的都是机械性的工作了。
生成x86或者arm指令。
优化工作这个很难解释.根据你所需要的做吧
毕竟可以做出一个无错,又XX的编译器已经很难得
你可以选择使用现有的编译器开发自己的编译器
然后等到你的编译器支持相当数量指令和成熟度的时候
使用自己的语法重新写一遍编译器.
这样你就可以用自己的编译器开发自己的编译器了(是不是很邪恶?)
另外举几个例子
Delphi的编译器是C++ Builder开发的。
而C++ Builder的IDE是Delphi开发的
C++ Builder的编译器是C++ Builder开发的-这个就是编译器自举了。。Delphi和C++ Builder共享一个后端化优化器。
Delphi 早期的版本的编译器是tasm直接编译的。可见Anders的汇编功力多强悍(Anders也就是后来VJ++,C#,.NET工程的核心架构师.最关键的灵魂级人物)
VC++的编译器是VC++开发的。很明显这都说明了编译器自举
自己开发自己。如果一个编译器可以做到自己编译自己。那基本上就可以实现任何功能了。
关于编译器开发的书籍可以看一下
龙书《编译原理(第二版)》
虎书《现代编译原理-C语言描述》
鲸书《高级编译器设计与实现》
建议从鲸书看起。然后是龙书
再来是虎书--虎书里面描述了许多现代编译器(正如其名)技术
例如面向对象啦,优化,垃圾回收等等.
鲸书看完基本上就可以实现一个简单的Tiny C编译器了
然后在龙书巩固,读一下语言规范,自己看一些开源的汇编编译器代码
自己就可以尝试做一个汇编语言编译器了.等到技术提高了
在尝试做一些高级语法识别,参考LCC代码做一下ANSI C99的
C语言编译器。再来就看你自己的兴趣和领悟度拉
如果想支持C++的话就得要对编译器做许多方便的研究
类似Java那种跨平台或者Ruby,Python等动态语言
虎书中也有描述。当然看自己功力了
④ 如何看待《自己动手写编译器,链接器》一书大量抄袭开源编译器 TCC
对于编译器来说,核心是定义的语言,从这个意义上讲,SCC编译器属于原创内容当然就谈上上抄袭,人家有这个版权声明也算合理,不过似乎没什么用,因为源代码可以公开下载,实事上就是开源了。
其实我们读者更关心一本书对我们自身是否有用,听朋友说现在编译器开发工程师起薪20k以上,要真能学会这门技术对我来说还是很有诱惑力的,毕竟国内真正写过完整编译器,链接器的人还是凤毛麟角,能掌握这门技术还是很吃香的。
⑤ 如何编写自己的编译器
我晕,你们老师真NB,你学的什么语言啊?是c吗?上来就让你做个编译器,你们老师吃错药了吧?
我大学同学毕业设计才是做个编译器,那会那俩人合作做的,还都是我们系公认的c最强的两个,合作还做了半年,你认为大一刚上来就做这个?!
⑥ linux下如何查询编译器搜索头文件的路径
`gcc -print-prog-name=cc1plus` -v
`g++ -print-prog-name=cc1plus` -v
⑦ 制作一个简单的编译器
还能编译汇编。。。
我晕。。。
我想这个不是一般人可以做到的,祝你好运!
如果你仅仅针对文本编辑器的话就好办了。
⑧ 编写编译器需要哪些知识
你是自己专门开发一种编程语言呢还是做一个现有语言的编译器。你目标太伟大了。
至少你要是名编程高手,汇编语言肯定是要精通的,十分了解 编译原理,怎么说程序是在操作系统上运行的 对操作系统要精通,
⑨ 编译器用的哪一个
不同的操作系统,使用的 C 语言编译器不同。对于 WINDOWS 系统而言,编译器是 Microsoft Visual Studio C++;对于 UNIX 系统来说,编译器是 cc;对于 Linux 系统来说,编译器是 gcc 。但是无论是哪一种操作系统,也无论是哪一种编译器,只要你真正熟练掌握了 C 语言编程技术,无论你使用哪一种操作系统,也无论你是使用哪一种 C 语言编译器,这些都是非常容易学习、并掌握的。