Mac OS X has LLVM compiler, but doesn't have LLVM Assembler. Let's start installing the trunk LLVM on your Mac.
According to http://llvm.org/docs/GettingStarted.html#checkout,
$ cd ~/src
$ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
$ cd llvm
In the directory there is /docs
directory which contains many html files. Check them.
$ ./configure --prefix=/Users/ujihisa/src/llvm/usr
$ gmake -k |& tee gnumake.out
It took long time. After the build process, I found an interesting note.
...
gmake[1]: Leaving directory `/Users/ujihisa/src/llvm/bindings'
llvm[0]: ***** Completed Debug Build
llvm[0]: ***** Note: Debug build can be 10 times slower than an
llvm[0]: ***** optimized build. Use make ENABLE_OPTIMIZED=1 to
llvm[0]: ***** make an optimized build. Alternatively you can
llvm[0]: ***** configure with --enable-optimized.
I should have set --enable-optimized
.
Anyway, let the installation finish.
$ gmake install
It also took time.
Don't forget to make path to the ./usr/bin/
. There are many llvm-related executable files.
Hello, world!
Let's write hello world on LLVM!
I referred this page. The sample code contains a small mistakes, so I fixed.
Write the following code on a.ll
(not a.11
):
@str = internal constant [13 x i8] c"hello world\0A\00"
define void @main() nounwind
{
%temp = call i32 @printf( i8* getelementptr ([13 x i8]* @str, i32 0,i32 0))
ret void;
}
declare i32 @printf(i8*, ...) nounwind
Assemble it:
$ llvm-as -f a.ll
$ lli a.bc
hello world
Yay!
The generated file a.bc
is a binary file.
Vim
Fortunately the svn repository contains a vim script for llvm named llvm.vim
. You should install it if you're a vimmer.
No comments:
Post a Comment