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 <m...@justinbogner.com> wrote: > Ariel Arelovich via cfe-commits <cfe-commits@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 < > compn...@compnerd.org> > > wrote: > > > >> On Monday, October 26, 2015, Ariel Arelovich via cfe-commits < > >> cfe-commits@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@lists.llvm.org > > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits