87 lines
1.7 KiB
C
87 lines
1.7 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1996 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
instr.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This module contains structures, enums and constants used to define the
|
||
|
Intel instruction stream.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Dave Hastings (daveh) creation-date 23-Jun-1995
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef _INSTR_H_
|
||
|
#define _INSTR_H_
|
||
|
|
||
|
// We need the definitions of Entry Points for the instruction structure
|
||
|
#include "entrypt.h"
|
||
|
|
||
|
//
|
||
|
// This enumeration defines all of the possible operations.
|
||
|
// N.B. It is also used to find the fragment corresponding to the
|
||
|
// operation.
|
||
|
//
|
||
|
typedef enum _Operation {
|
||
|
#define DEF_INSTR(OpName, FlagsNeeded, FlagsSet, RegsSet, Opfl, FastPlaceFn, SlowPlaceFn, FragName) OpName,
|
||
|
#include "idata.h"
|
||
|
OP_MAX
|
||
|
} OPERATION, *POPERATION;
|
||
|
|
||
|
typedef enum _PlaceFn {
|
||
|
#define DEF_PLACEFN(Name) FN_ ## Name,
|
||
|
#include "fndata.h"
|
||
|
FN_MAX
|
||
|
} PLACEFN;
|
||
|
|
||
|
|
||
|
typedef struct _Operand {
|
||
|
enum {
|
||
|
OPND_NONE = 0,
|
||
|
OPND_NOCODEGEN,
|
||
|
OPND_REGREF,
|
||
|
OPND_REGVALUE,
|
||
|
OPND_ADDRREF,
|
||
|
OPND_ADDRVALUE32,
|
||
|
OPND_ADDRVALUE16,
|
||
|
OPND_ADDRVALUE8,
|
||
|
OPND_IMM,
|
||
|
OPND_MOVTOREG,
|
||
|
OPND_MOVREGTOREG,
|
||
|
OPND_MOVTOMEM,
|
||
|
} Type;
|
||
|
ULONG Immed;
|
||
|
ULONG Reg;
|
||
|
ULONG Scale;
|
||
|
ULONG IndexReg;
|
||
|
ULONG Alignment;
|
||
|
} OPERAND, *POPERAND;
|
||
|
|
||
|
typedef struct _Instruction {
|
||
|
OPERATION Operation;
|
||
|
OPERAND Operand1;
|
||
|
OPERAND Operand2;
|
||
|
OPERAND Operand3;
|
||
|
ULONG FsOverride;
|
||
|
ULONG Size;
|
||
|
PCHAR NativeStart;
|
||
|
ULONG IntelAddress;
|
||
|
DWORD RegsSet;
|
||
|
DWORD RegsNeeded;
|
||
|
DWORD RegsToCache;
|
||
|
BOOL EbpAligned;
|
||
|
PENTRYPOINT EntryPoint;
|
||
|
|
||
|
} INSTRUCTION, *PINSTRUCTION;
|
||
|
|
||
|
#endif
|