cgi86reg.h

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 219 行

H
219
字号
/****************************************************************************
*
*                            Open Watcom Project
*
*    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
*  ========================================================================
*
*    This file contains Original Code and/or Modifications of Original
*    Code as defined in and that are subject to the Sybase Open Watcom
*    Public License version 1.0 (the 'License'). You may not use this file
*    except in compliance with the License. BY USING THIS FILE YOU AGREE TO
*    ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
*    provided with the Original Code and Modifications, and is also
*    available at www.sybase.com/developer/opensource.
*
*    The Original Code and all software distributed under the License are
*    distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
*    EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
*    ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
*    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
*    NON-INFRINGEMENT. Please see the License for the specific language
*    governing rights and limitations under the License.
*
*  ========================================================================
*
* Description:  WHEN YOU FIGURE OUT WHAT THIS FILE DOES, PLEASE
*               DESCRIBE IT HERE!
*
****************************************************************************/


#ifndef HWREG_INCLUDED
#define HWREG_INCLUDED

#include "cghwreg.h"

/*       Target dependent set of hardware registers available */

HW_DEFINE_SIMPLE( HW_AH,     0x0001U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_AL,     0x0002U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_BH,     0x0004U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_BL,     0x0008U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_CH,     0x0010U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_CL,     0x0020U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_DH,     0x0040U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_DL,     0x0080U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_SI,     0x0100U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_DI,     0x0200U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_BP,     0x0400U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_SP,     0x0800U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_DS,     0x1000U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_ES,     0x2000U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_CS,     0x4000U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_SS,     0x8000U, 0x0000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_ST0,    0x0000U, 0x0001U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_ST1,    0x0000U, 0x0002U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_ST2,    0x0000U, 0x0004U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_ST3,    0x0000U, 0x0008U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_ST4,    0x0000U, 0x0010U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_ST5,    0x0000U, 0x0020U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_ST6,    0x0000U, 0x0040U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_ST7,    0x0000U, 0x0080U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_EAXH,   0x0000U, 0x0100U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_EBXH,   0x0000U, 0x0200U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_ECXH,   0x0000U, 0x0400U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_EDXH,   0x0000U, 0x0800U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_ESIH,   0x0000U, 0x1000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_EDIH,   0x0000U, 0x2000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_FS,     0x0000U, 0x4000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_GS,     0x0000U, 0x8000U, 0x0000U, 0x0000U );
HW_DEFINE_SIMPLE( HW_FULL,   0xffffU, 0xffffU, 0xffffU, 0xffffU );
HW_DEFINE_SIMPLE( HW_UNUSED, 0x0000U, 0x0000U, 0xffffU, 0xffffU );
HW_DEFINE_SIMPLE( HW_EMPTY,  0x0000U, 0x0000U, 0x0000U, 0x0000U );


