怎么写编译器

1. 怎样去写一个编译器(用C语言写C语言编译器),需要哪些知识做

写编译器重点就是设计并实现一些数据结构和算法,语言特点太多的话,代码写起来不容易,建议你找一个小语言尝试下,不要一开始就去尝试成熟语言。否则你会在写完语法分析程序以后,遭遇到很大的困难。多数人都是在写语义分析程序的时候,突然发现自己设计的数据结构很烂,后边越写越要命。

如果你想入门编译器的话,那么可以看《编译原理与实践》,整本书先将编译器理论,然后后边教你一步步实现c-miuns(c的子集)的编译器,包括lex,yacc,都在几千行代码左右。这本书讲的比较简单易懂一点

也可以学学斯坦福大学的编译器设计公开课(aiken设计了一个叫cool的语言,专门用来教人写编译器),课程地址上面有人给了:Compilers。这门课以前有个实验环境(据说已经给了,我以前写的时候还是用的网上一个不完整的实验环境),把和编译器知识无关的内容都给你写好了,你只需要在固定的地方填上你的内容就可以写出你的编译器(不要觉得很简单哦,人家的代码写的很精巧的,读完就发现写个好编译器还是很费脑子的),另外,这个实验环境有个特点,就是在每一步都提供标准程序做对比,你可以在写完一部分以后就同标准程序对比,及时发现错误。这种方式为写编译器又提供了很多帮助

先找个小的,慢慢研究,弄懂了整体的结构再说

2. 汇编语言编译器是怎么编写的

编译器自举!搜索这个关键字

程序都是编译器编译的。这个是肯定的

至于第一款X语言编译器是不是直接1010101010自己写的那就不知道啦

一般开发编译器的话。有两条路选择

1.利用yacc(或者其变种)&lex(词法分析)-等工具自己生成语法模板

词法语法都可以使用这些工具自己生成

然后自己编写生成的中间码和生成的机器码就可以了

一般做编译原理类似试验都是如此的。许多编译器也的确是这样

2.自己写词法分析和语法分析。可以参考一些开源的编译器

lcc-这个是ANSI C99标准的编译器是开源的

或者nasm,watcom等编译器到上不少开源的编译器

总的来说。高级语言编译器比较难写

如果想快速写出一个的话

可以采用第一种做法。利用工具生成语法词法模板

先写一个简单的汇编编译器比较简单

开源的有nasm,jwasm(支持masm语法开源的编译器)

fasm(这款编译器是自举的.就是自己可以编译自己),

patible object format的错误警告,需要在通过重新设定Module的triple,我的PC的getTargetTriple的结果是“i686-pc-windows-msvc”,直接在后面再加上“-elf”即可

TheModule->setTargetTriple("i686-pc-windows-msvc-elf");

2. LLVM不支持windows下通过动态链接导出函数,如果需要使用C/C++的函数,需要通过addSymbol进行注册

llvm::sys::DynamicLibrary::AddSymbol(/*std::string("_") +*/ "printd", &printd);

3. Kaleidoscope里使用的JIT的查找函数的API,getPointerToFunction已经被弃用了,需要替换为getFunctionAddress

4. 编写一个操作系统,应该先编写一个编译器

可以用C编写也可以用别的语言编写。

我在解释下吧,```看样子我没解释的详细。最原始的C语言编译器估计是用汇编语言写的,而汇编器估计是用机器码强写的,而机器码的规则是设计CPU架构的人规定的。而所有的理论基础,你就带仔细查看50,60年代的大牛了,图灵,冯诺依曼,knuth……之类的人给出理论上的证明和可行性,编译器的设计在knuth给出了LR(K)算法后才开始有了质的飞跃。

而现在的编译器实现的就简单了,你可以用C语言在写一个C编译器,来编译C程序,也可以写C++编译器来编译C++,假如你是用C写C编译器,那么这种貌似叫交叉编译`~~,大概就这样了。楼主真的想了解透彻自己去写个编译器就知道是怎么回事了

5. 如何利用LLVM写一个编译器

书籍请参考编译原理的龙书,以及flex,bison,llvm的manual。

如何写我可以给你一个大致的流程, 编译器由词法分析器->语法分析器->中间代码生成器->后端组成。 用C语言写编译器一般可以按照以下步骤: 1.使用flex生成词法分析器。

(flex可以通过自己编写的描述文件来自动生成词法分析器) 2.使用bison生成语法分析器。(bison可以通过自己编写的描述文件来自动生成语法分析器) 3.通过语法分析器得到输入代码的语法树表示。

4.编写遍历函数遍历语法树生成中间代码。(这里推荐使用LLVM的中间代码表示) 5.利用LLVM工具集来编译执行所得到的中间代码。

转载请注明出处育才学习网 » 怎么写编译器

知识

期中考试奖状怎么写

阅读(868)

本文主要为您介绍期中考试奖状怎么写,内容包括小学生期末奖状的写法,期中考试我们班有个全年级前10,班主任让我写奖状要求新颖,2009年期末奖状怎么写。1.***:在***活动中表现突出,被评为***。(或者荣获*等奖)特发此状 以资鼓励***单位 (盖章)*年

知识

