237 lines
3.8 KiB
C
237 lines
3.8 KiB
C
/*++
|
|
|
|
Copyright (c) 1997 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
unasm.h
|
|
|
|
Abstract:
|
|
|
|
This unassembles an AML file
|
|
|
|
Author:
|
|
|
|
Based on code by Mike Tsang (MikeTs)
|
|
Stephane Plante (Splante)
|
|
|
|
Environment:
|
|
|
|
User mode only
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _UNASM_H_
|
|
#define _UNASM_H_
|
|
|
|
//
|
|
// Typedef for the print function
|
|
//
|
|
typedef VOID (*PUNASM_PRINT)(PCCHAR DebugMessage, ... );
|
|
|
|
//
|
|
// Global Variables
|
|
//
|
|
PUCHAR TopOpcode;
|
|
PUCHAR CurrentOpcode;
|
|
PUCHAR StartOpcode;
|
|
|
|
//
|
|
// Functions
|
|
//
|
|
UCHAR
|
|
LOCAL
|
|
ComputeDataCheckSum(
|
|
PUCHAR OpCode,
|
|
ULONG Length
|
|
);
|
|
|
|
VOID
|
|
LOCAL
|
|
DumpCode(
|
|
PUCHAR *Opcode,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR BaseAddress,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
PASLTERM
|
|
LOCAL
|
|
FindKeywordTerm(
|
|
UCHAR KeyWordGroup,
|
|
UCHAR Data
|
|
);
|
|
|
|
UCHAR
|
|
LOCAL
|
|
FindOpClass(
|
|
UCHAR OpCode,
|
|
POPMAP OpCodeTable
|
|
);
|
|
|
|
PASLTERM
|
|
LOCAL
|
|
FindOpTerm(
|
|
ULONG OpCode
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
ParseNameTail(
|
|
PUCHAR *OpCode,
|
|
PUCHAR Buffer,
|
|
ULONG Length
|
|
);
|
|
|
|
ULONG
|
|
LOCAL
|
|
ParsePackageLen(
|
|
PUCHAR *OpCode,
|
|
PUCHAR *OpCodeNext
|
|
);
|
|
|
|
VOID
|
|
LOCAL
|
|
PrintIndent(
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
UnAsmArgs(
|
|
PUCHAR UnAsmArgTypes,
|
|
PUCHAR ArgActions,
|
|
PUCHAR *OpCode,
|
|
PNSOBJ *NameObject,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR BaseAddress,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
UnAsmDataList(
|
|
PUCHAR *OpCode,
|
|
PUCHAR OpCodeEnd,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR BaseAddress,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
UnAsmDataObj(
|
|
PUCHAR *OpCode,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR BaseAddress,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
EXPORT
|
|
UnAsmDSDT(
|
|
PUCHAR DSDT,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR DsdtLocation,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
UnAsmField(
|
|
PUCHAR *OpCode,
|
|
PULONG BitPos,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR BaseAddress,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
UnAsmFieldList(
|
|
PUCHAR *OpCode,
|
|
PUCHAR OpCodeEnd,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR BaseAddress,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
UnAsmHeader(
|
|
PDESCRIPTION_HEADER DsdtHeader,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR DsdtLocation,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
EXPORT
|
|
UnAsmLoadDSDT(
|
|
PUCHAR DSDT
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
UnAsmNameObj(
|
|
PUCHAR *OpCode,
|
|
PNSOBJ *NameObject,
|
|
UCHAR ObjectType,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR BaseAddress,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
UnAsmOpcode(
|
|
PUCHAR *OpCode,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR BaseAddress,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
UnAsmPkgList(
|
|
PUCHAR *OpCode,
|
|
PUCHAR OpCodeEnd,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR BaseAddress,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
UnAsmScope(
|
|
PUCHAR *OpCode,
|
|
PUCHAR OpCodeEnd,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR BaseAddress,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
UnAsmSuperName(
|
|
PUCHAR *OpCode,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR BaseAddress,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
NTSTATUS
|
|
LOCAL
|
|
UnAsmTermObj(
|
|
PASLTERM Term,
|
|
PUCHAR *OpCode,
|
|
PUNASM_PRINT PrintFunction,
|
|
ULONG_PTR BaseAddress,
|
|
ULONG IndentLevel
|
|
);
|
|
|
|
#endif
|