[LLVMdev] Hello World assembly without clib "puts"?
David Chisnall
David.Chisnall at cl.cam.ac.uk
Sun Sep 30 00:26:43 PDT 2012
On 30 Sep 2012, at 01:05, Andrew Pennebaker wrote:
> Can Hello World be written in LLVM assembly without using a C library function like "puts"?
LLVM IR models a general-purpose unprivileged CPU instruction set and so lacks anything to do I/O. If you want to interact with anything beyond the CPU and stack, you must either call a library function, issue a system call, or modify some of the target directly. This basically means either calling a libc function (possibly indirectly) or writing some inline assembly.
For example, on UNIX-like platforms puts() is typically implemented by a call to strlen() to calculate the length and then a write system call with the standard output file descriptor (number 1, traditionally). The details of a system call are implementation dependent, however you could write a small bit of inline assembly that would issue a write system call and then use this from LLVM IR.
The more important question is: why would you want to do that? What problem are you trying to solve?
David
More information about the llvm-dev
mailing list