138 lines
4.3 KiB
C
138 lines
4.3 KiB
C
|
/*** unasm.h - Unassembler Private Definitions
|
||
|
*
|
||
|
* Copyright (c) 1996,1998 Microsoft Corporation
|
||
|
* Author: Michael Tsang (MikeTs)
|
||
|
* Created 03/24/98
|
||
|
*
|
||
|
* MODIFICATION HISTORY
|
||
|
*/
|
||
|
|
||
|
#ifndef _UNASM_H
|
||
|
#define _UNASM_H
|
||
|
|
||
|
#ifdef DEBUGGER
|
||
|
|
||
|
/*** Constants
|
||
|
*/
|
||
|
|
||
|
// Implementation constants
|
||
|
#define MAX_ARGS 7
|
||
|
|
||
|
// Error codes
|
||
|
#define UNASMERR_NONE 0
|
||
|
#define UNASMERR_FATAL -1
|
||
|
#define UNASMERR_INVALID_OPCODE -2
|
||
|
#define UNASMERR_ABORT -3
|
||
|
|
||
|
// Opcode classes
|
||
|
#define OPCLASS_INVALID 0
|
||
|
#define OPCLASS_DATA_OBJ 1
|
||
|
#define OPCLASS_NAME_OBJ 2
|
||
|
#define OPCLASS_CONST_OBJ 3
|
||
|
#define OPCLASS_CODE_OBJ 4
|
||
|
#define OPCLASS_ARG_OBJ 5
|
||
|
#define OPCLASS_LOCAL_OBJ 6
|
||
|
|
||
|
// NameSpace object types
|
||
|
#define NSTYPE_UNKNOWN 'U'
|
||
|
#define NSTYPE_SCOPE 'S'
|
||
|
#define NSTYPE_FIELDUNIT 'F'
|
||
|
#define NSTYPE_DEVICE 'D'
|
||
|
#define NSTYPE_EVENT 'E'
|
||
|
#define NSTYPE_METHOD 'M'
|
||
|
#define NSTYPE_MUTEX 'X'
|
||
|
#define NSTYPE_OPREGION 'O'
|
||
|
#define NSTYPE_POWERRES 'P'
|
||
|
#define NSTYPE_PROCESSOR 'C'
|
||
|
#define NSTYPE_THERMALZONE 'T'
|
||
|
#define NSTYPE_OBJALIAS 'A'
|
||
|
#define NSTYPE_BUFFFIELD 'B'
|
||
|
|
||
|
// Term classes
|
||
|
#define UTC_PNP_MACRO 0x00100000
|
||
|
#define UTC_REF_OBJECT 0x00200000
|
||
|
#define UTC_FIELD_MACRO 0x00400000
|
||
|
#define UTC_DATA_OBJECT 0x00800000
|
||
|
#define UTC_NAMED_OBJECT 0x01000000
|
||
|
#define UTC_NAMESPACE_MODIFIER 0x02000000
|
||
|
#define UTC_OPCODE_TYPE1 0x04000000
|
||
|
#define UTC_OPCODE_TYPE2 0x08000000
|
||
|
#define UTC_CONST_NAME 0x10000000
|
||
|
#define UTC_SHORT_NAME 0x20000000
|
||
|
#define UTC_COMPILER_DIRECTIVE 0x40000000
|
||
|
#define UTC_KEYWORD 0x80000000
|
||
|
#define UTC_OPCODE (UTC_OPCODE_TYPE1 | UTC_OPCODE_TYPE2 | \
|
||
|
UTC_SHORT_NAME | UTC_CONST_NAME | \
|
||
|
UTC_DATA_OBJECT)
|
||
|
|
||
|
// Term flags
|
||
|
#define TF_ACTION_FLIST 0x00000001
|
||
|
#define TF_ACTION_VLIST 0x00000002
|
||
|
#define TF_PACKAGE_LEN 0x00000004
|
||
|
#define TF_CHANGE_CHILDSCOPE 0x00000008
|
||
|
#define TF_FIELD_MACRO UTC_FIELD_MACRO
|
||
|
#define TF_DATA_OBJECT UTC_DATA_OBJECT
|
||
|
#define TF_NAMED_OBJECT UTC_NAMED_OBJECT
|
||
|
#define TF_NAMESPACE_MODIFIER UTC_NAMESPACE_MODIFIER
|
||
|
#define TF_OPCODE_TYPE1 UTC_OPCODE_TYPE1
|
||
|
#define TF_OPCODE_TYPE2 UTC_OPCODE_TYPE2
|
||
|
#define TF_CONST_NAME UTC_CONST_NAME
|
||
|
#define TF_SHORT_NAME UTC_SHORT_NAME
|
||
|
#define TF_COMPILER_DIRECTIVE UTC_COMPILER_DIRECTIVE
|
||
|
#define TF_KEYWORD UTC_KEYWORD
|
||
|
#define TF_PNP_MACRO UTC_PNP_MACRO
|
||
|
#define TF_OBJECT_LIST (UTC_NAMED_OBJECT | UTC_NAMESPACE_MODIFIER)
|
||
|
#define TF_CODE_LIST (UTC_OPCODE_TYPE1 | UTC_OPCODE_TYPE2)
|
||
|
#define TF_DATA_LIST 0x00010000
|
||
|
#define TF_FIELD_LIST 0x00020000
|
||
|
#define TF_BYTE_LIST 0x00040000
|
||
|
#define TF_DWORD_LIST 0x00080000
|
||
|
#define TF_PACKAGE_LIST (UTC_DATA_OBJECT | UTC_SHORT_NAME | \
|
||
|
UTC_CONST_NAME)
|
||
|
#define TF_ALL_LISTS (TF_DATA_OBJECT | TF_NAMED_OBJECT | \
|
||
|
TF_NAMESPACE_MODIFIER | TF_OPCODE_TYPE1 | \
|
||
|
TF_OPCODE_TYPE2 | TF_SHORT_NAME | \
|
||
|
TF_CONST_NAME | TF_COMPILER_DIRECTIVE | \
|
||
|
TF_DATA_LIST | TF_PACKAGE_LIST | \
|
||
|
TF_FIELD_LIST | TF_PNP_MACRO | TF_BYTE_LIST |\
|
||
|
TF_DWORD_LIST)
|
||
|
|
||
|
/*** Type definitions
|
||
|
*/
|
||
|
|
||
|
typedef ULONG NAMESEG;
|
||
|
typedef int (LOCAL *PFNTERM)(PTOKEN, BOOL);
|
||
|
|
||
|
typedef struct _aslterm
|
||
|
{
|
||
|
PSZ pszID;
|
||
|
ULONG dwfTermClass;
|
||
|
ULONG dwTermData;
|
||
|
ULONG dwOpcode;
|
||
|
PSZ pszUnAsmArgTypes;
|
||
|
PSZ pszArgActions;
|
||
|
ULONG dwfTerm;
|
||
|
} ASLTERM, *PASLTERM;
|
||
|
|
||
|
typedef struct _opmap
|
||
|
{
|
||
|
UCHAR bExOp;
|
||
|
UCHAR bOpClass;
|
||
|
} OPMAP, *POPMAP;
|
||
|
|
||
|
// Data prototype
|
||
|
extern int giLevel;
|
||
|
extern ULONG_PTR guipbOpXlate;
|
||
|
extern PNSOBJ gpnsCurUnAsmScope;
|
||
|
extern ASLTERM TermTable[];
|
||
|
extern UCHAR OpClassTable[256];
|
||
|
extern OPMAP ExOpClassTable[];
|
||
|
|
||
|
// Exported functions
|
||
|
LONG LOCAL UnAsmScope(PUCHAR *ppbOp, PUCHAR pbEnd, ULONG_PTR uipbOp,
|
||
|
PNSOBJ pnsScope, int iLevel, int icLines);
|
||
|
|
||
|
#endif //ifdef DEBUGGER
|
||
|
|
||
|
#endif //ifndef _UNASM_H
|