自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Vincent的博客

编译器研发工程师、编译优化

  • 博客(46)
  • 资源 (3)
  • 收藏
  • 关注

原创 LLVM后端移植--Tablegen指令描述Instruction类解读

1. string Namespace = "";//指明指令集系统名称使用示例:let Namespace = "Mips";一般在Class Formats中直接指出,例如:2. dag OutOperandList;//包含MI def操作数列表的dag。使用示例: let OutOperandList = outs;一般在Class Formats中直接指出,例如:outs来自于MipsInst:赋值也有多种类型 ,主要是...

2021-01-29 16:06:18 2083 2

原创 ThinLTO 学习笔记

跨模块优化(CMO)是提高运行时性能的有效方法,它扩展了跨源模块边界的优化范围。CMO方法有链接时间优化(LTO)和轻量级过程间优化(LIPO)。ThinLTO的目标是与常规的非lto构建一样具有可伸缩性,在没有大内存配置的大型应用程序和机器上支持CMO,同时与分布式和增量构建系统很好地集成。这是通过快速的基于摘要的全程序分析(WPA)来实现的,这是唯一的串行步骤,不需要读取或写入程序的中间表示(IR)。2.ThinLTO Design1. Compile : 生成与LTO模式相同的IR

2020-11-19 11:28:56 1212

原创 LLVM后端移植笔记1 c910 riscv示例

目录一、后端的六大部分二、后端的七大环节三、建立新后端的七大步骤四、后端介绍1.后端目录2.LLVM后端简介3.后端目录代码结构4.目标指令集的描述实现5.指令选择描述5.riscv后端指令描述6.玄铁C910指令扩展示例7.玄铁C910在编译器中注册示例五. auipc指令设计实现1. RISCVInstrInfo.td2. RISCVInstrFormats.td3.RISCVExpandPseudoInsts.cpp4. AsmPar

2020-11-19 11:23:47 2449 1

原创 GCC后端移植适配

目录Introduction to Machine Descriptions1.Influences on Machine Descriptions2.Organization of GCC MD3. Machine Descriptions的基本结构(1)指定目标指令语义​(2)General Move Instruction(3)Relationship Between .md, .c, and.h Files(4)GCC中的翻译顺序(5)Retargetabi.

2020-11-19 11:20:48 1069 1

原创 LLVM阅读笔记及优缺点

目录LLVM阅读笔记1.Tools and Design1.1 Using standalone tools1.2 Delving into the LLVM internal design2.The Frontend3.The LLVM Intermediate Representation3.1 Introducing the LLVM IR3.2 Introducing the LLVM IR in-memory model3.3 Optimizing at the

2020-11-19 11:16:55 1402 1

原创 编译原理之基本块和流图

基本块和流图•采用图的方式表示中间代码,有助于生成更好的代码ä构造方法1.把中间代码划分成基本块(basic block,BB),每个基本块满足如下条件:①控制流只能从基本块的第一个指令进入②除了基本块的最后一条指令,控制流在离开基本块前不会停机或者跳转2.基本块形成了流图(flow graph)的结点,流图的边指明了哪些基本块可能紧随一个基本块之后执行ä中断等程序行为...

2019-11-26 22:00:46 18850 2

原创 如何使用GCC将多个.c文件编译成一个.s文件

如果我们有多个源文件,想要把他们编译成一个.s文件,有正向反向两种方法,1.反向很简单,就正常编译成可执行,然后使用objdump反汇编即可:objdump -d mcf_s &> mcf_s.s2.正向直接编译使用如下的命令是不行的:需要先写一个单独的.c文件,然后将项目需要的所有的.c文件包含进去,如下图:然后使用如下的命令编译这个新...

2019-11-25 16:14:08 2558

原创 GCC抽象语法树(AST)可视化------适用于2019最新版本gcc-8.2.0

gcc多版本更替, 使得很多ast 可视化工具都不能用了,向gcc插件VCG也不能在 高版本上使用现在我们找到了一个还适用于 最新版本的方法首先我们创建一个文件命名test.c的Hello World程序。test.c #include<stdio.h> int main(int arg_count,char ** arg_values) {...