慧字草书怎么写

阅读(207)

本文主要为您介绍慧字草书怎么写,内容包括慧字草书怎样写,慧字草书怎样写,请问有谁知道“慧”字的草书写法。慧字草书写法如下图: 拓展资料 草书 草书有广义和狭义。广义的,不论时代,凡写得潦草的字,都可以算草书。狭义的,即作为一种特定的字体

知识

毕业论文方向怎么写

阅读(176)

本文主要为您介绍毕业论文方向怎么写,内容包括写论文如何确定论文的方向,毕业论文怎么写,毕业论文怎么写。首先是你的观点的提炼,可从实际应用着手,确定某个点,由这个点引申到面,比如你研究的是中国象棋的车的使用,那就是说中国象棋各棋子的走法

知识

琳的笔顺怎么写

阅读(181)

本文主要为您介绍琳的笔顺怎么写,内容包括琳的笔画顺序怎么写,琳字的五行属性,琳的五行属什么,笔画数多少,繁体字怎么写,“琳”写在田字格怎么写。“丞”的五行属性:金“丞”的笔画数是6画“丞”的繁体字还是“丞”丞 (会意。甲骨文字形,上面

知识

月饼拼音怎么写的

阅读(417)

本文主要为您介绍月饼拼音怎么写的,内容包括中秋节那天妈妈买来许多月饼的拼音怎么写,姐姐吃月饼的拼音怎么写,月饼怎么填音节拼音音节。moon cake英文发音:[muːn keɪk]中文释义:n.月饼(中国食品)例句:The holiday characteristi

知识

五的毛笔字怎么写

阅读(182)

本文主要为您介绍五的毛笔字怎么写,内容包括围绕马克思主义五观的毛笔字怎么写,真爱与自由这五个字的毛笔字怎么写,毛笔字怎么写。书法有篆书、隶书、楷书、行书、草书五体,楷书结构的排列正好是中间阶段。它是从隶书演变过来的,如果把楷书写

知识

偷的拼音怎么写的

阅读(269)

本文主要为您介绍偷的拼音怎么写的,内容包括偷伐的拼音怎么写,偷偷的偷的笔顺怎么写,请问一下和偷读音相同的字怎么写。【文字】:快递员偷同行万元包裹被抓【拼音】:kuài dì yuán tōu tóng háng wàn yuán bāo guǒ bè

知识

我的故乡作文怎么写

阅读(157)

本文主要为您介绍我的故乡作文怎么写,内容包括(我的家乡)作文怎么写,(我的家乡)作文怎么写,我想象中的故乡的作文怎么写。家乡是花园,有着鲜花的芬芳;家乡是森林,有着绿树的清凉;家乡是田野,有着收获的希望;家乡是雪景,有着冰晶的闪亮。 回忆过去,家家

知识

工作后简历怎么写

阅读(166)

本文主要为您介绍工作后简历怎么写,内容包括主要工作简历怎么写,工作简历怎么写,个人工作简历怎么写。原发布者:李敏工作经历怎么写? 雇主将会很注意简历中的工作经历这一部分。在看完求职目标后,他们想了解你的历史,你曾在哪儿工作,工作了多长

知识

推荐信缺点怎么写

阅读(193)

本文主要为您介绍推荐信缺点怎么写,内容包括推荐信中优点和缺点怎么写,推荐信缺点怎么写,推荐信中关于缺点怎么写好。推荐信中的优点怎么写客观评价自己的成就,避免赞美过度 美国大学推荐信应该表明推荐人对于申请者的动机有一定了解,并能解

知识

小说读后感怎么写

阅读(356)

本文主要为您介绍小说读后感怎么写,内容包括小说读后感的写法,选写小说读后感200字一篇多写得多分,读后感怎么写。读后感的写法,同学们可能都有所了解。就是写读后的感想、看法。要求有读有感,读是基础,感是关键。它的一般结构形式是∶开头读

知识

流篆体怎么写

阅读(206)

本文主要为您介绍流篆体怎么写,内容包括流小篆怎么写,篆书,清风长流怎么写,梁智荣印的篆体怎么写。书法里隶书“流”字可以少右边上面那一点,如下图:

知识

淘宝回评怎么写

阅读(165)

本文主要为您介绍淘宝回评怎么写,内容包括淘宝卖家回评写什么好,淘宝网上交易,作为卖家,怎样去回评买家,淘宝卖家回评怎么写。亲爱的客户感谢您选择本店,我们会继续努力、将以优质的品质、最低的价格、满意的服务回报各位亲的大力支持!新品不

知识

度字篆体怎么写

阅读(164)

本文主要为您介绍度字篆体怎么写,内容包括度字的行书楷书隶书草书篆体分别怎么写,文字篆体怎么写,“义”字的篆体怎么写。“文字”用篆体书写如下。

知识

编译器怎么写

阅读(170)

本文主要为您介绍编译器怎么写,内容包括自己写编译器怎么写,我想为中国程序员做个编译C语言的编译器,如何写一个简单的编译器,汇编语言编译器是怎么编写的。编译器自举!搜索这个关键字程序都是编译器编译的。这个是肯定的至于第一款X语言编

[/e:loop]