/*
decoder.h
Copyright (C) 2003-2006 Gil Dabah, http://ragestorm.net/distorm/
This library is licensed under the BSD license. See the file COPYING.
*/
#ifndef ___DECODER_H__
#define ___DECODER_H__
#include "diconfig.h"
#include "wstring.h"
typedef unsigned int _iflags;
// DEFAULT instructions decoding mode.
typedef enum {Decode16Bits = 0, Decode32Bits = 1, Decode64Bits = 2} _DecodeType;
typedef OFFSET_INTEGER _OffsetType;
typedef struct {
_WString mnemonic;
_WString operands;
_WString instructionHex;
unsigned int size;
_OffsetType offset;
} _DecodedInst;
typedef struct {
const unsigned char* code;
long codeLen;
_OffsetType codeOffset;
} _CodeInfo;
typedef enum {DECRES_NONE, DECRES_SUCCESS, DECRES_MEMORYERR, DECRES_INPUTERR} _DecodeResult;
_DecodeResult internal_decode(_OffsetType codeOffset, const unsigned char* code, long codeLen, _DecodeType dt, _DecodedInst result[], unsigned long maxResultCount, unsigned long* usedEntriesCount);
_DecodeType ADDR_SIZE_AFFECT(_DecodeType dt, _iflags totalPrefixes);
_DecodeType OP_SIZE_AFFECT(_DecodeType dt, _iflags totalPrefixes, unsigned char rex);
#endif // ___DECODER_H__