Hi Michael,> Thank you very much for your help. I have a few more questions if you have a moment... > > * Are there executables available for windows?I think so, but since I don't use windows I can't say for sure.> * Is the source code for the interpreter available, and if so, what is/are the filename(s)?Sure, all source code is available: this is an open source project! Do you really mean the interpreter? You seemed more interested in the C backend. In any case, you can find source code here: http://llvm.org/releases/ For the 2.3 release: http://llvm.org/releases/download.html#2.3> * Is there an IDE available?LLVM is not a compiler. It is used by various compilers such as llvm-gcc and clang. One of those might have an IDE, but I wouldn't know since I never use IDE's myself. Ciao, Duncan. PS: Please don't send messages just to me: CC to mailing list too. That way others can answer you too, and the discussion is recorded in the archives where others with the same questions can find it.
Hi Duncan, Thanks again for your reply. Yes, I am interested in the interpreter, but perhaps I misunderstand what LLVM is... My assumption has been that LLVM generates machine code for a virtual machine, and that you supply an interpreter that will execute the code. I'm interested in this from an educational standpoint. What I'd like is a C/C++ compiler that generates machine code for a virtual software machine. Ideally the machine would support interrupts, timers, DMA controllers, etc.. I know that your interpreter does not, but I thought I might add these peripherals in. If you have any suggestions I'd appreciate hearing them. I know about the various PC emulators like BOCHS, but they're doing a lot more than I need. Thanks, M. McDonnell --- On Sat, 10/11/08, Duncan Sands <baldrick at free.fr> wrote: From: Duncan Sands <baldrick at free.fr> Subject: Re: [LLVMdev] C++ to C? To: michaeldmcdonnell at yahoo.com Cc: llvmdev at cs.uiuc.edu Date: Saturday, October 11, 2008, 12:25 PM Hi Michael,> Thank you very much for your help. I have a few more questions if you havea moment...> > * Are there executables available for windows?I think so, but since I don't use windows I can't say for sure.> * Is the source code for the interpreter available, and if so, what is/arethe filename(s)? Sure, all source code is available: this is an open source project! Do you really mean the interpreter? You seemed more interested in the C backend. In any case, you can find source code here: http://llvm.org/releases/ For the 2.3 release: http://llvm.org/releases/download.html#2.3> * Is there an IDE available?LLVM is not a compiler. It is used by various compilers such as llvm-gcc and clang. One of those might have an IDE, but I wouldn't know since I never use IDE's myself. Ciao, Duncan. PS: Please don't send messages just to me: CC to mailing list too. That way others can answer you too, and the discussion is recorded in the archives where others with the same questions can find it. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20081011/abe7a166/attachment.html>
On 2008-10-11 22:44, Michael McDonnell wrote:> Hi Duncan, > > Thanks again for your reply. > > Yes, I am interested in the interpreter, but perhaps I misunderstand > what LLVM is... > > My assumption has been that LLVM generates machine code for a virtual > machine, and that you supply an interpreter that will execute the code. > > I'm interested in this from an educational standpoint. What I'd like > is a C/C++ compiler that generates machine code for a virtual software > machine. Ideally the machine would support interrupts, timers, DMA > controllers, etc.. I know that your interpreter does not, but I > thought I might add these peripherals in. > > If you have any suggestions I'd appreciate hearing them. I know about > the various PC emulators like BOCHS, but they're doing a lot more than > I need. > >The term "virtual" in LLVM doesn't refer to emulating hardware, or providing a hypervisor. It simply refers to the intermediate instruction format (please correct me if I am wrong). LLVM is already capable to generate *native* machine code from C/C++ on its own. There is also a JIT and interpreter that run your program in the same process. The JIT translates to native code on the fly, and the interpreter is like a bytecode interpreter (say compare to Lua), and not an interpreter for instructions of a processor (say compare to a MIPS emulator/simulator). It is not a hypervisor, and doesn't emulate peripherals and such. Best regards, --Edwin
Hi Michael, On Sat, Oct 11, 2008 at 12:44 PM, Michael McDonnell < michaeldmcdonnell at yahoo.com> wrote:> > > My assumption has been that LLVM generates machine code for a virtual > machine, and that you supply an interpreter that will execute the code. >The name can be somewhat confusing. LLVM is a lot of things, the web page gives some important areas (http://llvm.org/). In your case it sounds like you are mainly interested in the "virtual instruction set" aspect. In this case, yes, llvm-gcc does generate "machine code" (LLVM intermediate representation (IR)) for the virtual instruction set, which lli can interpret directly. Additionally, LLVM supplies a variety of tools for working with .bc files (serialized versions of this formation), i.e. for linking, archiving, etc.> > I'm interested in this from an educational standpoint. What I'd like is a > C/C++ compiler that generates machine code for a virtual software machine. > Ideally the machine would support interrupts, timers, DMA controllers, > etc.. I know that your interpreter does not, but I thought I might add these > peripherals in. > >Using LLVM is a viable strategy for this. However, it is a question of how much support you are expecting. The main benefit you are getting is precise semantics for LLVM IR and the tool chain for working with .bc files. This allows you to avoid dealing with many nitty particulars of x86 (assuming that is your target). On the other hand, the current interpreter makes no pretense of running on a "virtual machine", so if this is your goal you will need to build those facilities yourself. Finally, using LLVM IR directly may pose some issues depending on what level of precision you want. Since a significant amount of work is done in code generation for the particular target, the actual x86 instructions which are generated may access memory "differently" than your interpretation of the LLVM IR would; generally this would be because the source code didn't constrain things appropriately (volatile) but it is something to be cognizant of. - Daniel If you have any suggestions I'd appreciate hearing them. I know about the> various PC emulators like BOCHS, but they're doing a lot more than I need. > > Thanks, > M. McDonnell > > --- On *Sat, 10/11/08, Duncan Sands <baldrick at free.fr>* wrote: > > From: Duncan Sands <baldrick at free.fr> > Subject: Re: [LLVMdev] C++ to C? > To: michaeldmcdonnell at yahoo.com > Cc: llvmdev at cs.uiuc.edu > Date: Saturday, October 11, 2008, 12:25 PM > > Hi Michael, > > > Thank you very much for your help. I have a few more questions if you have > a moment... > > > > * Are there executables available for windows? > > I think so, but since I don't use windows I can't say for sure. > > > * Is the source code for the interpreter available, and if so, what is/are > the filename(s)? > > Sure, all source code is available: this is an open source project! > Do you really mean the interpreter? You seemed more interested in > the C backend. In any case, you can find source code here: > http://llvm.org/releases/ > For the 2.3 release: > http://llvm.org/releases/download.html#2.3 > > > * Is there an IDE available? > > LLVM is not a compiler. It is used by various compilers such > as llvm-gcc and clang. One of those might have an IDE, but I > wouldn't know since I never use IDE's myself. > > Ciao, > > Duncan. > > PS: Please don't send messages just to me: CC to mailing > list too. That way others can answer you too, and the > discussion is recorded in the archives where others with > the same questions can find it. > > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20081011/a280e63d/attachment.html>