2019-11-20 13:04:42 6046 22

原创 迭代编译概述

传统的 静态编译器依赖于对微体系结构和程序特征的静态建模来帮 助决定对程序进行何种优化、以何种顺序进行优化、以及优化 的具体参数等,难以适应日趋复杂的硬 和应用程序。迭代编译: 针对通用程序的一种有效的优化方法,其优化过程以一个驱动器为中心,驱动器读取它所需的变换列表和参数范围,测试不同变换与参数组合的性能,根据某种搜索算法确定下一步的变换与参数,在满足一定条件时停...

2019-11-19 22:18:20 538

原创 gcc各种优化所在位置及循环展开分析

GENERIC 是一种树(tree)的高级表示形式,目的是提供一个语言无关的中间表示。当前 GCC 的主要优化都是基于 GIMPLE 表示形式实现的,包括过程间优化、传统标量优化、循环优化、向量化等。GCC 的 all_passes 遍表中的 expand 过程将 GCC 的 GIMPLE 表示形式转化为另外一种表示形式 RTL。RTL 相当于一种...

2019-11-19 14:57:21 1589

原创 Caller-saved register and Callee-saved register

Caller-saved register(又名易失性寄存器AKA volatile registers, or call-clobbered)用于保存不需要在各个调用之间保留的临时数量。因此,如果要在过程调用后恢复该值,则调用方有责任将这些寄存器压入堆栈或将其复制到其他位置。不过,让调用销毁这些寄存器中的临时值是正常的。从被调用方的角度来看,您的函数可以自由覆盖(也就是破坏)这些寄存器...

2019-11-19 14:55:32 10467 3

原创 Source Insight 4.0 代码自动排版 2019

1,下载astyle工具:https://sourceforge.net/projects/astyle/2,打开你的SourceInsight, 选择菜单“Options-->Custom Commands-->Add”, 输入Artistic Style(可以随便输入一个名字,不要乱填,最好能体现自动排版的字眼,因为这个就是软件界面上要显示的名字,我填的名字是AutoStyle...

2019-09-03 16:38:39 3661

原创 使用Eclipse编译运行MapReduce程序_Hadoop2.6.0

环境本教程在 Hadoop 2.6.0 下验证通过,适用于 Ubuntu/CentOS 系统,理论上可用于任何原生 Hadoop 2 版本,如 Hadoop 2.4.1,Hadoop 2.7.1。本教程主要测试环境:Ubuntu 14.04 Hadoop 2.6.0(伪分布式) Eclipse 3.8此外,本教材在 CentOS 6.4 系统中也验证通过,对 Ubuntu 与 C...

2019-01-04 15:41:35 408 4

原创 计算机专业实习经验总结

初到实习单位,最大的感触就是本科学的东西真的非常有用,包括数据结构,组成原理,操作系统,计算机网络,编译原理等都是基础但又实用的课程.他就像是英语里的ABC,只会字母是写不出英文文章的,但是不会这些字母也是更不可能写出文章的.所以本科阶段我们一定要学好这些课程,而且以后要时不时拿出来复习,包括工作以后.而且本科阶段我们需要去看一下计算机行业的前沿发展,了解一下新技术,这样才能更好的把握自己的职业发...

2018-12-18 19:05:53 13129 3

原创 Hadoop 2.7 伪分布式环境搭建(超详细)

1、安装环境  ①、一台Linux CentOS6.7 系统  hostname                ipaddress                subnet mask                  geteway       Node1     192.168.139.150    255.255.255.0      192.168.139.2   ②、...

2018-12-14 15:34:40 1032

原创 信息论笔记1

第一题 球赛问题棒球比赛中,大卫和麦克在前面的比赛中打平,最后3场与其他选手的比赛结果将最终决定他们的胜、负或平 若最后3场他们与其他选手的比赛结果胜负的可能性均为0.5,1.麦克最终比赛结果是否可以作为一个信源?2.若可以作为信源,计算信源的信息熵1.可以作为一个信源,因为比赛的结果状态已知,胜负平的概率也可知,所以可以做一个信源2..第二题设有n个球,每个球都以...

