- 博客(10)
- 收藏
- 关注
原创 源码解读---mem2reg源码(3)
这篇文章接着之前写的。。源码解读—mem2reg源码(1)源码解读—mem2reg源码(2)本文主要介绍在插入phi节点后的重命名。重命名中第一个核心函数是RenamePass这个函数,看注释:/// Recursively traverse the CFG of the function, renaming loads and/// stores to the allocas which we are promoting.////// IncomingVals indicates wha
2021-08-06 08:57:33 843
原创 源码解读---mem2reg源码(2)
本节内容接上。。源码解读—mem2reg源码(1)上文说到,我们已经计算出了每个alloca变量(这里指的是,LLVM给每个函数中的局部变量创建了 一个alloca指令,模拟其分配在栈上的行为。),接下来我们就要计算我们的PHI节点在哪插入的问题了。在回答这个问题之前,首先推荐大家去看下 《Engineering a Compiler》对应的章节。其实,我们可以发现,PHI节点的插入不是随意的,随意的插入可能会导致程序语义的错误以及冗余的PHI节点带来的是指令冗余开销。所以,正确的插入方式是插入到某些B
2021-08-03 10:56:32 922 1
原创 源码解读---mem2reg源码(1)
本文只是个随笔,记录一下看源码的思维过程,免得忘了。可能有很多废话,hhhh相信对于熟悉LLVM的SSA以及了解支配概念的读者来说,应该都不陌生了,这个pass无非就是将LLVM最“原汁原味”的IR转化为SSA形式的IR。首先从形式上,就简明了不少,另外,SSA形式还有特殊的用处。如果你还不太了解SSA的话,不妨上网搜搜,先大概了解下SSA的好处。这篇文章不打算谈SSA的好处,也不会从头开始谈SSA在LLVM是如何建立的。网上有很多关于LLVM中mem2reg是如何建立SSA的。包括知乎的R大,还有“
2021-08-01 15:02:59 3876 1
原创 SVF系列---概述
1、引子程序分析是我们开发出高健壮、强安全软件必不可少的步骤。现在的大多数公司,都会在项目或版本发布时,用开源或自研的静态分析软件去扫描一次程序,用以发现平时没发现的bug。据统计,开发人员70%的时间都会用在debug上,所以有一款自动检查bug的工具就可以让程序员把时间花在更有意义的事情上。这个系列是为了帮助初学者入门的,程序分析是比较抽象的,尤其是各种算法,如果只是学习课本知识的话,很难对算法本身有更深的理解。现在市面上有很多关于Java的静态分析,比如soot,但是针对C的还是比较少,即使有,
2021-07-31 14:38:19 5756 2
原创 论文解读系列--《Flow-Sensitive Pointer Analysis for Millions of Lines of Code》
1、引言前面我们介绍过,指针分析是提高现有程序分析技术精度的一个重要技术。在这篇文章之前,流敏感指针分析还没有收到非常多的关注。然而,流敏感的指针分析在分析多线程时时非常有用的。而且流敏感技术也能非常大的提高程序分析的精度。有些同学可能还不清楚流敏感是什么意思。这里简单介绍下。补充知识:流敏感分析流敏感分析是考虑了每个程序点的独有状态值,即在某条语句之前和之后,可能状态值是不一样的。比如:// int *p, *q, a, b, c1: p = &a;2: q = &b;
2021-07-29 14:22:09 2498 3
原创 新型Dropout
Multi-Sample-Dropout自从BN出来后,感觉BN的热度超过了此前的dropout。然而,最近一篇最新论文指出,其实dropout并没有想象的那么差,而是可以通过优化,来提升网络模型性能的。详细点击原文解读具体看下面的分析:首先要知道dropout的工作原理,现在的dropout不如从前了,从前是在卷积层后也会使用(N年前),但现在一般卷积层后使用的是BN层来归一化输出,那么d...
2019-06-07 19:54:23 974
原创 MobileNetv2
MobileNetV2从MobileNetv1的结构来看,没有使用现在比较火residual连接,而是采取了最常见的直筒型网路,那么本文就是从激活函数ReLU层面分析了shorcut的必要性。我们知道,当图像在网络中流动的时候,一般来说,我们的激活函数是ReLU,从ReLU的性质来看,如果输出是小于0的,那么就会丧失这个部分的信息,因为ReLU在负半轴为0,所以如果我们有一种结构,能够把某些会...
2019-06-07 12:12:43 1254
原创 机器学习--DBSCAN(密度聚类算法)
算法描述为西瓜书上所述: 通俗来讲: 1. 遍历每个点,然后计算剩余的点到该点的距离,如果小与sigma的点的个数大于MinPts, 则加到对象集omega中 2.循环体中,随机选取一个点,然后生成聚类簇C_k import numpy as npfrom sklearn import preprocessingimport randomimport ma
2018-03-13 14:22:25 854
原创 python3 爬取学校口语坊信息
由于刚学爬虫,本文则是记录学爬虫的经历。 本文为模拟登录系统,然后爬取想要的资料,其中有验证码,可以直接下载。而后的信息则是js动态加载,无法直接用pyquery或者xpath直接获取,对于js动态加载,使用“抓包“步骤: 1、获取session会话。 2、获取表单,表单的获取需要试错,即随便输入账号、密码、(验证码)然后登录,再取NetWork里面找有Form data(表单)的文件,拿到U
2017-12-14 19:05:27 733 2
翻译 Opencv官网手册学习---1
Mat is basically a class with two data parts: the matrix header (containing information such as the size of the matrix, the method used for storing, at which address is the matrix stored, and so on) an
2017-08-20 15:13:29 669
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人