#define HW_DEFINE_COMPOUND( x ) \
enum {                                                                        \
                                                                              \
HW_AX_##x    = (hw_reg_part)(HW_AL_##x+HW_AH_##x),                       \
HW_BX_##x    = (hw_reg_part)(HW_BL_##x+HW_BH_##x),                       \
HW_CX_##x    = (hw_reg_part)(HW_CL_##x+HW_CH_##x),                       \
HW_DX_##x    = (hw_reg_part)(HW_DL_##x+HW_DH_##x),                       \
                                                                              \
                                                                              \
HW_EAX_##x   = (hw_reg_part)(HW_EAXH_##x+HW_AX_##x),                     \
HW_EBX_##x   = (hw_reg_part)(HW_EBXH_##x+HW_BX_##x),                     \
HW_ECX_##x   = (hw_reg_part)(HW_ECXH_##x+HW_CX_##x),                     \
HW_EDX_##x   = (hw_reg_part)(HW_EDXH_##x+HW_DX_##x),                     \
HW_ESI_##x   = (hw_reg_part)(HW_ESIH_##x+HW_SI_##x),                     \
HW_EDI_##x   = (hw_reg_part)(HW_EDIH_##x+HW_DI_##x),                     \
                                                                              \
HW_ABCD_##x  = (hw_reg_part)(HW_AX_##x+HW_BX_##x                         \
               +HW_CX_##x+HW_DX_##x),                                         \
                                                                              \
HW_SDSB_##x  = (hw_reg_part)(HW_SI_##x+HW_DI_##x                         \
               +HW_SP_##x+HW_BP_##x),                                         \
                                                                              \
HW_SEGS_##x  = (hw_reg_part)(HW_DS_##x+HW_ES_##x+HW_CS_##x               \
               +HW_SS_##x+HW_FS_##x+HW_GS_##x),                               \
                                                                              \
HW_IDX16_##x  = (hw_reg_part)(HW_SI_##x+HW_DI_##x+HW_BX_##x),            \
                                                                              \
HW_FLTS_##x  = (hw_reg_part)(HW_ST0_##x+HW_ST1_##x                       \
               +HW_ST2_##x+HW_ST3_##x                                         \
               +HW_ST4_##x+HW_ST5_##x+HW_ST6_##x+HW_ST7_##x),                 \
                                                                              \
HW_FLTS_NOT_ST0_##x  = (hw_reg_part)(HW_ST1_##x                          \
               +HW_ST2_##x+HW_ST3_##x                                         \
               +HW_ST4_##x+HW_ST5_##x+HW_ST6_##x+HW_ST7_##x),                 \
                                                                              \
HW_32_##x    = (hw_reg_part)(HW_EAXH_##x+HW_EBXH_##x                     \
               +HW_ECXH_##x+HW_EDXH_##x+HW_ESIH_##x+HW_EDIH_##x),             \
                                                                              \
HW_DX_AX_##x   = (hw_reg_part)(HW_DX_##x+HW_AX_##x),                     \
HW_CX_BX_##x   = (hw_reg_part)(HW_CX_##x+HW_BX_##x),                     \
HW_CX_DI_##x   = (hw_reg_part)(HW_CX_##x+HW_DI_##x),                     \
HW_BX_SI_##x   = (hw_reg_part)(HW_BX_##x+HW_SI_##x),                     \
HW_BX_DI_##x   = (hw_reg_part)(HW_BX_##x+HW_DI_##x),                     \
HW_BP_SI_##x   = (hw_reg_part)(HW_BP_##x+HW_SI_##x),                     \
HW_BP_DI_##x   = (hw_reg_part)(HW_BP_##x+HW_DI_##x),                     \
HW_DS_BX_##x   = (hw_reg_part)(HW_DS_##x+HW_BX_##x),                     \
HW_DS_SI_##x   = (hw_reg_part)(HW_DS_##x+HW_SI_##x),                     \
HW_DS_ESI_##x  = (hw_reg_part)(HW_DS_##x+HW_ESI_##x),                    \
HW_DS_DI_##x   = (hw_reg_part)(HW_DS_##x+HW_DI_##x),                     \
HW_SS_BX_##x   = (hw_reg_part)(HW_SS_##x+HW_BX_##x),                     \
HW_SS_SI_##x   = (hw_reg_part)(HW_SS_##x+HW_SI_##x),                     \
HW_SS_DI_##x   = (hw_reg_part)(HW_SS_##x+HW_DI_##x),                     \
HW_ES_BX_##x   = (hw_reg_part)(HW_ES_##x+HW_BX_##x),                     \
HW_ES_SI_##x   = (hw_reg_part)(HW_ES_##x+HW_SI_##x),                     \
HW_ES_DI_##x   = (hw_reg_part)(HW_ES_##x+HW_DI_##x),                     \
HW_ES_EDI_##x  = (hw_reg_part)(HW_ES_##x+HW_EDI_##x),                    \
HW_ECX_ESI_##x = (hw_reg_part)(HW_ECX_##x+HW_ESI_##x),                   \
HW_ECX_EDI_##x = (hw_reg_part)(HW_ECX_##x+HW_EDI_##x),                   \
HW_CS_EDI_##x  = (hw_reg_part)(HW_CS_##x+HW_EDI_##x),                    \
HW_FS_GS_##x   = (hw_reg_part)(HW_FS_##x+HW_GS_##x),                     \
HW_DS_GS_##x   = (hw_reg_part)(HW_DS_##x+HW_GS_##x),                     \
HW_ECX_EBX_##x = (hw_reg_part)(HW_ECX_##x+HW_EBX_##x),                   \
HW_32_BP_SP_##x= (hw_reg_part)(HW_32_##x+HW_BP_##x+HW_SP_##x),           \
HW_DS_ES_FS_GS_##x = (hw_reg_part)(HW_DS_##x+HW_ES_##x+                  \
                                        HW_FS_##x+HW_GS_##x),                 \
HW_DS_ES_SS_CS_##x = (hw_reg_part)(HW_DS_##x+HW_ES_##x+                  \
                                        HW_SS_##x+HW_CS_##x),                 \
HW_AL_BL_CL_DL_##x = (hw_reg_part)(HW_AL_##x+HW_BL_##x+                  \
                                        HW_CL_##x+HW_DL_##x),                 \
HW_AH_BH_CH_DH_##x = (hw_reg_part)(HW_AH_##x+HW_BH_##x+                  \
                                        HW_CH_##x+HW_DH_##x),                 \
HW_AX_BX_CX_DX_SI_DI_##x = (hw_reg_part)(HW_AX_##x+HW_BX_##x             \
                       +HW_CX_##x+HW_DX_##x+HW_SI_##x+HW_DI_##x),   \
                                                                              \
HW__COMPOUND_END_##x                                                          \
}

