自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Enorsee的博客

编译技术学习者

  • 博客(9)
  • 资源 (1)
  • 收藏
  • 关注

原创 控制流分析之循环

最近做科研碰到了如何识别程序热对象的问题,解决这个问题的一般思路是做静态分析,主要是分支概率和基本块频率的分析。目前,LLVM 里已经添加了这两种分析。然而,直接看相关的代码效率很低,主要原因是缺乏控制流分析方面的基础,导致代码中出现的许多术语无法理解。这些术语大多和 CFG 中的循环有关,因此这篇文章主要介绍这方面的基础知识,方便以后复习。循环众所周知,程序运行的大部分时间都花费在循...

2019-01-11 11:25:05 4347 2

原创 LLVM里的寄存器分配 - basic分配器(三)

1 背景介绍本系列的前两篇博文分别介绍了 LLVM 在做寄存器分配前的准备工作和线性扫描算法的理论基础,有了这些背景知识后,就可以开始进入 LLVM 中真实的寄存器分配器了。在 LLVM3.0 中,新提出了两个寄存器分配器:basic/greedy 分配器,它们的核心算法都是线性扫描算法的变种。其中,greedy 分配器是新版本 LLVM 默认的寄存器分配器,而 basic 分配器可以理解为一

2019-01-11 10:24:03 2500

原创 LLVM里的寄存器分配 - 线性扫描算法(二)

1 背景介绍在上一篇博文 LLVM 里的寄存器分配 - 准备工作(一) 里,我主要整理了 LLVM 在做寄存器分配前所做的准备工作,介绍了 LLVM 是在怎样的 MIR 上做的寄存器分配。接下来,就需要讲讲 LLVM 是如何做寄存器分配了。虽然我学习的第一个寄存器分配算法是图着色算法,但由于目前的 LLVM 版本里使用的寄存器分配器均是线性扫描算法的变种(事实上 LLVM3.0 版本以前的寄存

2019-01-11 10:23:20 6991 1

原创 LLVM里的寄存器分配 - 准备工作(一)

1 背景介绍本文档是基于 LLVM 的寄存器分配系列科研笔记第一篇,以一个 C 语言程序为主干介绍 LLVM 在寄存器分配前做的一些主要工作,分析在寄存器分配前期可能的写操作来源,并记录了我在研究 LLVM 后端中 SSA 形式的中间表示时的一些想法(私货)。2 进入寄存器分配我们以下述 C 语言源码为例开始本文的说明:int foo(int a, int b, int

2019-01-11 10:22:36 4991 2

原创 LLVM Spiller 关键代码剖析

LLVM Spillerspill 函数void InlineSpiller::spill(LiveRangeEdit &edit) { ++NumSpilledRanges; Edit = &edit; assert(!TargetRegisterInfo::isStackSlot(edit.getReg()) && "Trying to spill a stack sl

2019-01-11 10:22:01 1235

原创 LLVM SSA 介绍

最近做研究碰到了一个难题,需要对程序变量按生命期进行重命名。考虑到 SSA 中一个变量在不同的程序分支中赋值时会进行重命名,因此打算以此作为参考,看看能否采取同样的方法达到目的。由于之前看到的文档中都说 LLVM IR 是 SSA 形式的,然而在用 Clang 打印生成 LLVM IR 后发现它并不是 SSA 形式,百思不得其解。本篇文章是查阅资料后对此问题的解答,顺便介绍了 LLVM SSA 的...

2018-05-04 17:20:16 19885 2

原创 Ubuntu 虚拟机环境下配置 Clang/LLVM

如何在 Ubuntu 虚拟机环境下配置 Clang/LLVM

2017-12-04 14:14:02 2857

转载 CISC与RISC

简单介绍 RISC 和 CISC 两种体系结构

2017-11-22 20:56:39 1467

翻译 LLVM基本块频率术语

简介基本块频率是一个用于估算不同基本块之间相对频率的度量标准。此文档描述了BlockFrequencyInfo 和 MachineBlockFrequencyInfo 两个分析趟(analysis pass)中使用的术语。分支概率对于有多个后继的基本块来说,它的每条出边对应着相应的概率,称作分支概率(branch probability)。对某一给定的基本块来说,其出边的分支概率之和为1.0。分支

2017-11-15 19:18:46 1399

编译原理之鲸书 中文版

本书讨论单机编译器设计和实现技术领域的前沿问题,重点讨论编译优化技术(超过60%篇幅)。

2017-10-16

空空如也

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

TA关注的人

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