2018-11-29 23:16:31 1160

原创 使用国内镜像通过pip安装python 包

pip安装python包时超时或是报错“Cannot fetch index base URL http://e.pypi.python.org/simple/”解决方法:加上参数"-i https://pypi.tuna.tsinghua.edu.cn/simple/",即换成国内镜像。一劳永逸的办法:~/.pip/ 下创建文件 pip.conf(如果还没有的话),并填入以下内容:...

2018-10-10 11:20:10 2787

转载 自然语言处理中句子相似度计算的几种方法

在做自然语言处理的过程中,我们经常会遇到需要找出相似语句的场景,或者找出句子的近似表达,这时候我们就需要把类似的句子归到一起,这里面就涉及到句子相似度计算的问题,那么本节就来了解一下怎么样来用 Python 实现句子相似度的计算。基本方法句子相似度计算我们一共归类了以下几种方法:编辑距离计算 杰卡德系数计算 TF 计算 TFIDF 计算 Word2Vec 计算下面我们来一一了...

2018-09-13 15:50:17 5221

转载 TF-IDF与余弦相似性的应用(二):找出相似文章

上一次,我用TF-IDF算法自动提取关键词。今天,我们再来研究另一个相关的问题。有些时候,除了找到关键词,我们还希望找到与原文章相似的其他文章。比如,"Google新闻"在主新闻下方,还提供多条相似的新闻。为了找出相似的文章,需要用到"余弦相似性"(cosine similiarity)。下面,我举一个例子来说明,什么是"余弦相似性"。为了简单起见,我们先从句子着手。  句子...

2018-09-13 15:40:49 169

转载 TF-IDF与余弦相似性的应用(一):自动提取关键词

这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题。有一篇很长的文章,我要用计算机提取它的关键词(Automatic Keyphrase extraction),完全不加以人工干预,请问怎样才能正确做到?这个问题涉及到数据挖掘、文本处理、信息检索等很多计算机前沿领域,但是出乎意料的是,有一个非常简单的经典算法,可以给出令人相当满意的结果。它简单到都不需要高等数学,普通人只用10分...

2018-09-13 15:40:03 222

原创 高等工程数学(二):基变换与坐标变换

证明一个矩阵可逆的方法有5种;(1)看这个矩阵的行列式值是否为0,若不为0,则可逆;(2)看这个矩阵的秩是否为n,若为n,则矩阵可逆;(3)定义法:若存在一个矩阵B,使矩阵A使得AB=BA=E,则矩阵A可逆,且B是A的逆矩阵;(4)对于齐次线性方程AX=0,若方程只有零解,那么这个矩阵可逆,反之若有无穷解则矩阵不可逆;(5)对于非齐次线性方程AX=b,若方程只有特解,那...

2018-09-07 21:46:20 1725

原创 高等工程数学(一):线性空间

定义1.0 数域如果复数的一个非空集合 P 含有非零的数,且其中任意两数的和、差、积、商(除数不为零)仍属于该集合,则称数集 P 为一个数域 .复数 a + bi ; i2 = -1注意:所有的数域都包含有理数域,且都包含整数 0 和 1每个数的否(逆)也在同一数域中  定义1.1 线性空间设V是一个非空集合,P是一个数域。如果满足以下三个条件:加法运算封...

2018-09-07 20:04:41 2496 2

原创 源码编译安装gcc

源码安装gcc/g++ 1. 编译新版gcc需要旧版支持(因为要编译, 废话) 1)确认是否有安装gcc   gcc -v2) 如果没有安装gcc, 如果机子有联网,则可以使用以下方法  center-os系统:  yum -y install gcc  yum -y install gcc-g++   ubuntu系统:  sudo apt-get insta...

2018-08-28 10:18:02 12855 4

原创 基于WordNet的英文同义词、近义词相似度评估及代码实现

