Porting Clang to a new architecture

Ariel Arelovich via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 2 01:30:07 PST 2015


Yes!

Thank you. I've begun reading up on this, and it is effectively what I want
to do. I working on modifying LLVM code.

One question that I still can't answer is the whole standard libraries. Are
these precompiled for a given backend? Do I need to write them for my
proposed arquitecture?

Or by simply writing a  new backend everything else is done by the front
end?

I have tried asking on the cfe-devs but the list is more technical than
anything else so I don't get nay answers.

I would appreciate if anyone could point me in the direction where to read
about this. (c standard libraries in a new arquitecture)

On Sun, Nov 1, 2015 at 9:45 PM, Justin Bogner <mail at justinbogner.com> wrote:

> Ariel Arelovich via cfe-commits <cfe-commits at lists.llvm.org> writes:
> > Great.
> >
> > So this is what I wanted to know. I think understand what you are saying.
> > You are saying that most of the work that I would need to do from the AST
> > (I'm assuming that this stands from Abstract Syntax Tree) is allready
> being
> > done by LLVM and I should look to modify for a my new arquitecture.
> Right?
>
> This is close, but a little bit off. Clang generates an AST, but then
> transforms it further into the LLVM intermediate language[1]. LLVM can
> generate code for a number of target architectures from this language.
> It sounds to me like what you want to do is write an LLVM backend for
> your target. There is some documentation[2] on how to do that, which
> should give you an idea of what you would need to do to leverage LLVM
> for your project.
>
> [1]: http://llvm.org/docs/LangRef.html
> [2]: http://llvm.org/docs/WritingAnLLVMBackend.html
>
> > If I take the AST and process it myself to generate the opcodes, I'm
> > essentially writing LLVM just less efficient (no optimizations) and
> > specific for the new architecure, right?
> >
> >
> >
> > On Mon, Oct 26, 2015 at 12:32 PM, Saleem Abdulrasool <
> compnerd at compnerd.org>
> > wrote:
> >
> >> On Monday, October 26, 2015, Ariel Arelovich via cfe-commits <
> >> cfe-commits at lists.llvm.org> wrote:
> >>
> >>> Hi:
> >>>
> >>> Where I'm working I've been asked to look into developing a C (by this
> I
> >>> mean C89 C standard) compiler a new processor architecture being
> created
> >>> inhouse.
> >>>
> >>> On looking at the options and brushing up on compiler theory, I came up
> >>> with Flex/Bison, Writing the compiler from scratch or use Clang. I
> liked
> >>> this option better because parsing and and analyzing c code to
> genereate
> >>> somthing intermediate, and do this from scratch, seemed like
> reinventing
> >>> the wheel (an incredibly complex wheel, at that).
> >>>
> >>> I've figured that if Clang, works with the standard compiler flow (that
> >>> I've seen everywhere), it takes a C program and transforms it until it
> gets
> >>> a intermediate language (which is machine independant). The Dragon
> Book,
> >>> even calls this the output of the compiler Front End. From what I've
> read
> >>> from the documentation This is what Clang is: a compiler front end.
> LLVM
> >>> does optimization and translation to opcodes of known architectures. Is
> >>> this correct? Or am I getting this wrong?
> >>>
> >>
> >> Correct.  clang is just the front end for C-like languages.  It will
> parse
> >> and analyze the code (generating the AST).  The IR it generates is the
> LLVM
> >> IR.
> >>
> >> So, my question is: Would it be possible to use Clang in such a way that
> >>> it takes a C program and generates an intermediate language so that I
> can
> >>> work directly on that language to generate opcodes based on the
> >>> architecture that we are currently developing?
> >>>
> >>
> >> Yes.  This is how clang already works.  It sounds like you should be
> >> looking at LLVM, not clang since you are trying to support a new
> >> architecture, not a language feature.
> >>
> >>
> >>>
> >>> Thank you, for any answers.
> >>>
> >>> PD: I know my question might be very hard to answer as it is not very
> >>> specific. All I'm asking for, here, is a simple: "It could be done,
> start
> >>> reading about this and that" or "It will be next to impossible, just
> try
> >>> something else" (with a little explanation as to why, if that were
> >>> possible, please).
> >>>
> >>
> >>
> >> --
> >> Saleem Abdulrasool
> >> compnerd (at) compnerd (dot) org
> >>
> > _______________________________________________
> > cfe-commits mailing list
> > cfe-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20151102/b8870657/attachment-0001.html>


More information about the cfe-commits mailing list