编译优化

Posted by 夏泽民

逃逸分析 内联 死码消除 Go 编译器在2007年左右开始作为 Plan9 编译器工具链的一个分支。当时的编译器与 Aho 和 Ullman 的 Dragon Book 非常相似。



调试golang编译器,增加自定义声明

Posted by 夏泽民

GO从源代码编译 github.com/golang/go/src/all.bash



语法树与抽象语法树(parse tree & abstract syntax tree)

Posted by 夏泽民

是在parsing阶段,derivation的图像化表示,parser tree focus on grammar的actual implemment,包括像white spaces, braces, keywords, parenthesis 等一些细节。 “parse tree” 也叫 “concrete syntax tree” ,它represents the syntactic structure of a string(or token stream)according to some context-free grammar. The parse tree records a sequence of rules the parser applies to recognize the input. parse tree记录解析器应用于识别输入的一系列规则 The root of the parse tree is labeled with the grammar start symbol. parse tree的根是grammar的start non-terminal symbol。 Each interior node represents a non-terminal, that is it represents a grammar rule application, like expr, term, or factor in our case. 每个内部节点代表一个非终端,即它代表语法规则应用程序,如我们的情况下的expr,term或factor。 Each leaf node represents a token. 每个叶节点代表一个token。

AST is a tree representation of the abstract syntactic structure of source codewritten in a programming language.它 focus on source code的 各个 components 之间的abstract relationships。 it doesn’t need to contain all the syntactical elements he AST captures the essence of the input while being smaller. AST在较小的情况下捕获了输入的本质



静态单赋值(SSA,Static Single-Assignment)

Posted by 夏泽民

精确的数据流分析是让编译优化能高效进行的基础。 SSA就是一种高效的数据流分析技术,目前几乎所有的现代编译器,如GCC、Open64、LLVM都有将SSA技术的支持, 不仅仅是编译器,Jikes RVM, HotSpot JVM, .Net的Mono,Python的Pypy, Andoroid的Dalvik,这些虚拟机/解释器中的Just-in-Time Compiler也有了SSA的支持。 Firefox的下一代JavaScript引擎IonMonkey中,也将为其JIT引入SSA。 是一种中间表示形式。 之所以称之为单赋值,是因为每个名字在SSA中仅被赋值一次.将每个赋值语句中的变量赋予一个唯一的名称后,一般新名称采用原变量+版本号(Version)的形式。



502 504

Posted by 夏泽民

500 Internal Server Error 内部服务错误:顾名思义500错误一般是服务器遇到意外情况,而无法完成请求。解决的方法:查看nginx、php的错误日志文件,从而看出端倪;如果是脚本的问题,则需要修复脚本错误,优化代码。 502 Bad Gateway错误、504 Bad Gateway timeout 网关超时。解决方法:使用nginx代理,而后端服务器发生故障;或者php-cgi进程数不够用;php执行时间长,或者是php-cgi进程死掉;已经fastCGI使用情况等都会导致502、504错误。 501,服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。 503,服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。(服务不可用) 502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 504 Gateway Time-out:作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。



Search

Popular posts

Anything in here will be replaced on browsers that support the canvas element

Recent posts

This blog is maintained by 夏泽民

Get in touch with me at 465474307@qq.com

Subscribe to our mailing list

* indicates required