上一页 1 2 3 4 5 6 ··· 10 下一页
摘要: 前 边介绍了几节Clang AST,包括AST的读取,Rewriter,AST的插入等,这里想从AST到IR的转换,介绍一点Clang源码的内容。 前边已经提到了想打印AST树内容的话,需要使用clang -fsyntax-only -Xclang -ast-dump 命令来进行。对于llvm各种文 阅读全文
posted @ 2021-03-14 14:37 转换无极限 阅读(2766) 评论(2) 推荐(2) 编辑
摘要: 在这一节中,对loop-convert的例子进行了修改,以展示对ForStmt的处理。 这里主要是通过AST树结构的判断,增加对类似for(int i=0;i<5;i++)这种循环的循环界判断,在实际程序优化中,意义不是特别大,但是作为示例和练习还是不错的。 主要使用的test case是: 1 i 阅读全文
posted @ 2021-03-12 17:55 转换无极限 阅读(676) 评论(0) 推荐(0) 编辑
摘要: AST(Abstracted Syntax Tree)即抽象语法树,对于任何一门编程语言来说都是非常重要的工具,对于一般的compiler来说,都是将源码转换为AST,之后经由AST转换到特定的IR,在IR上进行一些与硬件特性无关的优化,之后再将优化后的IR转换为对应的汇编。因此AST直观的反应了使 阅读全文
posted @ 2021-03-12 16:56 转换无极限 阅读(7548) 评论(0) 推荐(2) 编辑
摘要: 一个高级的源源变换,主要是为了展示如何进行AST Declaration的遍历和代码的规整化处理,可以将其作为一个代码自动规整化工具进行使用 实现代码如下: 1 // 2 // Simple Rewrtie Sample 3 // 4 // 5 // jourluohua (jourluohua@g 阅读全文
posted @ 2021-03-11 20:30 转换无极限 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 前边的一个随笔里边就写了使用Clang来进行源源变化的一个case,其实还有很多有趣的可以进行的操作。比如,我们可以用添加宏的方式,实现对函数体的修改。 主要代码如下: // // Tooling sample. Demonstrates: // // * How to write a simple 阅读全文
posted @ 2021-03-11 12:32 转换无极限 阅读(614) 评论(0) 推荐(0) 编辑
摘要: 这篇博客是之前就写过的,因为最近在制作一个新的系列教程,又重新下载了最新的clang/llvm,因此准备更新一下,因此本篇中仅描述新(13.0)旧(4.0)的不同,原文地址:https://www.cnblogs.com/jourluohua/p/9526663.html 基本可以这么说,实现思路没 阅读全文
posted @ 2021-03-10 21:18 转换无极限 阅读(997) 评论(0) 推荐(0) 编辑
摘要: 什么是递归下降分析法 递归下降(Recursive Descent)分析法是确定的自上而下分析法,这种分析法要求文法是LL(1)文法。 为每个非终结符编制一个递归下降分析procedure,每个函数名是相应的非终结符,函数体则是根据规则右部符号串的结构和顺序编写。 procedure相互递归调用。 阅读全文
posted @ 2021-03-10 15:52 转换无极限 阅读(924) 评论(0) 推荐(0) 编辑
摘要: LLVM的最新版本已经更新到了13.0.0版本,而我在之前的博客中给出的还是4.0版本的安装教程(https://www.cnblogs.com/jourluohua/p/9554995.html),两边的代码结构没有大的变化,但是API和调用接口等已经变化非常迅速。现在就最新的llvm源码安装进行 阅读全文
posted @ 2021-03-10 01:02 转换无极限 阅读(3307) 评论(0) 推荐(0) 编辑
摘要: 前几天拿到了一份垃圾页游的单机版(藏宝湾一类的论坛上资源非常多,淘宝上几块钱一份也可以买到很多,其实就是网游的资源泄露),其实搭建过程已经齐全,不过中间存在一些问题(不清楚是卖家故意所为,还是其他什么问题),我会结合已有的bat文件,来说下bat的一些原理和知识。 给我的是百度网盘上的两个压缩包(这 阅读全文
posted @ 2020-06-15 13:25 转换无极限 阅读(477) 评论(0) 推荐(0) 编辑
摘要: LLVM中制导(pragma信息)的添加来说,对于一些专用编译器非常重要。整个制导信息的添加,大概可以分为以下几步: 1、定义Token 2、添加对应的句柄(handler) 3、添加处理函数声明 4、添加对应handler的声明 5、实现对应的handler 6、实现处理函数 工作需要添加一些制导 阅读全文
posted @ 2019-12-31 15:26 转换无极限 阅读(962) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 10 下一页