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...
Archive for llvm
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
Read more...
#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