Archive for llvm

动手写一个语言玩-语言定位

n久前就有这样的冲动,这次读了淫神的代码后,决定还是动一下手。 语言语法主要类似python的,靠缩进来定义代码块,动态语言/静态语言还没想好0 0(应该会静态类型)。 以前想做的时候看过,flex,yacc/bison什么的,看了淫神的代码突然想自己实现一下,问题是难免的,出现问题解决问题。不下手不会知道问题会出在哪,这也是成长过程。看了淫神的代码开始想使用python写,后来觉得有必要复习一下c了,c语言用的太少了,是时候提高一下水平了。 再一个临时的决定是使用llvm,虽然现在还不是很懂其中的奥秘,看看文档慢慢来吧。这也是发现现在好多语言都在用来提示速度,dropbox也在搞py的实现,期待能达到更快的速度。 感觉如果用flex,bison ,llvm 写一个语言应该超简单。。。当然是写一个玩的而不是用的。 我看了淫神的代码 ,然后去翻python的源代码parse部分,无从下手,打眼也抽不出来各部分功能,然后就放弃了,自己慢慢搞。汗 更新 周末,屋里又看了一下python parser部分的源代码,找到了基本流程,开始基本就在Parser/pgenmain.c和Python/pythonrun.c这两个文件,流程我也过了一遍,函数里边具体的分析没仔细看。突然感觉流程都差不多,我可以借鉴一下python的c代码,质量不用说肯定是不错的,偶卡卡。
Read more...

llvm clang编译

1 安装 下载的最新的3.4, http://llvm.org/releases/download.html#3.4 Clang source code (.sig) LLVM source code (.sig) Compiler RT source code (.sig) 官方安装文档:http://llvm.org/docs/GettingStarted.html#getting-started-quickly-a-summary 下载的源码主要解压到正确目录就行了. mkdir build cd build ../configure make make install 编译的二进制文件在llvm-3.4/build/Release+Asserts/bin 搞定了 clang --version clang version 3.4 (tags/RELEASE_34/final) Target: x86_64-unknown-linux-gnu Thread model: posix 源里边最新的是3.3的 2 写一个c的hello world
#include 

int main() {
  printf("hello world\n");
  return 0;
}
听说clang比gcc速度快。 clang hello.c -o hello 这里和gcc生成一样的系统执行文件 生成llvm的字节码文件 clang -O3 -emit-llvm hello.c -c -o hello.bc 两种形式运行 ./hello lli hello.bc
Read more...

1