disopcode.h revision c467a311444daed71e9cb36a637779be25682785
/** @file
* Disassembler - Opcodes
*/
/*
* Copyright (C) 2006-2014 Oracle Corporation
*
* 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 (GPL) 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.
*
* The contents of this file may alternatively be used under the terms
* of the Common Development and Distribution License Version 1.0
* (CDDL) only, as it comes in the "COPYING.CDDL" file of the
* VirtualBox OSE distribution, in which case the provisions of the
* CDDL are applicable instead of those of the GPL.
*
* You may elect to license modified versions of this file under the
* terms and conditions of either the GPL or the CDDL or both.
*/
#ifndef ___VBox_disopcode_h
#define ___VBox_disopcode_h
#define MODRM_MOD(a) (a>>6)
#define MODRM_RM(a) (a&0x7)
#define SIB_SCALE(a) (a>>6)
#define SIB_BASE(a) (a&0x7)
/** @defgroup grp_dis_opcodes Opcodes (DISOPCODE::uOpCode)
* @ingroup grp_dis
* @{
*/
enum OPCODES
{
/** @name Full Intel X86 opcode list
* @{ */
OP_INVALID = 0,
/** @} */
/** @name Floating point ops
* @{ */
/** @} */
/** @name 3DNow!
* @{ */
/** @} */
/** @name VT-x instructions
* @{ */
/** @} */
/** @name 64 bits instruction
* @{ */
/** @} */
};
/** @} */
/** @defgroup grp_dis_opparam Opcode parameters (DISOPCODE::fParam1,
* DISOPCODE::fParam2, DISOPCODE::fParam3)
* @ingroup grp_dis
* @{
*/
/**
* @remarks Register order is important for translations!!
*/
enum OP_PARM
{
};
#define OP_PARM_VTYPE(a) ((unsigned)a & 0xFE0)
#define OP_PARM_VSUBTYPE(a) ((unsigned)a & 0x01F)
#define OP_PARM_A 0x100
#define OP_PARM_VARIABLE OP_PARM_A
#define OP_PARM_E 0x120
#define OP_PARM_F 0x140
#define OP_PARM_G 0x160
#define OP_PARM_I 0x180
#define OP_PARM_J 0x1A0
#define OP_PARM_M 0x1C0
#define OP_PARM_O 0x1E0
#define OP_PARM_R 0x200
#define OP_PARM_X 0x220
#define OP_PARM_Y 0x240
/* Grouped rare parameters for optimization purposes */
#define OP_PARM_Q 0x380
#define OP_PARM_V 0x3E0
#define OP_PARM_H 0x440
#define OP_PARM_L 0x460
#define OP_PARM_NONE 0
#define OP_PARM_a 0x1
#define OP_PARM_b 0x2
#define OP_PARM_d 0x3
#define OP_PARM_dq 0x4
#define OP_PARM_p 0x5
#define OP_PARM_pd 0x6
#define OP_PARM_pi 0x7
#define OP_PARM_ps 0x8
#define OP_PARM_pq 0x9
#define OP_PARM_q 0xA
#define OP_PARM_s 0xB
#define OP_PARM_sd 0xC
#define OP_PARM_ss 0xD
#define OP_PARM_v 0xE
#define OP_PARM_w 0xF
#define OP_PARM_x 0x10
#define OP_PARM_y 0x11
#define OP_PARM_z 0x12
#define OP_PARM_qq 0x13
/** @} */
#endif