Reviewed-by: Liming Gao <gaolim...@byosoft.com.cn> > -----邮件原件----- > 发件人: Ray Ni <ray...@intel.com> > 发送时间: 2021年2月9日 22:17 > 收件人: devel@edk2.groups.io > 抄送: Michael D Kinney <michael.d.kin...@intel.com>; Liming Gao > <gaolim...@byosoft.com.cn>; Zhiguang Liu <zhiguang....@intel.com> > 主题: [PATCH v3 2/4] MdePkg/Nasm.inc: add macros for C types used in > structure definition > > Signed-off-by: Ray Ni <ray...@intel.com> > Cc: Michael D Kinney <michael.d.kin...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang....@intel.com> > --- > MdePkg/Include/Ia32/Nasm.inc | 38 > ++++++++++++++++++++++++++++++++++++ > MdePkg/Include/X64/Nasm.inc | 38 > ++++++++++++++++++++++++++++++++++++ > 2 files changed, 76 insertions(+) > > 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 > > DB 0xF3, 0x0F, 0xAE, 0xE8 > > %endmacro > > + > > +; NASM provides built-in macros STRUC and ENDSTRUC for structure > definition. > > +; For example, to define a structure called mytype containing a longword, > > +; a word, a byte and a string of bytes, you might code > > +; > > +; struc mytype > > +; > > +; mt_long: resd 1 > > +; mt_word: resw 1 > > +; mt_byte: resb 1 > > +; mt_str: resb 32 > > +; > > +; endstruc > > +; > > +; Below macros are help to map the C types and the RESB family of > pseudo-instructions. > > +; So that the above structure definition can be coded as > > +; > > +; struc mytype > > +; > > +; mt_long: CTYPE_UINT32 1 > > +; mt_word: CTYPE_UINT16 1 > > +; mt_byte: CTYPE_UINT8 1 > > +; mt_str: CTYPE_CHAR8 32 > > +; > > +; endstruc > > +%define CTYPE_UINT64 resq > > +%define CTYPE_INT64 resq > > +%define CTYPE_UINT32 resd > > +%define CTYPE_INT32 resd > > +%define CTYPE_UINT16 resw > > +%define CTYPE_INT16 resw > > +%define CTYPE_BOOLEAN resb > > +%define CTYPE_UINT8 resb > > +%define CTYPE_CHAR8 resb > > +%define CTYPE_INT8 resb > > + > > +%define CTYPE_UINTN resd > > +%define CTYPE_INTN resd > > 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 > > DB 0xF3, 0x48, 0x0F, 0xAE, 0xE8 > > %endmacro > > + > > +; NASM provides built-in macros STRUC and ENDSTRUC for structure > definition. > > +; For example, to define a structure called mytype containing a longword, > > +; a word, a byte and a string of bytes, you might code > > +; > > +; struc mytype > > +; > > +; mt_long: resd 1 > > +; mt_word: resw 1 > > +; mt_byte: resb 1 > > +; mt_str: resb 32 > > +; > > +; endstruc > > +; > > +; Below macros are help to map the C types and the RESB family of > pseudo-instructions. > > +; So that the above structure definition can be coded as > > +; > > +; struc mytype > > +; > > +; mt_long: CTYPE_UINT32 1 > > +; mt_word: CTYPE_UINT16 1 > > +; mt_byte: CTYPE_UINT8 1 > > +; mt_str: CTYPE_CHAR8 32 > > +; > > +; endstruc > > +%define CTYPE_UINT64 resq > > +%define CTYPE_INT64 resq > > +%define CTYPE_UINT32 resd > > +%define CTYPE_INT32 resd > > +%define CTYPE_UINT16 resw > > +%define CTYPE_INT16 resw > > +%define CTYPE_BOOLEAN resb > > +%define CTYPE_UINT8 resb > > +%define CTYPE_CHAR8 resb > > +%define CTYPE_INT8 resb > > + > > +%define CTYPE_UINTN resq > > +%define CTYPE_INTN resq > > -- > 2.27.0.windows.1
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#71765): https://edk2.groups.io/g/devel/message/71765 Mute This Topic: https://groups.io/mt/80721940/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-