RFC: Formalization of the Intel assembly syntax (PR53929)

LIU Hao lh_mouse@126.com
Sat Jan 20 12:40:34 GMT 2024


在 2024-01-19 17:13, Jan Beulich 写道:
> But I see a severe issue with your aim at confining strict mode to
> compiler generated code only: In inline assembly (see your mentioning of
> APP / NO_APP above) you still potentially reference C symbols. So the
> ambiguities don't disappear in APP / NO_APP regions.

My suggestion is that people who write inline assembly should have been aware of the existence of 
bad names, and should have been careful to avoid them.


> And an array happening to be indexed by rcx would then result in
> 
>      mov eax, DWORD PTR rcx[rcx]    # `movl rcx(%rcx), %eax`
> 
> ? That's going to be confusing at best. 

This is always confusing, no matter how it is written.

> I think this whole issue needs
> taking care of differently, and iirc I did already suggest an alternative
> in one of the bugzilla entries involved: Potentially ambiguous names
> (which to a compiler may mean: all symbol names) ought to simply be
> quoted, and it ought to be specified that quoted symbols are never
> registers. Iirc this will require gas changes, yes, but it'll address all
> ambiguities afaict.

The OP of GCC PR53929 said that 'the problem does _not_ go away even if I quote the symbol name by 
hand in the assembly output' which was 12 years ago. I tried my local installation and quoting the 
symbol turned out to avoid the issue:

    > as --version
    GNU assembler (GNU Binutils) 2.41.0.20240108

    > cat test.s
    .intel_syntax noprefix
    lea     rax, "bx"[rip]

    > as test.s -o test.o

    > objdump -d test.o
    test.o:     file format pe-x86-64
    (...)
       0:   48 8d 05 00 00 00 00    lea    rax,[rip+0x0]        # 7 <.text+0x7>
       7:   90                      nop


  So I think I had better try my patch in the next few days.


-- 
Best regards,
LIU Hao

-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <https://sourceware.org/pipermail/binutils/attachments/20240120/f9257f2f/attachment.sig>


More information about the Binutils mailing list