+++ /dev/null
-/******************************************************************************
-* *
-* Module: disassemblerdefines.h *
-* *
-* Revision: 1.00 *
-* *
-* Date: 3/17/2000 *
-* *
-* Copyright (c) 2000 Goran Devic *
-* *
-* Author: Goran Devic *
-* *
-*******************************************************************************
-
- Module Description:
-
- This is a header file containing the disassembler defines that are
- used in DisassemblerData.h
-
-*******************************************************************************
-* *
-* Changes: *
-* *
-* DATE DESCRIPTION OF CHANGES AUTHOR *
-* -------- --------------------------------------------------- ----------- *
-* 4/28/2000 Original Goran Devic *
-* 11/4/2000 Modified for LinIce Goran Devic *
-* -------- --------------------------------------------------- ----------- *
-*******************************************************************************
-* Important Defines *
-******************************************************************************/
-#ifndef _DDEF_H_
-#define _DDEF_H_
-
-/******************************************************************************
-*
-* Groups and special codes in place of name index
-*
-******************************************************************************/
-#define _NDEF 0x00 // Udefined/reserved opcode
-#define _2BESC 0x01 // 2 byte escape code
-#define _S_ES 0x02 // Segment ES override | these defines
-#define _S_CS 0x03 // Segment CS override | must have
-#define _S_SS 0x04 // Segment SS override | consecutive
-#define _S_DS 0x05 // Segment DS override | enumeration
-#define _S_FS 0x06 // Segment FS override | numbers.
-#define _S_GS 0x07 // Segment GS override |
-#define _OPSIZ 0x08 // Operand size override
-#define _ADSIZ 0x09 // Address size override
-#define _REPNE 0x0A // REPNE/REPNZ prefix
-#define _REP 0x0B // REP/REPE/REPZ prefix
-#define _EscD8 0x0C // Escape to coprocessor set: prefix D8
-#define _EscD9 0x0D // Escape to coprocessor set: prefix D9
-#define _EscDA 0x0E // Escape to coprocessor set: prefix DA
-#define _EscDB 0x0F // Escape to coprocessor set: prefix DB
-#define _EscDC 0x10 // Escape to coprocessor set: prefix DC
-#define _EscDD 0x11 // Escape to coprocessor set: prefix DD
-#define _EscDE 0x12 // Escape to coprocessor set: prefix DE
-#define _EscDF 0x13 // Escape to coprocessor set: prefix DF
-#define _GRP1a 0x14 // Group 1a extended opcode
-#define _GRP1b 0x15 // Group 1b extended opcode
-#define _GRP1c 0x16 // Group 1c extended opcode
-#define _GRP2a 0x17 // Group 2a extended opcode
-#define _GRP2b 0x18 // Group 2b extended opcode
-#define _GRP2c 0x19 // Group 2c extended opcode
-#define _GRP2d 0x1A // Group 2d extended opcode
-#define _GRP2e 0x1B // Group 2e extended opcode
-#define _GRP2f 0x1C // Group 2f extended opcode
-#define _GRP3a 0x1D // Group 3a extended opcode
-#define _GRP3b 0x1E // Group 3b extended opcode
-#define _GRP4 0x1F // Group 4 extended opcode
-#define _GRP5 0x20 // Group 5 extended opcode
-#define _GRP6 0x21 // Group 6 extended opcode
-#define _GRP7 0x22 // Group 7 extended opcode
-#define _GRP8 0x23 // Group 8 extended opcode
-#define _GRP9 0x24 // Group 9 extended opcode
-
-/******************************************************************************
-*
-* Addressing modes argument definiton for the opcodes in a table
-*
-******************************************************************************/
-#define _O 0x01
-
-#define _Ib 0x03
-#define _Iv 0x04
-#define _Iw 0x05
-#define _Yb 0x06
-#define _Yv 0x07
-#define _Xb 0x08
-#define _Xv 0x09
-#define _Jb 0x0A
-#define _Jv 0x0B
-#define _Ap 0x0C
-#define _1 0x10
-#define _3 0x11
-#define _DX 0x12
-#define _AL 0x13
-#define _AH 0x14
-#define _BL 0x15
-#define _BH 0x16
-#define _CL 0x17
-#define _CH 0x18
-#define _DL 0x19
-#define _DH 0x1A
-#define _CS 0x1B
-#define _DS 0x1C
-#define _ES 0x1D
-#define _SS 0x1E
-#define _FS 0x1F
-#define _GS 0x20
-#define _eAX 0x21
-#define _eCX 0x22
-#define _eDX 0x23
-#define _eBX 0x24
-#define _eSP 0x25
-#define _eBP 0x26
-#define _eSI 0x27
-#define _eDI 0x28
-#define _Eb 0x2F
-#define _Ev 0x30
-#define _Ew 0x31
-#define _Ep 0x32
-#define _Gb 0x33
-#define _Gv 0x34
-#define _M 0x35
-#define _Ma 0x36
-#define _Mp 0x37
-#define _Ms 0x38
-#define _Mq 0x39
-#define _Rd 0x3A
-#define _Rw 0x3B
-#define _Sw 0x3C
-#define _Cd 0x3D
-#define _Dd 0x3E
-#define _Td 0x3F
-#define _ST 0x40
-#define _ST0 0x41
-#define _ST1 0x42
-#define _ST2 0x43
-#define _ST3 0x44
-#define _ST4 0x45
-#define _ST5 0x46
-#define _ST6 0x47
-#define _ST7 0x48
-#define _AX 0x49
-
-/******************************************************************************
-*
-* Define holding structure for opcode
-*
-******************************************************************************/
-
-typedef struct
-{
- UCHAR name; // Index into the opcode name table
- UCHAR args; // Number of addressing codes that follow
- UCHAR dest; // Destination operand addressing code
- UCHAR src; // Source operand addressing code
- UCHAR thrid; // Third operand addressing code
- UCHAR v_instruction; // Virtual instruction index
- UCHAR access; // Instruction data access type
- UCHAR flags; // Miscellaneous flags
-} TOpcodeData;
-
-// `access' field:
-// Data access flags are used with memory access instructions
-
-#define INSTR_READ 0x80 // Faulting instruction reads memory
-#define INSTR_WRITE 0x40 // Faulting instruction writes to memory
-#define INSTR_READ_WRITE 0x20 // Faulting instruction is read-modify-write
-
-// Low nibble contains the data length code - do not change these values as
-// they represent the data width value as well
-
-#define INSTR_BYTE 0x01 // Byte access instruction
-#define INSTR_WORD 0x02 // Word access instruction
-#define INSTR_WORD_DWORD 0x03 // Word or dword, depending on operand size
-#define INSTR_DWORD 0x04 // Dword access instruction
-
-// `flags' field:
-// Disassembler flags; bottom 4 bits are used by the scanner flags
-
-#define DIS_SPECIAL 0x80 // Special opcode
-#define DIS_NAME_FLAG 0x40 // Name changes
-#define DIS_GETNAMEFLAG(flags) (((flags)>>6)&1)
-#define DIS_COPROC 0x20 // Coprocessor instruction
-#define DIS_MODRM 0x10 // Use additional Mod R/M byte
-
-// Scanner enums: 4 bits wide
-
-#define SCAN_NATIVE 0x0 // Native instruction are default 0
-#define SCAN_JUMP 0x1 // Evaluate new path
-#define SCAN_COND_JUMP 0x2 // Evaluate both paths
-#define SCAN_TERMINATING 0x3 // Terminating instruction needs virtualization
-#define SCAN_TERM_PMODE 0x4 // Terminating instruction in protected mode only
-#define SCAN_SINGLE_STEP 0x5 // Single-step instruction
-
-// Define values stored in meta pages (bits [7:4])
-
-#define META_NATIVE 0x0 // Native instruction are default 0
-#define META_UNDEF 0x1 // Undefined/illegal instruction
-#define META_TERMINATING 0x2 // Terminating instruction
-#define META_SINGLE_STEP 0x3 // Execute natively single step
-
-/******************************************************************************
-* *
-* Define opcode values for the main table *
-* *
-******************************************************************************/
-#define _aaa 0x001
-#define _aad 0x002
-#define _aam 0x003
-#define _aas 0x004
-#define _adc 0x005
-#define _add 0x006
-#define _and 0x007
-#define _arpl 0x008
-#define _bound 0x009
-#define _bsf 0x00a
-#define _bsr 0x00b
-#define _bt 0x00c
-#define _btc 0x00d
-#define _btr 0x00e
-#define _bts 0x00f
-#define _call 0x010
-#define _cbw 0x011
-#define _cwde 0x012
-#define _clc 0x013
-#define _cld 0x014
-#define _cli 0x015
-#define _clts 0x016
-#define _cmc 0x017
-#define _cmp 0x018
-#define _cmps 0x019
-#define _cmpsb 0x01a
-#define _cmpsw 0x01b
-#define _cmpsd 0x01c
-#define _cwd 0x01d
-#define _cdq 0x01e
-#define _daa 0x01f
-#define _das 0x020
-#define _dec 0x021
-#define _div 0x022
-#define _enter 0x023
-#define _hlt 0x024
-#define _idiv 0x025
-#define _imul 0x026
-#define _in 0x027
-#define _inc 0x028
-#define _ins 0x029
-#define _insb 0x02a
-#define _insw 0x02b
-#define _insd 0x02c
-#define _int 0x02d
-#define _into 0x02e
-#define _iret 0x02f
-#define _iretd 0x030
-#define _jo 0x031
-#define _jno 0x032
-#define _jb 0x033
-#define _jnb 0x034
-#define _jz 0x035
-#define _jnz 0x036
-#define _jbe 0x037
-#define _jnbe 0x038
-#define _js 0x039
-#define _jns 0x03a
-#define _jp 0x03b
-#define _jnp 0x03c
-#define _jl 0x03d
-#define _jnl 0x03e
-#define _jle 0x03f
-#define _jnle 0x040
-#define _jmp 0x041
-#define _lahf 0x042
-#define _lar 0x043
-#define _lea 0x044
-#define _leave 0x045
-#define _lgdt 0x046
-#define _lidt 0x047
-#define _lgs 0x048
-#define _lss 0x049
-#define _lds 0x04a
-#define _les 0x04b
-#define _lfs 0x04c
-#define _lldt 0x04d
-#define _lmsw 0x04e
-#define _lock 0x04f
-#define _lods 0x050
-#define _lodsb 0x051
-#define _lodsw 0x052
-#define _lodsd 0x053
-#define _loop 0x054
-#define _loope 0x055
-#define _loopz 0x056
-#define _loopne 0x057
-#define _loopnz 0x058
-#define _lsl 0x059
-#define _ltr 0x05a
-#define _mov 0x05b
-#define _movs 0x05c
-#define _movsb 0x05d
-#define _movsw 0x05e
-#define _movsd 0x05f
-#define _movsx 0x060
-#define _movzx 0x061
-#define _mul 0x062
-#define _neg 0x063
-#define _nop 0x064
-#define _not 0x065
-#define _or 0x066
-#define _out 0x067
-#define _outs 0x068
-#define _outsb 0x069
-#define _outsw 0x06a
-#define _outsd 0x06b
-#define _pop 0x06c
-#define _popa 0x06d
-#define _popad 0x06e
-#define _popf 0x06f
-#define _popfd 0x070
-#define _push 0x071
-#define _pusha 0x072
-#define _pushad 0x073
-#define _pushf 0x074
-#define _pushfd 0x075
-#define _rcl 0x076
-#define _rcr 0x077
-#define _rol 0x078
-#define _ror 0x079
-#define _rep 0x07a
-#define _repe 0x07b
-#define _repz 0x07c
-#define _repne 0x07d
-#define _repnz 0x07e
-#define _ret 0x07f
-#define _sahf 0x080
-#define _sal 0x081
-#define _sar 0x082
-#define _shl 0x083
-#define _shr 0x084
-#define _sbb 0x085
-#define _scas 0x086
-#define _scasb 0x087
-#define _scasw 0x088
-#define _scasd 0x089
-#define _set 0x08a
-#define _sgdt 0x08b
-#define _sidt 0x08c
-#define _shld 0x08d
-#define _shrd 0x08e
-#define _sldt 0x08f
-#define _smsw 0x090
-#define _stc 0x091
-#define _std 0x092
-#define _sti 0x093
-#define _stos 0x094
-#define _stosb 0x095
-#define _stosw 0x096
-#define _stosd 0x097
-#define _str 0x098
-#define _sub 0x099
-#define _test 0x09a
-#define _verr 0x09b
-#define _verw 0x09c
-#define _wait 0x09d
-#define _xchg 0x09e
-#define _xlat 0x09f
-#define _xlatb 0x0a0
-#define _xor 0x0a1
-#define _jcxz 0x0a2
-#define _loadall 0x0a3
-#define _invd 0x0a4
-#define _wbinv 0x0a5
-#define _seto 0x0a6
-#define _setno 0x0a7
-#define _setb 0x0a8
-#define _setnb 0x0a9
-#define _setz 0x0aa
-#define _setnz 0x0ab
-#define _setbe 0x0ac
-#define _setnbe 0x0ad
-#define _sets 0x0ae
-#define _setns 0x0af
-#define _setp 0x0b0
-#define _setnp 0x0b1
-#define _setl 0x0b2
-#define _setnl 0x0b3
-#define _setle 0x0b4
-#define _setnle 0x0b5
-#define _wrmsr 0x0b6
-#define _rdtsc 0x0b7
-#define _rdmsr 0x0b8
-#define _cpuid 0x0b9
-#define _rsm 0x0ba
-#define _cmpx 0x0bb
-#define _xadd 0x0bc
-#define _bswap 0x0bd
-#define _invpg 0x0be
-#define _cmpx8 0x0bf
-#define _jmpf 0x0c0
-#define _retf 0x0c1
-#define _rdpmc 0x0c2
-
-#define _f2xm1 0x001
-#define _fabs 0x002
-#define _fadd 0x003
-#define _faddp 0x004
-#define _fbld 0x005
-#define _fbstp 0x006
-#define _fchs 0x007
-#define _fclex 0x008
-#define _fcom 0x009
-#define _fcomp 0x00a
-#define _fcompp 0x00b
-#define _fcos 0x00c
-#define _fdecstp 0x00d
-#define _fdiv 0x00e
-#define _fdivp 0x00f
-#define _fdivr 0x010
-#define _fdivrp 0x011
-#define _ffree 0x012
-#define _fiadd 0x013
-#define _ficom 0x014
-#define _ficomp 0x015
-#define _fidiv 0x016
-#define _fidivr 0x017
-#define _fild 0x018
-#define _fimul 0x019
-#define _fincstp 0x01a
-#define _finit 0x01b
-#define _fist 0x01c
-#define _fistp 0x01d
-#define _fisub 0x01e
-#define _fisubr 0x01f
-#define _fld 0x020
-#define _fld1 0x021
-#define _fldcw 0x022
-#define _fldenv 0x023
-#define _fldl2e 0x024
-#define _fldl2t 0x025
-#define _fldlg2 0x026
-#define _fldln2 0x027
-#define _fldpi 0x028
-#define _fldz 0x029
-#define _fmul 0x02a
-#define _fmulp 0x02b
-#define _fnop 0x02c
-#define _fpatan 0x02d
-#define _fprem 0x02e
-#define _fprem1 0x02f
-#define _fptan 0x030
-#define _frndint 0x031
-#define _frstor 0x032
-#define _fsave 0x033
-#define _fscale 0x034
-#define _fsin 0x035
-#define _fsincos 0x036
-#define _fsqrt 0x037
-#define _fst 0x038
-#define _fstcw 0x039
-#define _fstenv 0x03a
-#define _fstp 0x03b
-#define _fstsw 0x03c
-#define _fsub 0x03d
-#define _fsubp 0x03e
-#define _fsubr 0x03f
-#define _fsubrp 0x040
-#define _ftst 0x041
-#define _fucom 0x042
-#define _fucomp 0x043
-#define _fucompp 0x044
-#define _fxam 0x045
-#define _fxch 0x046
-#define _fxtract 0x047
-#define _fyl2x 0x048
-#define _fyl2xp1 0x049
-
-/******************************************************************************
-*
-* External data and strings
-*
-******************************************************************************/
-extern char* sNames[];
-extern char* sCoprocNames[];
-extern TOpcodeData Op1[ 256 ];
-extern TOpcodeData Op2[ 256 ];
-extern TOpcodeData Groups[ 17 ][ 8 ];
-extern TOpcodeData Coproc1[ 8 ][ 8 ];
-extern TOpcodeData Coproc2[ 8 ][ 16 * 4 ];
-extern char *sBytePtr;
-extern char *sWordPtr;
-extern char *sDwordPtr;
-extern char *sFwordPtr;
-extern char *sQwordPtr;
-extern char *sGenReg16_32[ 2 ][ 8 ];
-extern char *sSeg[ 8 ];
-extern char *sSegOverride[ 8 ];
-extern char *sSegOverrideDefaultES[ 8 ];
-extern char *sSegOverrideDefaultDS[ 8 ];
-extern char *sScale[ 4 ];
-extern char *sAdr1[ 2 ][ 8 ];
-extern char *sRegs1[ 2 ][ 2 ][ 8 ];
-extern char *sRegs2[];
-extern char *sControl[ 8 ];
-extern char *sDebug[ 8 ];
-extern char *sTest[ 8 ];
-extern char *sYptr[ 2 ];
-extern char *sXptr[ 2 ];
-extern char *sRep[ 4 ];
-extern char *sST[ 9 ];
-
-
-#endif // _DDEF_H_