HW_ITER( HW_DEFINE_COMPOUND );

#if !defined( BY_C_FRONT_END ) && !defined( BY_CPP_FRONT_END ) \
  && !defined( BY_FORTRAN_FRONT_END )
HW_DEFINE_GLOBAL_CONST( HW_EMPTY );
HW_DEFINE_GLOBAL_CONST( HW_DS );
HW_DEFINE_GLOBAL_CONST( HW_DS_ESI );
HW_DEFINE_GLOBAL_CONST( HW_DS_SI );
HW_DEFINE_GLOBAL_CONST( HW_DS_DI );
HW_DEFINE_GLOBAL_CONST( HW_DS_BX );
HW_DEFINE_GLOBAL_CONST( HW_SS );
HW_DEFINE_GLOBAL_CONST( HW_SS_SI );
HW_DEFINE_GLOBAL_CONST( HW_SS_DI );
HW_DEFINE_GLOBAL_CONST( HW_SS_BX );
HW_DEFINE_GLOBAL_CONST( HW_ES );
HW_DEFINE_GLOBAL_CONST( HW_ES_SI );
HW_DEFINE_GLOBAL_CONST( HW_ES_EDI );
HW_DEFINE_GLOBAL_CONST( HW_ES_DI );
HW_DEFINE_GLOBAL_CONST( HW_ES_BX );
HW_DEFINE_GLOBAL_CONST( HW_FS );
HW_DEFINE_GLOBAL_CONST( HW_GS );
HW_DEFINE_GLOBAL_CONST( HW_CS );
HW_DEFINE_GLOBAL_CONST( HW_SP );
HW_DEFINE_GLOBAL_CONST( HW_BP );
HW_DEFINE_GLOBAL_CONST( HW_EAX );
HW_DEFINE_GLOBAL_CONST( HW_AX );
HW_DEFINE_GLOBAL_CONST( HW_AL );
HW_DEFINE_GLOBAL_CONST( HW_AH );
HW_DEFINE_GLOBAL_CONST( HW_ECX );
HW_DEFINE_GLOBAL_CONST( HW_CX );
HW_DEFINE_GLOBAL_CONST( HW_CL );
HW_DEFINE_GLOBAL_CONST( HW_CH );
HW_DEFINE_GLOBAL_CONST( HW_EDX );
HW_DEFINE_GLOBAL_CONST( HW_DX );
HW_DEFINE_GLOBAL_CONST( HW_DL );
HW_DEFINE_GLOBAL_CONST( HW_DH );
HW_DEFINE_GLOBAL_CONST( HW_EBX );
HW_DEFINE_GLOBAL_CONST( HW_BX );
HW_DEFINE_GLOBAL_CONST( HW_BL );
HW_DEFINE_GLOBAL_CONST( HW_BH );
HW_DEFINE_GLOBAL_CONST( HW_ESI );
HW_DEFINE_GLOBAL_CONST( HW_BP_DI );
HW_DEFINE_GLOBAL_CONST( HW_CX_DI );
HW_DEFINE_GLOBAL_CONST( HW_SI );
HW_DEFINE_GLOBAL_CONST( HW_EDI );
HW_DEFINE_GLOBAL_CONST( HW_BP_SI );
HW_DEFINE_GLOBAL_CONST( HW_DI );
HW_DEFINE_GLOBAL_CONST( HW_ST0 );
HW_DEFINE_GLOBAL_CONST( HW_ST1 );
HW_DEFINE_GLOBAL_CONST( HW_ST2 );
HW_DEFINE_GLOBAL_CONST( HW_ST3 );
HW_DEFINE_GLOBAL_CONST( HW_ST4 );
HW_DEFINE_GLOBAL_CONST( HW_ST5 );
HW_DEFINE_GLOBAL_CONST( HW_ST6 );
HW_DEFINE_GLOBAL_CONST( HW_ST7 );
#endif

#define MAX_POSSIBLE_REG        8

#endif

#define _AL     HW_AL
#define _BL     HW_BL
#define _CL     HW_CL
#define _DL     HW_DL

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?