/*++ Copyright (c) 1995 Microsoft Corporation Module Name: dwordfns.c Abstract: Instuctions which operate on 32-bit DWORDS Author: 29-Jun-1995 BarryBo Revision History: --*/ #include #include #include #include #include #include "cpuassrt.h" #include "threadst.h" #include "instr.h" #include "decoderp.h" #include "dwordfns.h" ASSERTNAME; // set up to include common functions #define GET_REG get_reg32 #define MANGLENAME(x) x ## 32 #define MSB 0x80000000 #define MOD_RM mod_rm_reg32 #define UTYPE unsigned long #define STYPE signed long #define GET_VAL GET_LONG #define PUT_VAL PUT_LONG #define PUSH_VAL PUSH_LONG #define POP_VAL POP_LONG #define OPNAME(x) OP_ ## x ## 32 #define LOCKOPNAME(x) OP_SynchLock ## x ## 32 #define DISPATCHCOMMON(fn) DISPATCH(fn ## 32) #define CALLFRAGCOMMON0(fn) CALLFRAG0( fn ## 32 ) #define CALLFRAGCOMMON1(fn, pop1) CALLFRAG1( fn ## 32 , pop1) #define CALLFRAGCOMMON2(fn, pop1, op2) CALLFRAG2( fn ## 32 , pop1, op2) #define AREG GP_EAX #define BREG GP_EBX #define CREG GP_ECX #define DREG GP_EDX #define SPREG GP_ESP #define BPREG GP_EBP #define SIREG GP_ESI #define DIREG GP_EDI #define DEREF(Op) DEREF32(Op) // include the common functions with 8/16/32 flavors #include "common.c" // include the common functions with 16/32 flavors #include "comm1632.c" // create the mod_rm_reg32() decoder function #define MOD11_RM000 GP_EAX #define MOD11_RM001 GP_ECX #define MOD11_RM010 GP_EDX #define MOD11_RM011 GP_EBX #define MOD11_RM100 GP_ESP #define MOD11_RM101 GP_EBP #define MOD11_RM110 GP_ESI #define MOD11_RM111 GP_EDI #define REG000 GP_EAX #define REG001 GP_ECX #define REG010 GP_EDX #define REG011 GP_EBX #define REG100 GP_ESP #define REG101 GP_EBP #define REG110 GP_ESI #define REG111 GP_EDI #define MOD_RM_DECODER mod_rm_reg32 #include "modrm.c"