[PATCH] opcodes/i386: use '; ' as comment character for intel style disassembly

Andrew Burgess aburgess@redhat.com
Tue Aug 30 08:39:24 GMT 2022


"H.J. Lu" <hjl.tools@gmail.com> writes:

> On Sat, Aug 27, 2022 at 8:19 AM Andrew Burgess via Binutils
> <binutils@sourceware.org> wrote:
>>
>> While working on a disassembly related GDB issue I was comparing the
>> disassembly output for x86-64 in att mode and intel mode.
>>
>> I ended up trying to cut & paste some disassembly snippets from the
>> disassembler, and feed the instructions back through the assembler.
>>
>> For the att style disassembly this worked fine, but for the intel
>> style disassembly I ran into a problem as the '#' character, which is
>> used for comments in i386-dis.c was not recognised by either of the
>> intel style assemblers I have to handle (nasm and yasm).
>>
>> Searching online, every example I could find that has intel style
>> assembly syntax, used ';' for the comment character, and indeed, when
>> I switch '#' to ';', my same code assembled fine.
>
> But, ';' marks the end of instructions for GNU assembler:
>
> [hjl@gnu-efi-2 tmp]$ cat x.s
> .intel_syntax noprefix
> mov eax, edx; mov eax, edx;
> [hjl@gnu-efi-2 tmp]$ gcc -c x.s
> [hjl@gnu-efi-2 tmp]$ objdump -dw -Mintel x.o
>
> x.o:     file format elf64-x86-64
>
>
> Disassembly of section .text:
>
> 0000000000000000 <.text>:
>    0: 89 d0                mov    eax,edx
>    2: 89 d0                mov    eax,edx
> [hjl@gnu-efi-2 tmp]$

Thank you for pointing this out, I was not aware of this feature.  I
guess this patch is withdrawn then.

Thanks,
Andrew


>
>> In i386-dis.c we already have a bunch of characters that are
>> customised based on the selected syntax, see open_char, close_char,
>> separator_char, and scale_char.
>>
>> I propose to add comment_char to this list.  This will be '#' for att
>> syntax, and ';' for intel syntax.
>>
>> I've updated the gas tests to account for this change.
>
>
> -- 
> H.J.



More information about the Binutils mailing list