Hello, My goal is to create a language which can compile itself, therefore I feel I need to understand the Assembler/Byte code format. Starting with a C hello world program there are statements at the beginning of the disassembled bc file that I couldn't find any documentation: target endian = little target pointersize = 32 target triple = "i686-pc-linux-gnu" deplibs = [ "c", "crtend" ] implementation These are "self-explantory" but what are the possible values and what other items should I be prepared to output. Thanks, Wink Saville
Chris Lattner
2006-Mar-07 02:33 UTC
[LLVMdev] Keyword documenation for target, deplibs ...
On Sun, 5 Mar 2006, Wink Saville wrote:> My goal is to create a language which can compile itself, therefore I > feel I need to understand the Assembler/Byte code format.ok.> Starting with a C hello world program there are statements at the > beginning of the disassembled bc file that I couldn't find any > documentation:Sorry, this really should be in the LangRef.html file, but isn't for some reason.> These are "self-explantory" but what are the possible values and what > other items should I be prepared to output.> target endian = little > target pointersize = 32Three possible options for each of these: 1) big/little/nothing 2) 32/64/nothing Note that if your front-end is "type safe", i.e. it's not possible to write bad pointer casts, and your front-end isn't doing pointer arithmetic in a bad way, you shoouldn't need these.> target triple = "i686-pc-linux-gnu"This is a standard target triple. The ones supported by the X86 backend are listed here: http://llvm.cs.uiuc.edu/docs/CodeGenerator.html#x86> deplibs = [ "c", "crtend" ]This is information passed on to the linker to specify which libraries the code depends on. In this case, the linker will try to link in libc and libcrtend. Generally you want to add the runtime library for your langauge to this list. If your language has the capability to figure out which libraries are required by the user application, you can also have it add them here. This is to support things like a hypothetical C compiler with a pragma in "math.h". Whenever the user code #includes math.h, this pragma would inform the linker to link in libm. -Chris -- http://nondot.org/sabre/ http://llvm.org/
Maybe Matching Threads
- [LLVMdev] Using llvm-gcc with a simple program and the '-c' option
- [LLVMdev] Using llvm-gcc with a simple program and the '-c' option
- [LLVMdev] Using llvm-gcc with a simple program and the '-c' option
- [LLVMdev] Using llvm-gcc with a simple program and the '-c' option
- [LLVMdev] Using llvm-gcc with a simple program and the '-c' option