From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10olkn2034.outbound.protection.outlook.com [40.92.41.34]) by sourceware.org (Postfix) with ESMTPS id 27C8E3858C2D for ; Fri, 19 Jan 2024 08:26:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 27C8E3858C2D Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=maskray.me Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=maskray.me ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 27C8E3858C2D Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.92.41.34 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1705652771; cv=pass; b=idiaYotorTaDvcEA30GnG5wYuL0glyEW4fgmKwL1cIRbimw39m5A5hHB+2dgEdBD1C610/O/EPo50IYE0TGTw2z7u5kIdrxAHwHEREyM3oP3w0oouc2lthqczWfed2D1ONB1XEG5NhG0A5yQYLp9DAYEXm/ZdMO5ovyB7MvwT9Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1705652771; c=relaxed/simple; bh=GYaQhewNA4Azt5WmsHrI6iNjYC7biGlbcxNyC/9S/Us=; h=From:Date:Message-ID:Subject:To:MIME-Version; b=DrkwL7/wq7R5q9TsG9senFlFbhP+gTQC78mo+19H2CWI1K2WtZraVVMMfuUfpxeq+I0jmsFbSCDI7PiFTI42QNRqdnBSyCOA0p9yT2pbRzR+MOn6yZNxXIcry90ULtmAklyZi7FEQs++gK4OXad9EpJh0Gq/0N8dG/Ay1MELDZk= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nJFz1JOL3p445kPMkCwBMlq6sVsKipVrUqSioKnQ2M1dZgnhj2JSjKHPY3mdEpj4tip1HWWydxi9ltUyHyNcU/MkHJlhMb1e7wZaETecO1zAmbfL8SokoFYB8Ay+Vrj93axEO5qTuL1VUM47Mt3mIINKb9bOhGGxT4ZQxwRn1XkSfulcTVU2FfqiyFTeGomaPwEKAE/TqtEFR99DkTUEItPpX059IUN8OgV/DmxkZ7kQSM3KQflfRmQEPdZa58hukmbaSIzXgUa3fkwfrn3HPr95pEmv5sWTg3WnJhjzfqHbU0A+xO49PPBnzcl9lgYbnzyV3RUUKAgg+aNAIvSkJA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=AiyE66H3PB5M9jR1oljJXEue5Sy8DUTab/bduIDRNjA=; b=oLUrbLo6rkTldp1c3BlH5d6UzcZUNVGiYy0lZgp9pQDTjyPGZv67MeTqgBUDKBGcihJzCcCSNqaeRIAGOwbWTmTXnB1/D067W3cWRyXKJVFpgMYmXBFK5mbSWnmTB/BQeVF8JOMiLzLmFv0BDrgjR5Ob5nnUy6IO9tpz9AAJFC2udNyNJgSuPpW5/7v0FaI/ehEmLa6lg+A3EEMFHjMPZJ819Y4nn01PY18gexXm2X9OsqunutXbgxOQycKVrAq0qNkuiUK17GOVy7oRhM+6oT/pWWX9Vt/lmmW3tAFe5RJJvUiswYTT+shF6eY9x2i5YrTkioTFxS+QigQRLr2uFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from DS7PR12MB5765.namprd12.prod.outlook.com (2603:10b6:8:74::19) by DM6PR12MB4138.namprd12.prod.outlook.com (2603:10b6:5:220::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.24; Fri, 19 Jan 2024 08:26:07 +0000 Received: from DS7PR12MB5765.namprd12.prod.outlook.com ([fe80::fa25:6d58:7ae9:9c0b]) by DS7PR12MB5765.namprd12.prod.outlook.com ([fe80::fa25:6d58:7ae9:9c0b%5]) with mapi id 15.20.7202.024; Fri, 19 Jan 2024 08:26:07 +0000 X-Gm-Message-State: AOJu0YxvBZfYo1r7pMA5FMdJZrACvHTeSQuDYVY1kA2Eq2c6YjFBK827 Eos0S1S2d53ROXhNrJV+PjX5U4CNMx1ys0Fh++4L4PiDDt9Aoe6t6ZoWeZKJuwrmpXHEPe1yyoV gfcrp++YuUgxBSYgFMl/A0fTt5ic= X-Google-Smtp-Source: AGHT+IF5+BQflUN5+/I1JoOF2PEEeIu5GxA/3SLv/ibpb5sgyw8g8juLv++Cty2PncN18Edam+lh2J6mGONFhth/Tew= X-Received: by 2002:a05:6122:147:b0:4b7:51e5:b94e with SMTP id r7-20020a056122014700b004b751e5b94emr1477351vko.3.1705652381771; Fri, 19 Jan 2024 00:19:41 -0800 (PST) References: In-Reply-To: From: Fangrui Song Date: Fri, 19 Jan 2024 00:19:30 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: RFC: Formalization of the Intel assembly syntax (PR53929) To: LIU Hao Cc: binutils@sourceware.org, GCC Development Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-TMN: [2xHuNJQHBZ/0yLSwmmoTam78CnGzaoqy] X-ClientProxiedBy: SA0PR11CA0179.namprd11.prod.outlook.com (2603:10b6:806:1bb::34) To DS7PR12MB5765.namprd12.prod.outlook.com (2603:10b6:8:74::19) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS7PR12MB5765:EE_|DM6PR12MB4138:EE_ X-MS-Office365-Filtering-Correlation-Id: b8a873d7-7d40-4754-a4dc-08dc18c8487c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 673PHNIRGUnW4GW7uEjJzClTa6N30IOagPMzqFIYgk2xeMEAF6Ve0/Bp/A/+JtfhMO8MZsOrPzoarkN7kQQ0GJWAlRL8/g47ZMATa7pKWCU2NOQ+MbQY7lv/92dJWcObDJ8gkkU/a66l7k6mxCNccXY0C2b6h4UHoRu6k5QOIIFCA+9mnFehd7PCjx0duGjY0XLNoFiFp5JSvscrEL52xDzkFKOpuZZPuLNIOrLI7sLlbohrnpLOh7fhOY7N7+9QiMEsDm6PV7symQDG2Stn/dYgxN3IziFYbtHQMn+Mz6jwZupGmJ+Q4PJhEsuyRnjqouOa9+EfmBjNcuOQ5uvviwhIf2HQFIqsu7sDgGigJckPSRQRs8ZoN43OqEPcvzKINUihNFayXxMQMpKIXdwbmZCubX0xQ5CKpa7EWp4xWQ0KqM/zN2hutEr37YNJsHbUXOJMk05BtBX7bMtY4pURnKiadRJ6FlX8kD1fEnANMD5GzG+ZEbQ6sCTDdyn8nxL1EhKR9uEBCm9GrLg+O1o6scJL74nBpc3Lv06jMWUwXYUXT89k5vAc0C/mgjeEEvk2q5zO8fQ0WEQMWIbbYo/LxNVlBnYUGwFZF1JhElBMXtY= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YW1kT3FUR0I1VnJrWGJ2RnFtb05PYjNwZm9OUUZWeW9FbEdHUnBVeFppWW9s?= =?utf-8?B?VWVUZjZ0UGNXNWpZdWNMVXZDV0xCdFNqSjFIUFEzN293WTNlZHNWWGwrbUpi?= =?utf-8?B?aUtNckNSc2F0eXliNGt4ZlYyY3kwYW1YQVlmbWI0NnBCcjhHZng3RDR4NnVj?= =?utf-8?B?Si9OVTJpeS8wRWdyaHo1OWlDdzJHbDNTblpFK091ektoWkU3WGpkN1o4RGpN?= =?utf-8?B?bzJDL2hia0VvN25nTUluWThVSmJoZ2dHTGtpaWU4QkVHeG9SVW5qR3NNVXNI?= =?utf-8?B?RUFsaHpoUy9GcnRpUjNDS3Z0eEsxNkxrZmRrL0wxaTE1QTR6Z0tLb3h0WXVk?= =?utf-8?B?aVBaNHZMQ2ZBMXp1YW8wcGJMeFpwWjFhaVhJK3dqL1piZlNSNTlRekFYYkY5?= =?utf-8?B?Z0ZwOW16U2RyYW9xamJkbHl0alN6WGlCaWFRUXhNT1ArWktoMUk4NGtMbkRC?= =?utf-8?B?UCs1N3piTWttODhYczJ6ZkVtRzZwOTBRdzNLNTdOL3lEeTRyMHdJVXVBUEx4?= =?utf-8?B?K1haWW1VL3E2Z1RDdVVodlpjMlhUMzcrcEp1cUJWbGIyZmFybXVNcUFsSFNM?= =?utf-8?B?THp5RTE1VHFKYTRtWEM1T2dPSXBlMVFIT1ZoWlRjdEx4YVZ6aXNmVlNjQnRO?= =?utf-8?B?TG02cDZaNVRjWlZZNUMvTUhzRjVCaEZ3SE9ENHpOQXlXYkduY0J3TTE0R25r?= =?utf-8?B?bk14anFrb24xWDdEc2ZmcHVjeitjM24xUWZtZ05ZSWNXT2YxMUduaVRNZXFN?= =?utf-8?B?VVdROGdXS3VYTVlNUUJrSXhQV0grdGh2SGlOTkp6cXBDYVVtWDhxYVFmZWc2?= =?utf-8?B?YjB2KytHbU9OTHo3bW16MFdNdUV3M2J4MEVsNkhBcVJSa0NrL2FqRmNCT0Rk?= =?utf-8?B?Y2N1L3VJTjBhM2t4UEF1bW40THFjN1g4YzlkSE1tUHZNM3l2Vm9SY2ZFcG1U?= =?utf-8?B?MkI5Rk02UE1zM1p2Qi9iYXFCVmU1Q2hBdngxWkFEOXpad2ltbzZmR0dVYmdF?= =?utf-8?B?aVl0RGVFYVJYandQZ2hDa1RJbkF2SWc2OXNncFc4UzBJMUlvdi82WkVHUkZO?= =?utf-8?B?NlVmaUxub3lkUVBZZG5mWVFZVENvUEtYZTFoaXBUS3c2QkhSREtFRUlBRTM4?= =?utf-8?B?TzB1NlhmU3hXejFDb0RvT0FkMTFWeWtLT2c3L3JWR3M1STJHMHJZSU9wSDZj?= =?utf-8?B?SWRPRnZtdlUwSnYwUmNGc1ZpTGNZdUN3TEM2UG5VbW9Ed2x3MW4zZXpxUkIz?= =?utf-8?B?dVo3cjkxbHl3dTZoN2FySkN6WmhIVW5sR1B2ejU5bVJMay9OTjRRajh4clk5?= =?utf-8?B?ekFVR3Fva1A4cFV3YitZTnFpL2RTcHRXT3BuZDNrTTZTbCtmM2psVjhTYlZE?= =?utf-8?B?NU81YXpXMHZabVdLdkEzOGg0VTdCZldQNGNLRHh0TnBxWEFWNHltc3dqRDEx?= =?utf-8?B?RzhKMFR0cmJURzJLcFZSYnFtVEdqVlRDWUVTSG9iSm5JTEhhaUcrNUc1S2dT?= =?utf-8?B?b0FjTzk2djVsbGVINzRoZXlrSzJ3MG9meGxIMDY2UCs5VmlLcGwvM3JrZ2py?= =?utf-8?Q?VKnsFCzxwGtQQILzVrVKv7fALBwgN69f9O3FS13F2mwn98?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-5183d.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: b8a873d7-7d40-4754-a4dc-08dc18c8487c X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5765.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jan 2024 08:26:07.0149 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4138 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,KAM_DMARC_STATUS,KAM_INFOUSMEBIZ,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Thu, Jan 18, 2024 at 5:42=E2=80=AFPM LIU Hao wrote: > > =E5=9C=A8 2024-01-18 17:02, Fangrui Song =E5=86=99=E9=81=93: > > Thanks for the proposal. I hope that -masm=3Dintel becomes more useful:= ) > > > > Do you have a list of assembly in the unambiguous cases that fail to > > be parsed today as a gas PR? > > For example, > > Not really. Most of these are results from high-level languages. For exam= ple: > > # Expected: `movl shr(%rip), %eax` > # Actual: error: invalid use of operator "shr" > mov eax, DWORD PTR shr[rip] > > # Expected: `movl dword(%rip), %eax` > # Actual: accepted as `movl 4(%rip), %eax` > mov eax, DWORD ptr dword[rip] GCC seems to print a symbol displacement, possibly with a modifier (for a relocation), before the left bracket. mov edx, DWORD PTR bx@GOT[eax] mov edx, DWORD PTR bx[eax] mov edx, DWORD PTR and[eax] # Error: invalid use of operator "and" Technically, assemblers (gas and LLVM integrated assembler) can be made to parse "bx" as a symbol, even if it matches a register name or an operator name ("and"). However, a straightforward approach using one lookahead token cannot disambiguate the following two cases. mov edx, DWORD PTR fs:[eax] # segment override prefix mov edx, DWORD PTR fs[eax] # symbol So, we would need two lookahead tokens... (https://github.com/llvm/llvm-project/blob/c6a6547798ca641b985456997cdf986b= b99b0707/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp#L2534-L2550 needs more code to parse `fs:` correctly.) It is also unfortunate that whether the displacement is an immediate or not change the behavior of brackets. mov eax, DWORD PTR 0 # mov $0x0,%eax mov eax, DWORD PTR [0] # mov 0x0,%eax mov eax, DWORD PTR sym # mov 0x0,%eax with relocation mov eax, DWORD PTR [sym] # mov 0x0,%eax with relocation The above reveals yet another inconsistency. For a memory reference, it seems that we should use [] but [sym] could be ambiguous if sym matches a register name or operator name. Does the proposal change the placement of the displacement depending on whether it is an immediate? This is inconsistent, but perhaps there is not much we can improve... extern int a[2]; int foo() { return a[1]+a[2]; } GCC's PIC -masm=3Dintel output mov eax, DWORD PTR a[rip+8] add eax, DWORD PTR a[rip+4] The displacements (a+8 and a+4) involve a plus expression and `a` and `8`/`4` are printed in two places. > In addition, `as -msyntax=3Dintel -mnaked-reg` doesn't seem to be equival= ent to `.intel_syntax noprefix`: > > $ as -msyntax=3Dintel -mnaked-reg <<< 'mov eax, DWORD PTR gs:0x48' -o= a.o > {standard input}: Assembler messages: > {standard input}:1: Error: invalid use of register > > $ as <<< '.intel_syntax noprefix; mov eax, DWORD PTR gs:0x48' -o a.o= && objdump -Mintel -d a.o > ... > 0000000000000000 <.text>: > 0: 65 8b 04 25 48 00 00 mov eax,DWORD PTR gs:0x48 Confirmed by Jan.