[LLVMdev] GCC assembler rejects native code generated by LLVM
Vyacheslav Akhmechet
coffeemug at gmail.com
Mon Mar 7 16:39:23 PST 2005
Ok, I got home so I have more details. Here's the sample C program:
----------------- C program ---------------
#include <stdio.h>
int main() {
printf("hello world\n");
return 0;
}
------------- end C program -------------
This is compiled using llvm online demo into the following llvm code
(target removed):
----------------- LLVM code --------------
deplibs = [ "stdc++", "c", "crtend" ]
%.str_1 = internal constant [13 x sbyte] c"hello world\0A\00"; <[13 x
sbyte]*> [#uses=1]
implementation ; Functions:
declare int %printf(sbyte*, ...)
int %main() {
entry:
call void %__main( )
%tmp.0 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([13 x
sbyte]* %.str_1, int 0, int 0) ); <int> [#uses=0]
ret int 0
}
declare void %__main()
------------- End LLVM code -----------
which in turn produces the following assembly code:
------------- Assembly code -------------
.text
.align 16
.globl main
.type main, @function
main:
subl $12, %esp
fnstcw 10(%esp)
movb $2, 11(%esp)
fldcw 10(%esp)
call __main
movl $l1__2E_str_1, %eax
movl %eax, (%esp)
call printf
movl $0, %eax
#IMPLICIT_USE
addl $12, %esp
ret
.data
.align 1
.type l1__2E_str_1, at object
.size l1__2E_str_1,13
l1__2E_str_1: # [13 x sbyte]* %.str_1 = c"hello world\0A\00"
.ascii "hello world\n\000"
---------- End assembly code ----------
When I try to assemble the above code using
gcc hello.c.s -o hello.exe
I get the following errors:
hello.c.s: Assembler messages:
hello.c.s:6: Warning: .type pseudo-op used outside of .def/.endef ignored.
hello.c.s:6: Error: junk at end of line, first unrecognized character is `m'
hello.c.s:24: Warning: .type pseudo-op used outside of .def/.endef ignored.
hello.c.s:24: Error: junk at end of line, first unrecognized character is `l'
hello.c.s:25: Warning: .size pseudo-op used outside of .def/.endef ignored.
hello.c.s:25: Error: junk at end of line, first unrecognized character is `l'
Sorry for the long email. I attach all relevant files for clarity.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: hello.c.s
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20050307/09270a51/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: hello.c
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20050307/09270a51/attachment.c>
More information about the llvm-dev
mailing list