Thanks for this feedback, I think our chip architecture is between a PIC16 and a 8051. <br><br>You have written 18 months, but with how many developpers ?<br><br>I will take a look at the PIC16 LLVM port to have a better view of the work done and todo.<br>
<br>Regards<br><br>Guillaume<br><br><div class="gmail_quote">2009/11/23  <span dir="ltr"><<a href="mailto:Alireza.Moshtaghi@microchip.com">Alireza.Moshtaghi@microchip.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">









<div link="blue" vlink="purple" lang="EN-US">

<div>

<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;">Our 8-bit port for PIC16 has taken roughly
about 18 months to get to where we are now. Our instruction set is not
orthogonal, data memory is banked, program memory is paged, there is only one
accumulator and two pointer registers, and the use of indirect memory access is
really expensive. So we had to implement some non conventional approaches to
get the model working.</span></font></p>

<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;">For the most part, LLVM generic optimizations
(except for mem2reg kind of optimizations) reduce the code size pretty good and
typical applications that we use for PIC16 fit in the memory without problem. </span></font></p>

<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;">We use clang and LLVM just to generate assembly
output. We have our own assembler, linker and debugger. In fact we have to
implement some of our tricks in the linker and assembler in order to allow mix
of C and assembly projects. If your users only want to use C, then you can
probably use a lot more of the analysis capabilities of LLVM than what we use. </span></font></p>

<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;">Our ABI and model of code generation is
probably far from what you need, but you may find some tricks in our port that
can be useful to you as well.</span></font></p>

<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;"> </span></font></p>

<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;">Regards</span></font></p>

<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;">Ali</span></font></p>

<p class="MsoNormal"><font color="navy" face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial; color: navy;"> </span></font></p>

<div>

<div class="MsoNormal" style="text-align: center;" align="center"><font face="Times New Roman" size="3"><span style="font-size: 12pt;">

<hr align="center" size="2" width="100%">

</span></font></div>

<p class="MsoNormal"><b><font face="Tahoma" size="2"><span style="font-size: 10pt; font-family: Tahoma; font-weight: bold;">From:</span></font></b><font face="Tahoma" size="2"><span style="font-size: 10pt; font-family: Tahoma;">
<a href="mailto:llvmdev-bounces@cs.uiuc.edu" target="_blank">llvmdev-bounces@cs.uiuc.edu</a> [mailto:<a href="mailto:llvmdev-bounces@cs.uiuc.edu" target="_blank">llvmdev-bounces@cs.uiuc.edu</a>] <b><span style="font-weight: bold;">On Behalf Of </span></b>Guillaume Deroire<br>

<b><span style="font-weight: bold;">Sent:</span></b> Monday, November 23, 2009
6:46 AM<br>
<b><span style="font-weight: bold;">To:</span></b> LLVM Developers Mailing List<br>
<b><span style="font-weight: bold;">Subject:</span></b> [LLVMdev] New 8bit micro
controller back-end</span></font></p>

</div><div><div></div><div class="h5">

<p class="MsoNormal"><font face="Times New Roman" size="3"><span style="font-size: 12pt;"> </span></font></p>

<p class="MsoNormal" style="margin-bottom: 12pt;"><font face="Times New Roman" size="3"><span style="font-size: 12pt;">Hi all,<br>
<br>
I'm new to LLVM dev mailling list and I'm starting to discover some aspects of
LLVM.<br>
<br>
Actually I'm looking for a solution to create a tool chain for my own chip (a
8bit micro controller processor) that include a compiler/linker/assembler
toolset and a simulator/debugger.<br>
<br>
>From what I've read, LLVM is a good tool to implement a compiler for this
proprietary platform, but I have the following questions:<br>
- Is there estimation (from your experiences) of the work required to implement
a backend for a simple 8bits micro controller architecture (1 men-month, 10 or
100 ?)<br>
- Is it possible to create a debugger/simulator (at C and assembler level) with
LLVM ?<br>
<br>
Thanks for your help and advices<br>
<br>
Regards<br>
<br>
Guillaume</span></font></p>

</div></div></div>

</div>


<br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br></blockquote></div><br>