编译技术
偏test
这个作者很懒,什么都没留下…
展开
-
搭建msys2基础开发平台
1.环境搭建最近msys2的软件源进行了更新,一些低版本的软件都没有了,gcc只有9.3以上版本,gdb只有9.1以上版本,没有低版本,那以后只能跟着软件源的最新版本走了,如果碰到软件依赖版本不兼容将会是一个非常棘手的问题,而且gcc和gdb正在狂热的将c代码都替换为c++,但是我本人不太喜欢c++,所以尝试搭建一个不依赖软件源的平台。清华和腾讯开源镜像都已经随着官方的源更新了,幸好华为和浙大的镜像还没更新,但是迟早也会更新的,所以在他们更新之前赶紧把这个事情做了。基础安装包,我用的是msys2-ba原创 2020-10-24 21:58:09 · 3029 阅读 · 3 评论 -
前端调试入门的一些记录
关于Http请求header之Referer讲解https://www.jianshu.com/p/1a6abab212ed谷歌浏览器开发调试工具中Sources面板 js调试等 完全介绍https://blog.csdn.net/c15158032319/article/details/79716877原创 2020-05-10 18:01:08 · 347 阅读 · 0 评论 -
windows下编译gdb源码
在学习编译gdb的过程中,一定要和本文出现的各软件版本保持一致,否则很容易因为版本的原因出现一些奇怪的问题。1.搭建msys2环境在win下编译gdb首先要搭建msys2的开发环境,先从官网下载msys2-i686-20190524.exehttps://www.msys2.org/官网以后会更新版本,为了和本文写的版本保持一致,最好在清华镜像站找到msys2-i686-20190524....原创 2020-04-11 22:29:13 · 2493 阅读 · 0 评论 -
ucc编译器分析与总结(1) 语法分析
编译器、操作系统、数据库是计算机领域中的三大基础软件,基本上所有应用软件都是建立在这三个基础软件之上,这些领域经过前辈们不断打磨现在已经变得非常成熟,很多涉及到的代码技术都是精华中的精华,所以把上面3个软件搞清楚对代码水平的提高会有很多帮助,而且能够对现代计算机的软件架构有更清晰的了解。我现在要研究一个逻辑推理系统,这个推理系统以C语言为基础,这里必然涉及到C语言的解析问题,所以C语言编译器是必...原创 2019-07-06 16:08:37 · 2970 阅读 · 0 评论 -
ucc编译器分析与总结(2) 类型系统和符号管理
在语法分析的过程中,ucc按照C语言的文法构建了一颗语法树,接下来要根据语法树来进行语义检查,判断代码是否存在编译错误,譬如表达式中的变量有没有定义,定义数组的长度是否为常量,表达式中的类型是否合法等等。语义检查分为语句表达式检查和声明检查两部分,这次主要来分析声明的语义检查,在这个过程中为声明的变量构建了一个类型系统,同时对出现标识符进行管理。1 类型系统1.1 基本类型首先定义一些最基...原创 2019-07-20 08:42:22 · 638 阅读 · 0 评论 -
ucc编译器分析与总结(3) 声明检查
有了类型系统和符号管理的基础知识之后,接下来就可以分析声明检查部分的代码了。源代码经过预编译后生成.i文件,这时候代码主要分为函数语句和声明语句两部分,其实函数只不过是一种特殊的声明语句,比声明语句多了{}里面的内容。函数语句和非函数语句是分开检查的:if (p->kind == NK_Function){ CheckFunction((AstFunction)p);}el...原创 2019-07-20 16:33:40 · 653 阅读 · 0 评论 -
ucc编译器分析与总结(4)表达式和语句检查
1.基本框架之前在语法分析时建立了抽象语法树,在声明时为每个符号建立了类型系统,接下来就要遍历表达式和语句的每个结点,将这些声明的类型绑定在对应的结点,并相应的进行语义规范的检查。每个复合语句的检查都以一个大括号为单位,在这里面又分为局部变量声明的检查和执行语句的检查AstStatement CheckCompoundStatement(AstStatement stmt){ As...原创 2019-08-04 10:00:44 · 463 阅读 · 0 评论 -
词法分析器flex和语法分析器lemon的初步使用
自己手写词法分析器和语法分析器是很麻烦的一件事,而且这里面的逻辑非常复杂很容易出错。flex和lemon就是用来帮助生成词法分析器和语法分析器的,只需要写少量规则代码,就可以生成解析的c代码。现在先不关注实现原理,主要看一下这东西是怎么用的,等以后用熟了要实现深度定制的时候再来看实现源码。1.词法分析器首先得安装一个flex,至于怎么安装就不讲了。词法分析器的功能就是把一串字符串按照给定的规则...原创 2019-08-12 12:03:15 · 2248 阅读 · 0 评论 -
ucc编译器分析与总结(5) 中间代码生成
1.基本框架经过语义检查后,现在已经有了包含符号和类型的完整语法树,现在要做的事情就是继续沿着语法树走一遍,对每条语句和表达式生成相应的中间代码。中间代码以三地址码的形式表示,由两个源操作数,一个目的操作数和一个运算符组成。然后uccc在生成中间代码时以基本块为单位,每个基本块包含若干条中间代码,基本块的开头都会有类似BB1:这样的标签。从静态上来看,所有基本块按顺序通过双向链表连接在一起,...原创 2019-08-25 16:48:16 · 629 阅读 · 0 评论