<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Nov 22, 2013 at 10:25 PM, Mikael Lyngvig <span dir="ltr"><<a href="mailto:mikael@lyngvig.org" target="_blank">mikael@lyngvig.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi guys,<div><br></div><div>I have begun writing on a new document, named "Mapping High-Level Constructs to LLVM IR", in which I hope to eventually explain how to map pretty much every contemporary high-level imperative and/or OOP language construct to LLVM IR.</div>

<div><br></div><div>I write it for two reasons:</div><div><br></div><div>1. I need to know this stuff myself to be able to continue on my own language project.<br></div><div>2. I feel that this needs to be documented once and for all, to save tons of time for everybody out there, especially for the language inventors who just want to use LLVM as a backend.</div>
</div></blockquote><div><br></div><div>We get questions like "how do I implement a string type in llvm" frequently, so something like this is probably useful.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">
<div><br></div><div>So my plan is to write this document and continue to revise and enhance it as I understand more and helpful people on the list and elsewhere explain to me how these things are done.  </div><div><br></div>

<div>Basically, I just want to know if there is any interest in such a document or if I should put it on my own website.  If you know of any books or articles that already do this, then please let me know about them.</div>

<div><br></div><div>I've attached the result of 30 minutes work, just so that you can see what I mean.  Please don't review the document as it is still in its very early infancy.<br></div></div></blockquote><div>
<br></div><div>I feel like the "lowering it to C" part is part of the typical "low level curriculum" that is unfortunately not taught anywhere really, but I feel is common knowledge among ... I'm not sure who, but I'm pretty sure that almost all LLVM developers picked it up somehow, somewhere (I honestly don't know where I did...). I would try to investigate if there is an alternative place where these things are discussed better, since I feel like this is not very LLVM-specific knowledge.</div>
<div><br></div><div>For covering this sort of thing inside the LLVM docs, the best way I can think to do so is to improve docs/tutorial/ to just add those features.</div><div><br></div><div>If you are implementing a language, a good topic for a document that you can probably help with is the following:</div>
<div>LLVM doesn't provide a "complete portable runtime environment"; you still need to know how to e.g. get access to malloc, or link with system libraries for basic functionality, etc. What sorts of "glue" work like the above does a language implementor typically have to do in order to make a runnable language?</div>
<div><br></div><div>-- Sean Silva </div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div></div><div><br></div>
<div><br></div>
<div>Cheers,</div><div>Mikael</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></div></div>