DisasmInternal.h revision c97989161fbe75bc14cea477a5443bbf474dd3ad
/** @file
*
* VBox disassembler:
* Internal header
*/
/*
* Copyright (C) 2006-2007 innotek GmbH
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License as published by the Free Software Foundation,
* in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
* distribution. VirtualBox OSE is distributed in the hope that it will
* be useful, but WITHOUT ANY WARRANTY of any kind.
*
* If you received this file as part of a commercial VirtualBox
* distribution, then only the terms of your commercial VirtualBox
* license agreement apply instead of the previous paragraph.
*/
#ifndef __DisasmInternal_h__
#define __DisasmInternal_h__
#define ExceptionMemRead 0x666
#define ExceptionInvalidModRM 0x667
#define ExceptionInvalidParameter 0x668
#define IDX_ParseNop 0
#define IDX_ParseModRM 1
#define IDX_UseModRM 2
#define IDX_ParseImmByte 3
#define IDX_ParseImmBRel 4
#define IDX_ParseImmUshort 5
#define IDX_ParseImmV 6
#define IDX_ParseImmVRel 7
#define IDX_ParseImmAddr 8
#define IDX_ParseFixedReg 9
#define IDX_ParseImmUlong 10
#define IDX_ParseImmQword 11
#define IDX_ParseTwoByteEsc 12
#define IDX_ParseImmGrpl 13
#define IDX_ParseShiftGrp2 14
#define IDX_ParseGrp3 15
#define IDX_ParseGrp4 16
#define IDX_ParseGrp5 17
#define IDX_Parse3DNow 18
#define IDX_ParseGrp6 19
#define IDX_ParseGrp7 20
#define IDX_ParseGrp8 21
#define IDX_ParseGrp9 22
#define IDX_ParseGrp10 23
#define IDX_ParseGrp12 24
#define IDX_ParseGrp13 25
#define IDX_ParseGrp14 26
#define IDX_ParseGrp15 27
#define IDX_ParseGrp16 28
#define IDX_ParseModFence 29
#define IDX_ParseYv 30
#define IDX_ParseYb 31
#define IDX_ParseXv 32
#define IDX_ParseXb 33
#define IDX_ParseEscFP 34
#define IDX_ParseNopPause 35
#define IDX_ParseImmByteSX 36
#ifdef IN_RING0
#define DIS_THROW(a) /* Not available. */
#else
#endif
int ParseModRM_SizeOnly(RTUINTPTR pu8CodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu);
int ParseImmByte_SizeOnly(RTUINTPTR pu8CodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu);
int ParseImmByteSX_SizeOnly(RTUINTPTR pu8CodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu);
int ParseImmBRel_SizeOnly(RTUINTPTR pu8CodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu);
int ParseImmUshort_SizeOnly(RTUINTPTR pu8CodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu);
int ParseImmV_SizeOnly(RTUINTPTR pu8CodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu);
int ParseImmVRel_SizeOnly(RTUINTPTR pu8CodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu);
int ParseImmAddr_SizeOnly(RTUINTPTR pu8CodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu);
int ParseImmUlong_SizeOnly(RTUINTPTR pu8CodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu);
int ParseImmQword_SizeOnly(RTUINTPTR pu8CodeBlock, PCOPCODE pOp, POP_PARAMETER pParam, PDISCPUSTATE pCpu);
/* Floating point parsing */
/* Disassembler printf */
void disasmSprintf(char *pszOutput, RTUINTPTR pu8Instruction, PDISCPUSTATE pCpu, POP_PARAMETER pParam1, POP_PARAMETER pParam2, POP_PARAMETER pParam3 = NULL);
#ifdef IN_GC
#else
/* Read functions */
#endif
#endif /* !__DisasmInternal_h__ */