CentOS 7源码编译安装LLVM 13.0.1 由于需要在CentOS 7的服务器上安装LLVM和Clang的环境,因此在这里记录一下整个过程。 GCC编译LLVM需要GCC版本大于5.1,而CentOS 7的版本是4.8.5,因此需要首先升级一下GCC版本。这里有两种方法,一种是yum,一种是从源码编译安装。 yum升级GCCyum无法直接升级GCC版本,而是需要我们通过其他命令,顺带着将GCC升级,命令如下 12yum install ce 2023-03-06 Compiler #LLVM
LLVM IR 教程(未完) LLVM IR (Intermediate Representation),是LLVM所使用的代码表示。我们都知道LLVM把整个编译过程分为三个部分,前端(frontend),编译优化,后端(frontend)。这是LLVM针对不同的源代码和不同的目标架构所使用的低耦合解决办法,前端负责将不同的编程语言写成的代码转换为统一的表示,然后编译优化部分进行优化,最后针对不同的平台,再使用不同的后端生成对 2023-02-07 Compiler #LLVM #Compiler #IR
编译器中的Parser,语法分析器,以及抽象语法树AST 之前我们学习了词法分析器,接下来,依据词法分析器的输出,我们将进一步对代码进行处理。这里我们用到的是语法分析器,Parser。Parser的输出是一个抽象语法树(Abstract Syntax Tree,AST)。 Parser的构建采用的是两种方法的结合,Recursive Descent Parsing(递归下降解析)和Operator-Precedence Parsing(运算符优先解析)。 2023-01-04 Compiler #LLVM #Compiler #Parser #AST
编译器中的Lexer,词法分析器 最近在对LLVM IR起了兴趣,应为它可以将它支持的所有编程语言都转换成同一个IR语言。LLVM IR生成步骤有三步,首先是词法解析,然后是语法分析生成AST,然后AST可以通过代码生成,得到IR。我是跟着LLVM的官方教程学习的,这个教程通过一个很简单的,虚构的编程语言Kaleidoscope来教你一步步实现自己的编程语言以及对应的编译器。 Kaleidoscope语言Kaleidoscope是 2023-01-03 Compiler #LLVM #Compiler #Lexer
代码预训练模型总结 这篇文章简单总结一些针对源代码的预训练模型,主要关注的是基于Transformer的大型预训练模型。此外,我们还主要关注针对各种下游任务的通用代码预训练模型,如果只是利用了预训练来提升模型在某一个下游任务上的表现,并没有在多个下游任务上进行验证,我们不认为这是一个通用的代码预训练模型,这里不会进行介绍。 CuBERTPaper: https://proceedings.mlr.press/v119 2023-01-03 Paper #Paper #Survey
C++中的std::move 在右值引用的文章中,我们知道,借助右值引用可以为指定类添加移动构造函数,这样当使用该类的右值对象(可以理解为临时对象)初始化同类对象时,编译器会优先选择移动构造函数。 注意,移动构造函数的调用时机是:用同类的右值对象初始化新对象。那么,用当前类的左值对象(有名称,能获取其存储地址的实例对象)初始化同类对象时,是否就无法调用移动构造函数了呢?当然不是,C++11标准中已经给出了解决方案,即调用mov 2023-01-03 C/C++ #C/C++
C++中的左值和右值 左值和右值C++中有左值(lvalue)和右值(rvalue),简单来说,左值是一个对象的引用,而右值是一个值。 左值是一个表达式,它产生一个对象的引用,比如变量名,一个数组下标的引用,一个解除引用后的指针(dereferenced pointer),或一个返回方法引用的方法调用。左值在内存中必定存在一个确定的位置,从而我们可以得到它的地址。 右值是不是左值的表达式,例如literals,大部分操 2023-01-03 C/C++ #C/C++
NL and PL https://www.chakray.com/programming-languages-types-and-features/: 自然语言是人们说的语言,而编程语言是为了机器设计的。Natural language is the language spoken by people, while programming language is intended for machines. 这两种 2021-12-25 Discussion #Discussion #Software Engineering #Source Code #Natural Language
浅谈Threats to Validity 软件工程领域里的很多论文在最后都会有Threats to Validity,之前读论文的时候都是一眼带过。自己曾经写过,也是随便写写。前几天写论文写到这一章,仔细去看了一些论文,发现这也分很多种类。搜了一下,发现还有一篇论文是专门对这个的研究。所以在这里就依据这篇论文做一个总结吧。由于现在我的研究方向是机器学习,所以就结合这个方向进行讨论。这些都是我所理解的,可能不严谨,也可能不正确。 作者首先强 2021-08-29 Paper Writing #Software Engineering #Paper Writing