托管代码,自己动手开发编译器(十二)生成托管代码

前一阶段我们完成了编译器中的重要阶段——语义分析。现在,程序中的每一个变量和类型都有其正确的定义;每一个表达式和语句的类型都是合法的;每一处方法调用都选择了正确的方法定义。现在即将进入下一个阶段——代码生成。代码生成的最终目的,是生成能在目标机器上运行的机器码,或者可以和其他库链接在一起的可重定向对象。代码生成,和这一阶段的各个优化手段,统称为编译器的后端。目前大部分编译器,在代码生成时,都倾向于... [阅读全文]

自己动手写编译器,自己动手开发编译器(九)CPS风格的解析器组合子

上回我们用函数式编程的方法,结合Linq语法,建立了一套解析器组合子方案,并能成功解析自定义文法的输入字符串。但是,上次做成的解析器组合子有个重要的功能没有完成——错误报告。作为编程语言的语法分析器,不能在遇到语法错误的时候简单地返回null,那样程序员就很难修复代码中的语法错误。我们需要的是准确报告语法错误的位置,更进一步,是程序中所有的语法错误,而不仅仅是头一个。后者要求解析器具有错误恢复的能... [阅读全文]

开源编译器,PathScale开源EKOPath 4编译器

PathScale宣布开源其EKOPath 4编译器套件,包括文档、编译器、调试器,汇编器,运行时和标准库在内的完整开发堆栈。源代码采用GPLv3许可证发布。 EKOPath 4是目前行业性能最优秀的C、C++和Fortran编译器之一。Phoronix测试了GCC 4.5.2和EKOPath /PathScale Compiler Suite 4.0.10,在所有的基准测试项目中,EKOPath... [阅读全文]

编译器,谈.NET,由编译器开始谈起

(这系列文章主要以我的读书笔记为基础写成的,因此可能跳跃性比较大。我想写的东西不只是包含一些结论,还包括了自己在学习时的所思所想。其中肯定有不妥之处,希望能得到指正。) 编译器是什么?这个问题在我自学的开始阶段的确困扰了我很久。简单的说,就是把高级语言翻译成低级语言的东西。高级语言我喜欢叫“源代码”。就如同一般的翻译一样,翻译的东西可能会夹带写译者的想法,所以你写的东西和... [阅读全文]

开发编译器,自己动手开发编译器(一)编译器的模块化工程

本系列的第一篇,我想概述一下编译器的构造,同时帮助大家了解编译器中各个组成部分的用途。想必大家看别的编译原理书籍,大都在第一章或者序言之类的地方,将编译器分成许多模块,然后每一个模块负责编译的特定阶段,最后串起来组成完整的编译器。比如下面这张图就是虎书(Modern Compiler by Andrew W. Appel)第一章中出现的编译器阶段示意图: 那么,为什么要将编译器拆成一个个阶段,一... [阅读全文]

编译器开发,自己动手开发编译器(零)序言

好久没写博客了,一来是自己懒,二来是最近一段时间都没有做什么自己认为可以分享的东西。这几天刚好重拾了一个一直打算做但没做的编译器类库,算是积累了一点小小的经验吧。本来我已经发到了Github上,也在微博上零星介绍了一些,但是我最终意识到,如果不写一个详细的文档,别人就不能容易地学习、了解和使用它。甚至于我自己也可能会把这次研究出来的小小成果给忘了。所以,必须下决心动一动笔头,也算是对老长时间不些博... [阅读全文]

编译器,编译器历史简要

http://blog.sina.com.cn/s/blog_4d39706b0100dhpt.html 一。历史背景 上世纪50年代,IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。与此同时,Noam Chomsky开始了他对自然语言结构的研究。他的发现最终使得编译器的结构异常简单,甚至还带有... [阅读全文]

编译原理,EMIPLIB1.0.0的编译

