Porting Clang to a new architecture

Ariel Arelovich via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 26 07:39:25 PDT 2015


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?

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?

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).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20151026/14c0c292/attachment.html>


More information about the cfe-commits mailing list