[LLVMdev] OS Development
Willow Schlanger
wschlanger at gmail.com
Sat Jun 16 02:43:59 PDT 2007
Hi Chris, thanks for the comments.
Does LLVM support cross-compiling, e.g. can I use the x86-64 backend to
generate 64-bit assembly sources, on a 32-bit Linux installation? I am
using coLinux on Windows (Debian-based) and creating a gcc cross
compiler failed because it needs a 64-bit native assembler.
Thanks,
Willow
Chris Lattner wrote:
> On Fri, 15 Jun 2007, Willow Schlanger wrote:
>
>>I'm interested in developing a 64-bit operating system to run inside a
>>version of BOCHS compiled with x86-64 support enabled
>>(bochs-2.2.6-x86-64.exe) that I found on the web.
>>
>>Can I use LLVM as a GCC replacement for OS development? I need to
>>generate 64-bit x86-64 assembly language output which I can then
>>assemble with the normal 'as' and link via 'ld' commands.
>
>
> llvm-gcc works as a drop-in replacement for GCC. By default it produces
> normal native .s files, just like GCC.
>
>
>>How do I do this? Can I run LLVM inside coLinux under Windows? How do I
>>build it from the source and install it and what is the command for a
>>GCC replacement (how do I generate x86-64 assembly source from C/C++ files)?
>
>
> llvm-gcc foo.c -S -o foo.s -O3
>
>
>>It would be really cool if I could use the LLVM intermediate
>>representation in my OS, so all drivers can be supplied in intermediate
>>form. The OS will compile the drivers when the driver is first loaded
>>and cache the resulting program (after assembling and linking it) to disk.
>
>
> Sure, this is easy. You can get llvm-gcc to emit llvm bytecode by adding
> the -emit-llvm option:
>
> llvm-gcc foo.c -c -o foo.bc -O3 -emit-llvm
>
>
>>This way the back-end can optimize drivers globally (inter-procedural
>>analysis) and the back-end can generate code optimized for the current
>>machine. If you boot up the OS on a 32-bit PC the SAME driver can be
>>used, the IR is simply 'recompiled' (code is generated) for a new target.
>
>
> Unfortunately, LLVM IR produced by llvm-gcc is not "portable" across
> different architectures.
>
> -Chris
>
More information about the llvm-dev
mailing list