On 18.01.2024 06:34, LIU Hao wrote: > My complete proposal can be found at > <https://github.com/lhmouse/mcfgthread/wiki/Formalized-Intel-Syntax-for-x86>. > Some ideas actually > reflect the AT&T syntax. I hope it helps.
I'm sorry, but most of your proposal may even be considered for being acceptable only if you would gain buy-off from the MASM guys. Anything MASM treats as valid ought to be permitted by gas as well (within the scope of certain divergence that cannot be changed in gas without risking to break people's code). It could probably be considered to introduce a "strict" mode of Intel syntax, following some / most of what you propose; making this the default cannot be an option. Commenting on individual aspects of your proposal is a little difficult, as you didn't provide the proposal inline (and hence it cannot be easily used as context in a reply). But to mention the imo worst aspect: Declaring mov eax, [rcx] as invalid is a no-go. I also don't see how this would be related to the issue at hand. What's in the square brackets may as well be a symbol name, so requiring the "mode specifier" doesn't disambiguate things at all. Otoh the "offset" part of point 3 may be possible to accept even by default, provided (didn't check) that current gas consistently rejects that (as an invalid use of a register name). One remark regarding the underlying pattern leading to the issue: Personally I view it as questionable practice to have extern or static variables in C code with names as short as register names are. Avoiding them does not only avoid the issue here, but also is quite likely going to improve the code (by having more descriptive variable names). And automatic variables aren't affected aiui, so can remain short (after all, commonly automatic variable names are as short as a single char). That said, I can certainly also see how the introduction of new registers can lead to new conflicts, which isn't nice. Iirc old 32-bit MASM escaped this problem by requiring architecture extensions to be explicitly enabled (may have changed in newer MASM). Gas, otoh, enables everything by default (and I don't see how we could change that). Jan