自定义博客皮肤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的博客

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

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

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

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

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

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

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

2019-11-25 16:14:08 2574

原创 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 6088 22

原创 迭代编译概述

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

2019-11-19 22:18:20 542

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

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

2019-11-19 14:57:21 1605

原创 Caller-saved register and Callee-saved register

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

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

LaTex算法库——algorithmic.sty

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

2019-05-08

LaTex算法库——algorithm.sty

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

2019-05-08

空空如也

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

TA关注的人

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