自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BURNMITE的博客

感觉来了就写一点东西

  • 博客(21)
  • 收藏
  • 关注

原创 tikz任意角度画法

pdf的新功能,画出任意角度

2018-06-15 20:13:18 3460

原创 tikz语法中极为容易让人迷惑的地方

本文章描述的是tikz中非常令人困惑的语法,主要是在使用draw命令的时候出现的>和<符号

2018-06-15 19:37:08 2631

原创 探究latex中的\def和\edef

探究原始的tex语言中的\def和\edef命令的用法

2018-06-11 14:21:45 16252 2

原创 对于PIC16芯片中有符号扩展的优化

在做毕业设计的时候发现了一个奇妙的位运算,可以在低级芯片上实现有符号扩展操作的窥孔优化。

2018-05-28 18:44:24 731 1

原创 对于龙书中的到达定值的传递方程公式的推导

写作理由因为当时看龙书的时候,感觉前一部分看的头痛欲裂,结果在不想看的时候,又来了一堆公式,当时就没看下去了,但是事后还是觉得弄懂了比较好,就算是对以前的数学知识的复习吧。公式推导龙书的第387页到达定值的转移函数为: fd(x)=gend∪(x−killd)fd(x)=gend∪(x−killd)f_d(x) = gen_d \cup (x - kill_d) 当存在两个...

2018-03-03 10:37:25 482

原创 LeetCode.260 Single Number 3

