From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.byosoft.com.cn (mail.byosoft.com.cn [58.240.74.242]) by mx.groups.io with SMTP id smtpd.web09.2063.1613618678928902250 for ; Wed, 17 Feb 2021 19:24:40 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=none, err=permanent DNS error (domain: byosoft.com.cn, ip: 58.240.74.242, mailfrom: gaoliming@byosoft.com.cn) Received: from DESKTOPS6D0PVI ([58.246.60.130]) (envelope-sender ) by 192.168.6.13 with ESMTP for ; Thu, 18 Feb 2021 11:24:33 +0800 X-WM-Sender: gaoliming@byosoft.com.cn X-Originating-IP: 58.246.60.130 X-WM-AuthFlag: YES X-WM-AuthUser: gaoliming@byosoft.com.cn From: "gaoliming" To: "'Ray Ni'" , Cc: "'Michael D Kinney'" , "'Zhiguang Liu'" References: <20210209141634.1999-1-ray.ni@intel.com> <20210209141634.1999-3-ray.ni@intel.com> In-Reply-To: <20210209141634.1999-3-ray.ni@intel.com> Subject: =?UTF-8?B?5Zue5aSNOiBbUEFUQ0ggdjMgMi80XSBNZGVQa2cvTmFzbS5pbmM6IGFkZCBtYWNyb3MgZm9yIEMgdHlwZXMgdXNlZCBpbiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbg==?= Date: Thu, 18 Feb 2021 11:24:35 +0800 Message-ID: <000b01d705a5$9507fb70$bf17f250$@byosoft.com.cn> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQGFjSIuVfwwHFrehekPBQRaJZKjTwHqPfWfqvDe6zA= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: quoted-printable Content-Language: zh-cn Reviewed-by: Liming Gao > -----=D3=CA=BC=FE=D4=AD=BC=FE----- > =B7=A2=BC=FE=C8=CB: Ray Ni > =B7=A2=CB=CD=CA=B1=BC=E4: 2021=C4=EA2=D4=C29=C8=D5 22:17 > =CA=D5=BC=FE=C8=CB: devel@edk2.groups.io > =B3=AD=CB=CD: Michael D Kinney ; Liming = Gao > ; Zhiguang Liu > =D6=F7=CC=E2: [PATCH v3 2/4] MdePkg/Nasm.inc: add macros for C types = used in > structure definition >=20 > Signed-off-by: Ray Ni > Cc: Michael D Kinney > Cc: Liming Gao > Cc: Zhiguang Liu > --- > MdePkg/Include/Ia32/Nasm.inc | 38 > ++++++++++++++++++++++++++++++++++++ > MdePkg/Include/X64/Nasm.inc | 38 > ++++++++++++++++++++++++++++++++++++ > 2 files changed, 76 insertions(+) >=20 > diff --git a/MdePkg/Include/Ia32/Nasm.inc > b/MdePkg/Include/Ia32/Nasm.inc > index 31ce861f1e..017fe5ffd8 100644 > --- a/MdePkg/Include/Ia32/Nasm.inc > +++ b/MdePkg/Include/Ia32/Nasm.inc > @@ -20,3 +20,41 @@ > %macro INCSSP_EAX 0 >=20 > DB 0xF3, 0x0F, 0xAE, 0xE8 >=20 > %endmacro >=20 > + >=20 > +; NASM provides built-in macros STRUC and ENDSTRUC for structure > definition. >=20 > +; For example, to define a structure called mytype containing a = longword, >=20 > +; a word, a byte and a string of bytes, you might code >=20 > +; >=20 > +; struc mytype >=20 > +; >=20 > +; mt_long: resd 1 >=20 > +; mt_word: resw 1 >=20 > +; mt_byte: resb 1 >=20 > +; mt_str: resb 32 >=20 > +; >=20 > +; endstruc >=20 > +; >=20 > +; Below macros are help to map the C types and the RESB family of > pseudo-instructions. >=20 > +; So that the above structure definition can be coded as >=20 > +; >=20 > +; struc mytype >=20 > +; >=20 > +; mt_long: CTYPE_UINT32 1 >=20 > +; mt_word: CTYPE_UINT16 1 >=20 > +; mt_byte: CTYPE_UINT8 1 >=20 > +; mt_str: CTYPE_CHAR8 32 >=20 > +; >=20 > +; endstruc >=20 > +%define CTYPE_UINT64 resq >=20 > +%define CTYPE_INT64 resq >=20 > +%define CTYPE_UINT32 resd >=20 > +%define CTYPE_INT32 resd >=20 > +%define CTYPE_UINT16 resw >=20 > +%define CTYPE_INT16 resw >=20 > +%define CTYPE_BOOLEAN resb >=20 > +%define CTYPE_UINT8 resb >=20 > +%define CTYPE_CHAR8 resb >=20 > +%define CTYPE_INT8 resb >=20 > + >=20 > +%define CTYPE_UINTN resd >=20 > +%define CTYPE_INTN resd >=20 > diff --git a/MdePkg/Include/X64/Nasm.inc b/MdePkg/Include/X64/Nasm.inc > index 42412735ea..b48d8680bb 100644 > --- a/MdePkg/Include/X64/Nasm.inc > +++ b/MdePkg/Include/X64/Nasm.inc > @@ -20,3 +20,41 @@ > %macro INCSSP_RAX 0 >=20 > DB 0xF3, 0x48, 0x0F, 0xAE, 0xE8 >=20 > %endmacro >=20 > + >=20 > +; NASM provides built-in macros STRUC and ENDSTRUC for structure > definition. >=20 > +; For example, to define a structure called mytype containing a = longword, >=20 > +; a word, a byte and a string of bytes, you might code >=20 > +; >=20 > +; struc mytype >=20 > +; >=20 > +; mt_long: resd 1 >=20 > +; mt_word: resw 1 >=20 > +; mt_byte: resb 1 >=20 > +; mt_str: resb 32 >=20 > +; >=20 > +; endstruc >=20 > +; >=20 > +; Below macros are help to map the C types and the RESB family of > pseudo-instructions. >=20 > +; So that the above structure definition can be coded as >=20 > +; >=20 > +; struc mytype >=20 > +; >=20 > +; mt_long: CTYPE_UINT32 1 >=20 > +; mt_word: CTYPE_UINT16 1 >=20 > +; mt_byte: CTYPE_UINT8 1 >=20 > +; mt_str: CTYPE_CHAR8 32 >=20 > +; >=20 > +; endstruc >=20 > +%define CTYPE_UINT64 resq >=20 > +%define CTYPE_INT64 resq >=20 > +%define CTYPE_UINT32 resd >=20 > +%define CTYPE_INT32 resd >=20 > +%define CTYPE_UINT16 resw >=20 > +%define CTYPE_INT16 resw >=20 > +%define CTYPE_BOOLEAN resb >=20 > +%define CTYPE_UINT8 resb >=20 > +%define CTYPE_CHAR8 resb >=20 > +%define CTYPE_INT8 resb >=20 > + >=20 > +%define CTYPE_UINTN resq >=20 > +%define CTYPE_INTN resq >=20 > -- > 2.27.0.windows.1