[LLVMdev] Writing LLVM front-end

David Blaikie dblaikie at gmail.com
Wed Feb 18 09:23:48 PST 2015


On Wed, Feb 18, 2015 at 9:15 AM, Ahmed Taj elsir <meedo456123 at gmail.com>
wrote:

> Thanks you for help , David.
>
> Can you briefly  explain this:
> " Most of the architecture-specific code is in LLVM, away from
> anything you'll have to worry about.


Most of this is in LLVM's backends - that's where things like CPU
instruction set, register files, etc, etc, are - so your frontend doesn't
need to know about much of that.


> Some stuff ends up leaking up
> into your front-end "
>

The stuff that you end up having to worry about in the frontend mostly
relates to the ABI things I mentioned earlier - knowing that on certain
platforms you need to put the function parameters in a certain
order/structure so you can interoperate with existing C code, etc.

If you don't need that interoperability, you don't have to worry about that.


>
> Thanks again.
>
> On 2/18/15, David Blaikie <dblaikie at gmail.com> wrote:
> > On Wed, Feb 18, 2015 at 8:34 AM, Ahmed Taj elsir <meedo456123 at gmail.com>
> > wrote:
> >
> >> Hi,
> >>
> >> I'm new in LLVM project , I have to write a compiler frond-end (based
> >> on LLVM) in C++ to support my programming language .Am I have to
> >> implement support for each architecture or LLVM has libraries  that
> >> can do this for me ? (btw I don't want to support architecture that
> >> LLVM don't) .
> >>
> >
> > Most of the architecture-specific code is in LLVM, away from anything
> > you'll have to worry about. Some stuff ends up leaking up into your
> > front-end, but not much if you're starting with a simple language and
> don't
> > need to interoperate with existing C libraries, for example. (if your
> > language needs to be able to call into existing C (or, worse, C++)
> > libraries then you'll need to worry about the ABI, and that's a fair
> amount
> > of work/code/knowledge that needs to reside in your frontend)
> >
> >
> >> does LLVM has helper functions to create objects in heap ?
> >
> >
> > In your target program? No, there's not much/any help there - you just
> call
> > malloc/free (or op new/delete) in your LLVM IR like you would in a
> simple C
> > program.
> >
> >
> >> if not is it good idea to use C++11 smart pointer to do memory
> management
> >> operations (at least in the first versions of my language ) ?
> >>
> >
> > Inside your target program? You won't, presumably, have access to the C++
> > standard library in your language so you won't be able to use its
> > convenient smart pointers. You can make your own in your new programming
> > language, depending on what language features you have to work with.
> >
> > The LLVM Kaleidoscope tutorials might give you some idea of how to get
> > started writing a compiler using LLVM.
> >
> > - David
> >
> >
> >>
> >> Sorry,if some questions are silly , but I'm still beginner in compiler's
> >> world .
> >>
> >> Thanks.
> >> _______________________________________________
> >> LLVM Developers mailing list
> >> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >>
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150218/39bf4b11/attachment.html>


More information about the llvm-dev mailing list