写作来源今天在LeetCode上面连续做了Single Number 2和Single Number 3,非常羞耻地说,两题都是看了别人的思路理解以后再写出来的,Single Number 2的解法有人已经在简书上面写了,我这里就解释一些LeetCode上面的Discuss部分的其他人的解法。思路首先贴上别人写的代码。class Solution{public: ...

2018-03-02 21:47:03 203

原创 编程之中由整形提升带来的错误

问题来源今天在写leetcode的题目的时候,在debug模式中突然发现了一个不符合常理的现象,第一反应就是肯定不是编译器的错误,肯定是我自己哪儿有问题,经过一番简单的排查,发现这个问题是由整形提升引起的。分析如下错误代码如下,题目为LeetCode的279.Perfect Squaresclass Solution {public: int numSquares(i

2018-01-17 19:16:49 205

原创 用Scheme解释器项目来了解Java(五)

本章介绍本章主要介绍Java中的函数式编程在本项目中的应用,非常简略。各位只需要稍加实践就可以发现函数式编程的妙用。如果想详细入门Java函数式编程的话,下面这个链接很不错。 Java 8 中的 Streams API 详解举例说明我想判断一个List中是不是所有的元素都符合某个条件,比如本项目中有一个逻辑是,判断某一个List中是不是所有的元素都是SchemeNumber类,这样才可以进行+的

2017-11-01 21:16:58 389

原创 用Scheme解释器项目来了解Java(四)

本章简介本章主要介绍编译器中最主要的设计模式,观察者模式,这里我无法讲述观察者模式的理论或者是用UML画类图等等,只想就这个项目,说说该如何运用观察者模式。观察者模式观察者模式举例以本项目为基础,结合个人理解,观察者模式具有下面的定义 观察的对象只有一个,而观察者有多个,每个观察者在对观察对象进行观察以后,可以执行不同的操作。这里就可以简单的举两个观察者的例子,最基本的例子就是如何对程序进行树

2017-10-31 21:50:20 417

原创 用Scheme解释器项目来了解Java(三)

本章简介本章承接上一章,上一章我们介绍了如何处理复杂类型,这一张我们详细的介绍一个如何从token流中分析出一个语法结构。代码概述分析简单结构SchemeAtom:第一个字母是英文字母,一直扫描到空格为止,里面只存在英文和数字以及一些合法字符。SchemeNumber:以数字开头,后面的内容只允许是数字,这里我们不分析浮点数,所以不包含小数点SchemeBoolean:只有两种情况可以分析成B

2017-10-31 11:30:34 332

原创 用Scheme解释器项目来了解Java(二)

本章简介本章主要介绍SchemeToken类的子类SchemeList,这个类是所有复杂类的父类,所有的SchemeList的子类包括自身都具有用()包含的结构,比如(+ 1 2 3)(map + '(1 2 3) '(2 3 4))类的设计类图看起来很复杂,下面我会一一介绍每个类的作用子类介绍这里为了展现子类中的每个元素所对应的成员变量,我就用数学公式表示,不用代码表示了,还未实现的先不进行列举

2017-10-30 15:59:10 453

原创 用Scheme解释器项目来了解Java(一)

本章简介本章主要介绍简答的scheme语言的语法,还有简单scheme的token所对应的类。简单介绍scheme语言有两篇ibm的文章我觉得介绍的很详细,这里我贴出来 scheme语言概要(上) scheme语言概要(下) 希望大家能在看本篇博客的时候把这两篇介绍scheme语言的语法看一下,因为我自认为写不出这么好的入门博客了。类的设计类图 从上面这张图片我们可以看出,所有的scheme

2017-10-30 11:19:17 1911

原创 用Scheme解释器项目来了解Java

首语原本打算定的题目是,基于Java8的Scheme解释器 ,但是在对项目进行编写的时候,发现有很多scheme的语言细节、理论我了解的少之又少,而本人自认为Java基础还是比很多人要好的,所以想改成现在这个题目,用Scheme解释器来学习Java。写这个项目的缘由是最近的一场面试,这里我就安利一家公司,源伞科技 ,位于深圳的一家公司,主要是做静态分析,编译器构建的。当时我把简历发过去的时候,hr问

2017-10-28 22:54:22 677

原创 如何lower基本块开头的PHI函数

问题背景最近面试一家静态分析的公司,感觉面试官问的问题非常具有代表性,问的都是《编译原理》里面的知识,并且进行扩展,其中就有一个问题,当时我就很懵逼,即如何对phi函数进行lower。what is “Lower”?简单来说,lower是一个对操作和类型进行合法化的过程,即如果芯片中的寄存器的位数是8位,而你要进行16位的运算,那么就要对两个加法操作数进行拆分,变成两个8位的相加,并分别保存到结果的

2017-10-13 11:53:16 873 1

原创 LeetCode Rotate Image

题目描述You are given an n x n 2D matrix representing an image.Rotate the image by 90 degrees (clockwise).Note: You have to rotate the image in-place, which means you have to modify the input 2D matrix di

2017-10-04 15:15:21 126

原创 对于上一篇文章中的Rewrite Rules的详细分析

问题背景没有背景,这篇文章是对上一篇文章从LLVM的CodeGen角度思考PIC16中的常量数组生成过程中的Rewrite Rules的分析。详细分析过程分析表达式c = arr[1] * a * e + d + f / g整个表达式对应的语法树如下 我们可以使用逆拓扑序对这个DAG图进行遍历,如果遇到了算数运算操作,就进行M阶树的构造,即不断地向上进行节点的汇集操作。如下,分别展示出第一步

2017-10-03 16:50:31 469

原创 科普LLVM中MSP430如何lower移位指令

问题背景最近在做LLVM项目的时候,碰到了一个看起来不是问题的问题,就是如何对移位指令进行lower,在LLVMIR中,移位指令使用一个节点进行表示的,表示如下(shl a, b)其中,假设a就是源操作数,b是移位次数,shl为逻辑左移,可是MSP430芯片里面只有一次移动一位的移位指令,如下(MSP430shl a)表示将源操作数a向左移动一位,那么下一步,顺理成章地就会想到,如果每次只移动一位,

2017-10-02 19:13:37 996 2

原创 编译学习笔记(一)

这段时间学习LLVM最痛苦的就是一直要看英文文档,因为现在没有中文的,亚马逊上面仅有的两本关于LLVM的书就只有两本,一本是《Get started with LLVM core Library》和《LLVM cookbook》,还全是英文的,所以学习的路上碰到了不少的阻碍,下面我就简单说说我碰到的问题,希望能有一定的帮助。LLVM到底是一个什么玩意:首先听从了老师的要求,下载了LLVM的源码,放

2016-06-08 11:47:15 281

原创 位运算学习(一)

问题来源我是由一个算法题目想到位运算的。题目是《算法问题实战策略》中的204页的题目,题目如下: 在没有电话的时代,摩尔斯电码是无线电传输领域中的一个常用代码。电码以短信号和长信号的不同组合表示各种文字,其中短信号是o,长信号是-。例如,o—表示英文字母J,而–表示英文字母M。 假设有一本以n个长点和m个短点组成的。包含所有信号的字典。例如,n=m=2,就会包含如下信号。 –oo -o-o

2016-06-05 18:40:49 586

原创 解析出一个网页中所有的图片

通过正则表达式来匹配出整个网页中的所有图片URL的过程

2016-06-01 00:06:39 3430

原创 手机蓝牙传输图片很邪恶的一个点

本文很简短,,,真的很简短,,, 用手机写蓝牙程序,并且在手机之间用蓝牙传输图片,有时候图片传输到另外一个手机上面以后图片会失真,那么到底是哪里出了问题呢。 首先,绝大部分的代码都是一样的,无非就是普通的蓝牙操作,开启蓝牙,发现蓝牙,然后就变成了Java的Socket操作了,再后来就是获取输入输出流,进行数据的传输操作了,就在这里!!!出现了问题。 Look,这里是一段Java开发者熟悉的不能

2016-05-31 22:16:34 4234

空空如也

空空如也

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

TA关注的人

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