源码地址:https://github.com/XBWer/WordSimilarity    1.确定要解决的问题及意义在基于代码片段的分类过程中,由于程序员对数据变量名的选取可能具有一定的规范性,在某一特定业务处理逻辑代码中,可能多个变量名之间具有关联性或相似性(如“trade”(商品交易)类中,可能存在“business”,“transaction”,“deal”等同义词),在某...

2018-08-20 17:26:06 4798

原创 Stanford CoreNLP依存关系分析、词性标注及句子主语分析(使用Python) 超详细截图手把手教学,新手友好

前言Stanford CoreNLP的源代码是使用Java写的,提供了Server方式进行交互。stanfordcorenlp是一个对Stanford CoreNLP进行了封装的Python工具包,GitHub地址,使用非常方便。本文以stanfordcorenlp接口为例(本文所用版本为Stanford CoreNLP 3.9.1),讲解Python调用StanfordCoreNLP的使用方...

2018-08-14 17:17:03 30312 42

原创 词性标记:VA,VC,VE,VV等

关于词性标记动词,形容词(4种):VA,VC,VE,VV1、谓词性形容词:VA谓词性形容词大致上相当于英语中的形容词和中文语法中、文学作品里的静态动词。我们的谓词性形容词包括两类:第一类:没有宾语且能被“很”修饰的谓语。第二类:源自第一类的、通过重叠(如红彤彤)或者通过名词加形容词模式意味着“像N一样A”(如雪白)的谓语。这个类型的谓词性形容词没有宾语,但是有一些不能被“很”修...

2018-08-13 17:50:30 12699

转载 CS224n笔记2 词的向量表示:word2vec

如何表示一个词语的意思先来看看如何定义“意思”的意思,英文中meaning代表人或文字想要表达的idea。这是个递归的定义,估计查询idea词典会用meaning去解释它。中文中“意思”的意思更加有意思:他说:“她这个人真有意思(funny)。”她说:“他这个人怪有意思的(funny)。”于是人们以为他们有了意思(wish),并让他向她意思意思(express)。他火了:“我根本没有...

2018-08-04 10:53:49 456

转载 CS224n笔记1 自然语言处理与深度学习简介

 什么是自然语言处理这是一门计算机科学、人工智能以及语言学的交叉学科。虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部分。这个星球上有许多生物拥有超过人类的视觉系统,但只有人类才拥有这么高级的语言。自然语言处理的目标是让计算机处理或说“理解”自然语言,以完成有意义的任务,比如订机票购物或QA等。完全理解和表达语言是极其困难的,完美的语言理解等效于实现人工...

2018-07-27 17:37:17 387

转载 终于有人把RISC-V讲明白了

0 RISC-V和其他开放架构有何不同如果仅从“免费”或“开放”这两点来评判,RISC-V架构并不是第一个做到免费或开放的处理器架构。在开始之前,我们先通过论述几个具有代表性的开放架构,来分析RISC-V架构的不同之处以及为什么其他开放架构没能取得足够的成功。0.1 平民英雄——OpenRISCOpenRISC是OpenCores组织提供的基于GPL协议的开放源代码RISC处理器。...

2018-07-27 15:30:04 130447 20

转载 经典字符串hash函数介绍及性能比较及最佳算法-------bkdrhash算法解析及扩展

字符串Hash函数对比今天根据自己的理解重新整理了一下几个字符串hash函数,使用了模板,使其支持宽字符串,代码如下:/// @brief BKDR Hash Function /// @detail 本算法由于在Brian Kernighan与Dennis Ritchie的《The C Programming Language》一书被展示而得名,是一种简单快捷的hash算法,也是...

2018-07-23 16:43:49 3324

转载 分布式算法(一致性Hash算法)---应对服务器宕机,增加或删除服务器

一、分布式算法    在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time)、加权法(Weighted )等。其中哈希算法是最为常用的算法.  典型的应用场景是: 有N台服务器提供缓存服务,需要对服务器进行负载均衡,将请求平均分发到每...

2018-07-20 11:25:34 2746

原创 RISC-V各种资料,书书籍,paper等等整理收集

