[LLVMdev] how to compile asm output for x86 with Micorsoft's ML

Jim Crafton jim.crafton at gmail.com
Fri Jan 22 06:09:26 PST 2010


It would be nice to be able to use clang/llvm without GNU toolchain
dependencies. Just out of curioisty what does the
--x86-asm-syntax=intel actually mean then? Does this not get used? Is
this a different syntax than the AT&T variety (forgive me if this is
an obvious question)?

I tried downloading FASM last night and it seemed handle some of the
output, the one thing it didn't like was the string variable. It
complained about

	mov	DWORD PTR [ESP], ($_.str)

something about "$_.str" wasn't kosher.

On Thu, Jan 21, 2010 at 5:56 PM, Chris Lattner <clattner at apple.com> wrote:
>
> On Jan 21, 2010, at 2:01 PM, Jim Crafton wrote:
>
>>> Nope, llvm's .s output is only compatible with GAS and other at&t syntax
>>> assemblers.  It turns out that MASM syntax is highly ambiguous and MASM
>>> is
>>> not production quality for use by a compiler.  This is why visual studio
>>> doesn't go through it.  Long term, we'd like LLVM to be able to write out
>>> .o
>>> files directly, if you're interested in adding PECOFF support, that would
>>> be
>>> very nice :)

Regarding the pecoff support - FASM comes with complete source and
what appears to be a BSD license. It outputs to pecoff. Assuming the
FASM code is readable and reasonably understandable, could this code
be used as a starting point for adding pecoff support? Isn't it the
case that when llvm gets to this phase, all the optimizations have
been done, everything else is complete, the only thing left is just
outputting to assembly or some other format right? Perhaps I'm being
hopelessly optimistic, but if that were the case that doesn't sound
like it would be that hard. Of course what do I know? :)

Cheers

Jim




More information about the llvm-dev mailing list