Compiler
文章平均质量分 72
rednaxelafx
这个作者很懒,什么都没留下…
展开
-
Ruby 1.8.x中复合赋值运算符的实现
嗯,在RPGCHINA读帖的时候看到一个有趣的主题,说Ruby的a = a + 1与a += 1的执行效率不一样。很明显这个认识有偏差,事实上Ruby的复合赋值运算符与其展开的简单赋值形式在经过解释器前端的解析后就一模一样了。连对应的抽象语法树都是一样的,执行效率能差多少呢?更糟糕的是回帖中有错误的解释,将这个“差异”对应到汇编上:[quote]引用第8楼nightaway于2008-...2008-06-12 06:53:55 · 106 阅读 · 0 评论 -
简单DAG生成算法的一个性质
“简单”嘛说明肯定有更麻烦、效果可能更好的办法。这里提到的算法就是这样。龙书第二版363页习题6.1.2有点意思。题目如下:[quote="Compilers - Principles, Techniques, & Tools, Second Edition"][b]Exercise 6.1.2:[/b] Construct the DAG and identify the value...2009-01-29 06:19:54 · 683 阅读 · 0 评论 -
降序循环总是比升序循环快?
刚才看到有人在[url=http://www.iteye.com/topic/544777?page=2#1287985]论坛Java版的一帖[/url]里提到:[quote="wujiazhao88"]如果有两层以上的循环,要将多次计算的循环放在里面,少的放在外面;另外for(int i=n;i>0;i--)的效率比for(int i=0;i= 0; i--) { // ......2009-12-10 21:13:36 · 194 阅读 · 0 评论 -
几个简答题
[quote="某题目"][img]http://dl.iteye.com/upload/attachment/386210/b6bac6dc-8cf5-36e4-90ed-6d7bd1066cac.jpg[/img][/quote][quote="龙书"]In addition to a compiler, several other programs may be required t...2011-01-10 16:08:06 · 87 阅读 · 0 评论 -
JIT编译找不到类?
今天开始Sun的老blog真的搬迁了,从blogs.sun.com迁移到blogs.oracle.com。结果这些迁移了的blog里的老帖像洪水般一下就把我的reader冲爆了。不过也好,有些老帖过了一段时间重新读也会有新体会。例如这篇,[url=https://blogs.oracle.com/jrockit/entry/why_wont_jrockit_find_my_class]Wh...2011-05-09 22:28:20 · 211 阅读 · 0 评论 -
ANTLR里迭代子规则的一个注意点
这几天在休假在家,有空的时候在用[url=http://antlr.org/]ANTLR[/url] 3.2来写[url=http://digitalmars.com/d/2.0/index.html]D 2.0[/url]的语法。每次用ANTLR写比较大的语言的语法时都会碰到不少问题,这次也不例外;其中有一处虽然很快就解决了,但还是值得一记。话说用ANTLR写语法最经常碰到的问题就是很多...2010-09-27 15:31:53 · 193 阅读 · 0 评论 -
javac在编译创建内部类对象时生成的奇怪的getClass()调用是什么?
有人问下面这段代码里,main()方法里的outer.new Inner()部分为什么会生成了一个对outer.getClass()的调用:[code="java"]public class Outer { public class Inner { } public static void main(String[] args) { Outer outer = new O...2011-06-14 22:17:11 · 172 阅读 · 0 评论 -
别测空循环
今天有朋友提到一个叫 [url=http://code.google.com/p/reflectasm/]ReflectASM[/url]的库,为Java环境提供高性能的反射操作支持。它的实现方式是动态代码生成。以前[url=http://rednaxelafx.iteye.com/blog/548536]我的一篇日志[/url]里写过,Oracle/Sun JDK6的反射方法调用的实现当中重...2011-06-23 21:56:42 · 134 阅读 · 0 评论 -
豆列:从表到里学习JVM实现
刚写了个学习JVM用的豆列跟大家分享。豆列地址:[url]http://book.douban.com/doulist/2545443/[/url]下面把豆列的介绍贴过来。具体书单请到上面的豆列地址那边去看。在社会化分工、软件行业细分专业化的趋势下,会真的参与到底层系统实现的人肯定是越来越少(比例上说)。真的会参与到JVM实现的人肯定是少数。但如果您对JVM是如何实现的...2013-06-13 14:13:50 · 257 阅读 · 0 评论 -
一个简单的语言的语法(三):做些小调整,并将生成目标换到CSharp2
系列链接:[url=http://rednaxelafx.iteye.com/blog/313143]一个简单的语言的语法(一):用ANTLR描述语法[/url][url=http://rednaxelafx.iteye.com/blog/314507]一个简单的语言的语法(二):ANTLR的重写规则[/url]一个简单的语言的语法(三):做些小调整,并将生成目标换到CSharp2...2009-01-13 17:44:57 · 187 阅读 · 0 评论 -
一个简单的语言的语法(二):ANTLR的重写规则
系列链接:[url=http://rednaxelafx.iteye.com/blog/313143]一个简单的语言的语法(一):用ANTLR描述语法[/url]一个简单的语言的语法(二):ANTLR的重写规则[url=http://rednaxelafx.iteye.com/blog/315807]一个简单的语言的语法(三):做些小调整,并将生成目标换到CSharp2[/url]...2009-01-10 23:30:06 · 211 阅读 · 0 评论 -
bison的运算符优先级一例
看到[url=http://phyeas.iteye.com/]phyeas[/url]同学在[url=http://phyeas.iteye.com/blog/471861]试写JavaScript语法[/url],顺便参一腿 =v=本文里的代码放在附件里了,有需要的拿。关于语法中左递归/右递归与规则的左结合/右结合的关系,我觉得就照着简单的表达式语法把推导过程画出来,找找感觉就能行...原创 2009-09-19 17:08:14 · 1671 阅读 · 0 评论 -
Common Compiler Infrastructure(CCI)开源了!
在我以前的一篇blog,[url=http://rednaxelafx.iteye.com/blog/246814]LINQ与DLR的Expression tree(3):LINQ与DLR及另外两个库的AST对比[/url]里,我提到了Common Compiler Infrastructure(CCI)源自Project 7,用于为.NET平台提供一套实现编程语言用的公共基础设施。这套基础设施不...2009-04-16 15:01:48 · 230 阅读 · 0 评论 -
跟语法搏斗……
以前一直听别人说写语法是件极其烧脑细胞的事,但是以前没自己写过没什么实感。这回可是好好体会了一次。因为自顶而下的递归下降parser比较符合人的思维顺序,而相对来说LR系的shift-reduce冲突可能很难找到根源,所以这次在写语法的时候用[url=http://www.antlr.org/]ANTLR[/url]来帮忙了。具体来说是靠[url=http://www.antlr.org/...2008-03-26 22:03:15 · 118 阅读 · 0 评论 -
今天买到本好书
今天上午给宿舍做完清洁之后跟大彪一起进了市区,顺便一起去军俱逛了一下,看看有没有什么值得买的书。跟大彪介绍我都买过些什么书的时候无意看到一本封面上的龙很3D的书。然后我还纳闷怎么这龙变3D了,再一看旁边就是熟悉的龙书第一版影印版,一对比才发现这3D龙居然是去年才出版的[url=http://dragonbook.stanford.edu/]龙书第二版[/url][color=red](更正:查...2008-03-30 23:29:31 · 102 阅读 · 0 评论 -
[无内容] lexeme与token的对应关系……
在ANTLR里一个lexeme真的只能对应一种token?我是没把说明看仔细还是怎样,但是这等号字符(“=”)该如何对应到多个token上呢?我只是想让它既对应“EQ”又对应“AssignementOperator”而已……yacc里可以的嘛[url=http://www.cs.princeton.edu/software/lcc]lcc[/url]的lexer里,lexer.c的那个st...2008-03-31 20:44:06 · 327 阅读 · 0 评论 -
随便玩了下Intellipad,贴张图
拿Oslo来玩了会儿。主要还是玩Intellipad和MGrammar。编辑器的使用体验还挺不错的。把之前一个学弟问我帮忙写的parser要处理的语言拿来用了下:[code]module QueryGrammar { language QueryLanguage { syntax Main = q:Query => q; s...原创 2008-11-14 16:16:44 · 78 阅读 · 0 评论 -
MiniJava的语法
[url=http://www.cambridge.org/us/features/052182060X/mjreference/mjreference.html]MiniJava语言参考[/url]。引用自[i]Modern Compiler Implementation in Java, Second Edition[/i],Appendix A, Page 484-486。下面是Mi...原创 2008-04-23 16:28:31 · 506 阅读 · 0 评论 -
一个简单的语言的语法(一):用ANTLR描述语法
系列链接:一个简单的语言的语法(一):用ANTLR描述语法[url=http://rednaxelafx.iteye.com/blog/314507]一个简单的语言的语法(二):ANTLR的重写规则[/url][url=http://rednaxelafx.iteye.com/blog/315807]一个简单的语言的语法(三):做些小调整,并将生成目标换到CSharp2[/url]...2009-01-09 01:33:09 · 346 阅读 · 0 评论 -
对C语义的for循环的基本代码生成模式
之前有同学在做龙书(第二版)题目,做到8.4的练习,跟我对答案,然后聊起C语言的for循环的代码生成有几种常见的模式。顺道跟大家分享讨论一下。C语言的for循环大家应该都很熟悉了,C系语言大都有一样或几乎一样的语法结构:一个循环初始化,一个循环条件,一个循环再初始化,然后一个循环体。通常循环初始化在最前面,再初始化的逻辑直接黏在循环体后面,能有变化的就是循环条件的代码生成到什么位置。...原创 2013-10-19 23:12:03 · 226 阅读 · 0 评论