https://github.com/l919898756/RISC-V_article_paper_src欢迎大家收集资料上传分享 

2018-07-20 11:12:32 6241 4

转载 详解rsync算法--如何减少同步文件时的网络传输量

先看下图中的场景,客户端A和B,以及服务器server都保存了同一个文件,最初,A、B和server上的文件内容都是相同的(记为File.1)。某一时刻,B修改了文件内容,上传到SERVER上(记为File.2)。客户端A这时试图向服务器SERVER更新文件到最新内容,也就是File.1更新为File.2。上面这个场景很常见,例如现在流行的网盘。假设我有一个文件a.txt在网盘上,上班时在...

2018-07-20 10:58:16 403

原创 十大机器学习算法的优缺点及选择依据

C4.5算法C4.5算法的核心思想是ID3算法,是ID3算法的改进:用信息增益率来选择属性,克服了用信息增益来选择属性时变相选择取值多的属性的不足; 在树的构造过程中进行剪枝; 能处理非离散化数据; 能处理不完整数据。优点:产生的分类规则易于理解,准确率高。缺点:在构造过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效; C4.5算法只适合于能够驻留内存的...

2018-07-19 16:49:29 1175

转载 RISC-V 开发工具链使用手册及参数说明

 RISC-V Toolchain ConventionsCopyright and license informationThis document is authored by: * Alex Bradbury [email protected] under the Creative Commons Attribution 4.0 International L...

2018-07-17 15:46:24 6544

转载 一、GCC的作用和运行机制

一、GCC的作用和运行机制    GCC是Linux下重要的编译工具,用法这里就不说了,满大街都找得到。这里我重点介绍GCC的运作机制,作为代码分析的铺垫。全篇使用C语言子部件来作分析,因为我对其他语言的编译没有研究。    根据编译原理,语言的编译分为这么几个步骤:词法分析、语法分析、语义分析、中间语言生成、优化、目标代码生成等。然而从编译器使用的角度来看,要把源代码翻译为可执行文件要经...

2018-07-17 15:39:29 2877

原创 PYTHON读取大文件

1. with读取大文件with读取,示例如下:with open(filepath) as f: for line in f: &lt;do something with line&gt;with负责处理open和close文件,包括抛出内部异常。而for line in f将文件对象f当做迭代对象,将自动处理IO缓冲和内存管理,这样你无需担心大文件的处理了...

2018-07-16 20:06:35 353

转载 Pycharm中使用GitHub进行版本控制

Pycharm是当前进行python开发,尤其是Django开发最好的IDE。GitHub是程序员的圣地,几乎人人都在用。本文假设你对pycharm和github都有一定的了解,并且希望在pycharm下直接使用github的版本控制功能。废话不多说,下面图文详解,全是干货。windows和linux一样配置的,有些路径不一样而已环境:pycharm 2016,git 2.8,gith...

2018-07-16 17:46:23 739

翻译 Javascript版RISC-VISA(RV64)模拟器

RISC-V提供了一个Javascript版RISC-V ISA(RV64)模拟器,可以使用浏览器来运行,从github上获取源码:$ git clone -brelease https://github.com/riscv/riscv-angel.git在riscv-angle目录中运行如下命令:$ make$ python -mSimpleHTTPServer 8000在浏览器中访问local...

2018-07-12 14:54:24 1604 1

转载 自己下载源码啊手动编译gcc/g++

1. 编译新版gcc需要旧版支持 1)确认是否有安装gcc   gcc -v2) 如果没有安装gcc, 如果机子有联网,则可以使用以下方法  center-os系统:  yum -y install gcc  yum -y install gcc-g++   ubuntu系统:  sudo apt-get installgcc  sudo apt-get installg++2 确认有旧版的gcc...

2018-07-12 14:48:11 8258

LaTex算法库——algorithmic.sty

LaTex算法库文件——algorithm.sty,可以下载直接使用。

2019-05-08

LaTex算法库——algorithm.sty

LaTex算法库文件——algorithm.sty,下载可直接使用。

2019-05-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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