[LLVMdev] x86 Intel Syntax and MASM 9.x

Gaster, Benedict Benedict.Gaster at amd.com
Tue Jun 16 09:39:29 PDT 2009

Hi Eli,

Yep I was being stupid.

Please find attached a patch for initial changes to get MASM working.

There is still one problem that I am looking into around changing
alignments within SEGMENTS. The problem is that MASM allows 2,4,16,256
alignments, default being 16, but LLVM is sometimes generating 32
alignment, for example, consider the following code: 

float bar(float fy, float fx)
  static const double foo[  241] = {

Is generating the data segment:

_data   segment PARA 'DATA'
__2E_str:                               ; .str
        db 'out',0
__2E_str1:                              ; .str1
        db 'in',0
        public ___some_other_sruct_data
        ALIGN   4
___some_other_sruct_data:               ; 
       dd      7                       ; 0x7
       dd      3                       ; 0x3
       dd      __2E_str
       db      12 dup(0)
       dd      7                       ; 0x7
       dd      3                       ; 0x3
       dd      __2E_str1
       db      12 dup(0)
       db      12 dup(0)
sgv:                           ; sgv
       db      1 dup(0)
       ALIGN   4
lvgv:                          ; lvgv
       ALIGN   32
foo:                           ; 
        dq      4589156319577832937     ; double value: 6.241881e-002
        dq      4589442480094401190     ; double value: 6.630889e-002

MASM reports the following error:

error A2189:invalid combination with segment alignment : 32



-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
On Behalf Of Eli Friedman
Sent: Tuesday, June 16, 2009 12:10 AM
To: LLVM Developers Mailing List
Subject: Re: [LLVMdev] x86 Intel Syntax and MASM 9.x

On Mon, Jun 15, 2009 at 11:21 PM, Gaster,
Benedict<Benedict.Gaster at amd.com> wrote:
> I can get this two work with additional changes to X86InstrInfocpp but
> the problem I have with this approach is that it introduces a lot of
> duplication, when all I really want to do is parameterize the final
> field in the string "shl{b}\t{%cl, $dst|$dst, %CL}". I was wondering
> (hoping :-) if you knew of a better method to handling this?

I think you're missing the whole point of the "|" construct; the left
side is AT&T syntax, the right side is Intel syntax.

LLVM Developers mailing list
LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu

-------------- next part --------------
A non-text attachment was scrubbed...
Name: masm.patch
Type: application/octet-stream
Size: 15767 bytes
Desc: masm.patch
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090616/691a2731/attachment.obj>

More information about the llvm-dev mailing list