|
|
/*++
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
|