ZCMUCZX的博客

学习的脚步

基于LLVM-分析Pass的制作

分析Pass在实际不修改IR的情况下提供关于IR的更高级的信息,而这些信息可以被其他的分析Pass使用来计算其结果,只要一个分析的Pass计算得出了结果,这个计算结果可以被不同的Pass拿来多次使用,直到一个Pass改变了这个IR 我们先编写下我们需要去进行测试的代码 int func...

2018-06-29 19:36:28

阅读数:80

评论数:0

基于LLVM-自定义Pass

首先我们要先去编写一个 FuncBlockCount.c文件 #include "llvm/IR/Function.h" #include "llvm/Pass....

2018-06-29 14:46:25

阅读数:184

评论数:0

基于LLVM的Pass优化

当我们如果完成了对源码的转换,得到了LLVM的IR表示形式,它是作为一种向汇编代码转换的一个公共平台,依赖不同的后端会得到不同的汇编码,在转换为汇编码之前,如果我们对IR进行优化的话就可以得到执行效率更高的代码 在LLVM的架构当中,Pass的作用就是优化LLVM IR,Pass作用于L...

2018-06-29 12:12:31

阅读数:133

评论数:0

基于LLVM-增加JIT支持

JIT其实就是Just-In-Time也就是即时编译,在程序运行的时候会将代码翻译成机器码并且去执行,与之相对的就是AOT(Ahead Of Time),它在程序运行之前就会将代码翻译成机器码,JIT结合了AOT和解释执行的优势,它能够产生高效的机器码,并且具备足够的灵活性 首先我们定义...

2018-06-28 10:24:39

阅读数:217

评论数:0

基于LLVM-自定义二元运算符的重载

下面就简单的介绍下,我们去构造 | (逻辑或运算符)作为样例,TOY语言当中的 | 运算符是这样使用的,其中前面的binary代表的是标识符,代表的是二元运算符的表示,然后后面就是| 运算符,再就是(LHS RHS) 根据这两个参数进行选择 def binary | 5 (LHS RHS...

2018-06-27 22:40:39

阅读数:42

评论数:0

命令模式浅析

简单的举个例子就比如说电灯,开关和风扇,我们可以通过开关去控制风扇和电灯的开和关。其中开关是发送者,电线是命令对象,而风扇和电灯就是接受者。电线是可以换的,所以就是说开关可以做两个不同的操作 命令模式:其实就是把请求封装成一个对象,从而可以使用不同的请求对客户进行参数化,对请求排队或者记...

2018-06-27 10:37:08

阅读数:50

评论数:0

基于LLVM-for循环结构的支持

循环结构通常需要先初始化一个归纳变量,然后之后就要对这个变量做更新(增加或减少其数值),以及一个表示循环结束的终止条件,我们的for循环可以定义如下所示,其中i=1表示的是条件、i def printstar(n x) for i = 1, i < ...

2018-06-25 13:23:15

阅读数:60

评论数:0

离散型随机变量分布习题

下面主要是做个记录,也分享下解题思路 要想用二项分布,首先要判断这个实验是不是n重伯努利试验,伯努利试验表示的是一个试验只有两个结果,将伯努利试验重复、独立的进行n次,叫做n重伯努利试验 ...

2018-06-24 15:35:38

阅读数:494

评论数:0

基于LLVM-处理if/then/else结构

感觉自己这个辣鸡,深入怕是难度太大,还是先简单的介绍下上层的使用吧,这里的讲解还是基于之前所讲的来的,我们主要进行某些方法的改动以及另一个AST类的添加和解析 首先我们如果要去添加对if、else、then的判断,那么我们的token的解析肯定是要有的,所以我们需要在枚举类型当中去添加它...

2018-06-24 11:50:36

阅读数:310

评论数:0

二项概率公式习题

关于题目的记录如下所示

2018-06-23 16:09:58

阅读数:110

评论数:0

贝叶斯公式习题

简单记录下

2018-06-23 13:23:12

阅读数:376

评论数:0

全概率公式习题

简单的记录下关于全概率公式的习题 我们可以先看下抓阄不分先后的一个例子 设袋中装有10个阄,其中8个是白阄,2个是有物之阄,甲、乙二人依次抓取一个,求没人抓得有物之阄的概率 设A,B分别为甲、乙抓得有物之阄的事件,显然P(A)=2/10,下面求P(B) 因为B只有当A发生或...

2018-06-23 10:37:07

阅读数:925

评论数:0

条件概率习题

关于条件概率的习题

2018-06-23 09:02:21

阅读数:439

评论数:0

古典概率习题

对于至少有一个人中奖,我们都要将其转换为没有人中奖,然后再拿1减去这个概率

2018-06-22 22:13:06

阅读数:220

评论数:0

操作系统习题

主要做一个整理 1.1、在多道程序和分时环境中,多个用户同时共享一个系统,这种情况导致多种安全问题。a. 列出此类的问题 b.在一个分时机器中,能否确保像在特殊用途系统中一样确认同样的安全程序,并解释之 先简单的介绍下分时系统,分时是指多个用户分享使用同一台计算机。多个程序分时共...

2018-06-21 11:29:18

阅读数:245

评论数:0

网易2018实习生招聘笔试题-ios开发实习生(13道)

1、若对如下无向图进行遍历,则下列序列中,不是广度优先遍历序列的是() 广度优先搜索其实就是从图中某顶点v出发,在访问了v之后依次访问v的各个未曾访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使得“先被访问的顶点的邻接点先于后被访问的顶点的邻接点被访问,直至图中...

2018-06-21 00:19:35

阅读数:376

评论数:0

网易2018实习生招聘笔试题-ios开发实习生(10道)

不得不说自己的算法实力可能是真的没有锻炼太多,还有数据结构,操作系统这部分知识刚刚结束不久也不记得了… 下面就简单的介绍下这些题目 1、 MyClass *ref1 = [MyClass new]; __weak MyClass *ref2 = ref1; MyClass *ref3...

2018-06-20 20:26:20

阅读数:317

评论数:0

Linux系统发展历程

基本概念 Linux系统是UNIX的一种版本,它开始于1991年,当时是一名学生编写的,当时的Linux内核很小但是完整可以运行在80386处理器上 Linux的历史是来自世界各地的许多使用者合作开发给搭建起来的,刚开始内核只能部分执行UNIX系统服务程序的一个小子集,但是现在Linux...

2018-06-20 13:09:48

阅读数:306

评论数:0

为AST类定义IR代码的生成

上次说到的是现在所有的必要的信息都是存储在AST这一个数据结构当中,下一个阶段就是从AST中生成的LLVM IR在代码的生成的过程当中,我们可以去使用LLVM的API,通过内建的API可以生成预定义格式的LLVM IR 我们需要在BaseAST类和其的子类当中去添加Codegen函数,因...

2018-06-19 23:28:13

阅读数:200

评论数:0

语法分析器的基本要素

语法分析是编译的第二个阶段,语法分析的基本任务就是根据指定的文法识别输入的句子当中的各类短语并构造它的分析树,其实也就是识别由词法分析给出的单词符号串是否是给定文法的正确句子(程序) 语法分析器根据语言的语法规则来解析代码,解析阶段决定了输入的代码是否能够根据既定的语法组成token流 ...

2018-06-19 17:59:20

阅读数:203

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