EMIPLIB是一个用RTP传输音视频的开源库,totally free。 目前最新版是1.0.0 在这里下载http://research.edm.uhasselt.be/emiplib/emiplib.html emiplib-1.0.0.tar.gz 依赖项:基本的支持声音的用前三个便可以了 1.jrtplib http://research.edm.uhasselt.be/~jori/p... [阅读全文]

编译器,编译器处理while,for结构的小发现

在做一个日报自动报表发送项目时,因为项目是Windows服务,而且报表是每天自动发送,所以里面有这么一个函数 public void AutoReportSend() { while (true) { try { //采集时间没到,则结束。直到采集时间才开始采集作业 if (DateTime.Now 偶然情况下让我发现了一个让我觉得比较有趣的问题:我用.NET Reflector工具查看项目的e... [阅读全文]

编译原理,编译问题

如果您有疑问或建议,请进入技术讨论区交流 这章节搜集了很多编译时会产生的错误情况。 1. 我用匿名CVS得到最新版的源代码包, 但没有配置脚本文件! 2. 我在配置 PHP 在 Apache下工作时出了问题。 它说不能找到 httpd.h, 可是我看它就在那里! 3. 当我运行conifgure时,它说它不能找到include文件或 一些库: GD, gdbm, 或其它的一些包! 4. 我在编译... [阅读全文]

编译器,VisualStudio2010代码编译器特性分析

很多人对Visual Studio 2010代码编辑器带来的Pascal大写查找的IntelliSense功能心怀感激,但不幸的是,XAML编辑器并没有这项功能。特性◆Pascal大写的查找;◆可选的窄列表过滤;◆根据项目类型过滤;◆可选的xmlns代码提示;◆显示/隐藏本solution的assemblies;◆显示/隐藏schemas;◆过滤选项会在当前VSsession中保存;◆Pascal... [阅读全文]

gcc编译器,Gccgo编译器进入GCC

GCC 4.6将支持Go语言编译器Gccgo。本月初开发者Ian Lance Taylor已经将Gccgo前端合并到GCC主支中,这意味着预计在明年初发布的GCC 4.6将支持Go语言。此举有利有弊,它给使用Gcc的Go程序员引入了一个难题:因为Go语言还处于快速进化阶段,而Gcc不是,因此Gcc用户使用的是版本过时的Go语言。   相关新闻:   · Go语言近况(2010-08-09)  ... [阅读全文]

编译器优化,记录一个问题,积累一点经验(1) —— 编译器优化

最近项目很紧,活很多,今天加班加到现在才回家。 废话不说了,前几天调程序遇到一个怪异的问题,程序运行总是会crash掉。根据打log,问题定位在这个语句上面: if(condition){ statement;}... [阅读全文]

编译器源代码:搞爆编译器的代码

pascal:{$inline on}procedure a; inline;begin end;procedure b; inline;begin a;a;a;a;a;a;a;a;a;aend;procedure c; inline;begin b;b;b;b;b;b;b;b;b;bend;procedure d; inline;begin c;c;... [阅读全文]

java编译器:Java混淆编译器

近发现大家很多问题都涉及到了混淆器概念特发此贴希望在大家学习过程中有所借鉴 JAVA中文站社区门户ZH&a?;NAzw1n/ilD\YY最近试用了几个Java混淆器(Java Obfuscator)感觉没有个完全另人满意 于是想干脆自己写个得了翻了几页Java虚拟机规范标准的后突发奇想别混淆器都是在编译好 code上做文章能不能从源码直接编译成经过混淆文件呢?就这样花了个多星... [阅读全文]

gnu编译器:介绍FreeBSD中的GNU C编译器

最基本开发环境必须具备 C语言支持能力C作为种编译型高级语言这就是说运行C的前要将其先编译成可执行由机器指令构成执行因此就需要使用个编译器来对C源代码进行处理FreeBSD使用是GNUC编译器   GCC作为当前最流行、支持平台数量最多编译器其性能和效率也非常的好  按照 C语言习惯第个通常为hello.c:$ cat hello.c{prf( “ Hello, world!n &rd... [阅读全文]

linux2005:共创linux2005版 装完系统还要装编译器

  下个down(断点续传工具)为了方便在下文件总不能下半半文件吧!文件名: linuxdown-1.2.0.tar.gz    下完 打开 图形方式不说了在终端执行 #tar -xzvf linuxdown-1.2.0.tar.gz    是源文件装不了好象没有编译器什么cc..(装系统时也没提示不知道如何没装编译软件Software)    又下了个 gcc... [阅读全文]

gnu编译器:介绍FreeBSD中的GNU C编译器

最基本开发环境必须具备 C语言支持能力C作为种编译型高级语言这就是说运行C的前要将其先编译成可执行由机器指令构成执行因此就需要使用个编译器来对C源代码进行处理FreeBSD使用是GNUC编译器GCC作为当前最流行、支持平台数量最多编译器其性能和效率也非常的好 按照 C语言习惯第个通常为hello.c: $ cat hello.c { prf( “ Hello,... [阅读全文]

编译器:几种编译器的内存管理和LX管道的内部实现

天闛/xy忏 n 关于某个作业的地址空间大小为3K ,在内存中占4K的疑问....... 今天看软设的书,突然看到这个问题........ 在内存中,确实存在碎片的问题,一般可以采用"紧缩"的方式(搜索内存找到连续的一片3K大小的空闲内存),还有种方式就是 "分页存储管理".. 如内存有2个为2K的空闲内存,把作业划分为2K和1K 分别存储与内存那2个2K空闲区内. 所以分页的目的就是... [阅读全文]

pmon引导:编译PMON指南[转]

编译PMON指南 蔡军生 为了学习怎么样开发龙芯的BIOS,也就是PMON。经历好几天深夜的探索,遇到各种各样的问题,后来又上论坛问到kkmao,总算解决了,在这里谢谢kkmao的帮忙。现在就把我的编译过程介绍一下。 一、下载SVN工具 由于要下载PMON代码,就要使用SVN工具。目前,所有的代码都是按版本控制形式保存在服务器上的,并且没有打包的代码,这样就需要使用SVN的工具来下载代码。... [阅读全文]

编译器:让我们和编译器一起做游戏吧

搞挂编译器是件很有趣事情编译死循环便是其中的让我们和编译器起做游戏吧~ 1、Preprocess a、Self Include(GCC _disibledevent=}; 不过利用VC某个bug(或者说特性)可以很容易写出O(na)编译时间模版: # cstddef # INNER(A3,N3,A2,N2) \ templatesize_t N3\ struct... [阅读全文]

c语言编译器:C编译器对结构空间的分配及其应用

c编译器对结构空间缺省的分配    在c语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间;各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。在缺省情况下,c编译器为每一... [阅读全文]

c语言编译器:中间语言(IL)和即时编译器(JIT)

对于.NET的初学者来,一个很令人困惑的问题是:从高级语言(如C#和VisualBasic)到托管语言再到机器语言究竟是一个怎样的过程。掌握这个过程也是理解.NET语言互操作性(也就是语言独立性的核心原则)的关键,并且也关系到二进制兼容性的问题。尽管本书一直尝试不探讨这些的底层细节实现而主要集中讲述如何最好地应用.NET,然而对CLR产生代码过程有一个概览对理解她的内部机理还是大有益处的。不仅如此... [阅读全文]

php编译器:Phalanger-PHP的.NET编译器

除了IronPython,微软正试着让.NET平台支持更多你我熟知的动态语言,例如Perl、PHP、Ruby。根据IronPython的创造者、也是微软CLR开发部门主管Jim Hugunin表示,微软正试着以不同的方式协助动态语言进驻.NET平台,不论是加强.NET底层的支持,或者是以patterns & practices协助开发人员以动态语言构建程序。听说过Phalanger的人可能... [阅读全文]
1 共1条 分1页