DisasmInternal.h revision 82655936c9195f9f0f39aebb478115ffca8c0a55
77b1a2d8b5dbe2c0b5200794914239fee3c8ee5dvboxsync * VBox disassembler - Internal header.
bbede9c189def47a9880f0ffb03c0c230c774185vboxsync * Copyright (C) 2006-2012 Oracle Corporation
a0240ff4f7663045c848fdbc192ea3d4d9f70a11vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
a0240ff4f7663045c848fdbc192ea3d4d9f70a11vboxsync * available from http://www.virtualbox.org. This file is free software;
a0240ff4f7663045c848fdbc192ea3d4d9f70a11vboxsync * you can redistribute it and/or modify it under the terms of the GNU
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * General Public License (GPL) as published by the Free Software
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a0240ff4f7663045c848fdbc192ea3d4d9f70a11vboxsync/** @defgroup grp_dis_int Internals.
a0240ff4f7663045c848fdbc192ea3d4d9f70a11vboxsync * @ingroup grp_dis
a0240ff4f7663045c848fdbc192ea3d4d9f70a11vboxsync/** @name Index into g_apfnCalcSize and g_apfnFullDisasm.
d80c85a1bc7317da7d0cd1254fae6a20db039c8cvboxsync/** @name Opcode maps.
d80c85a1bc7317da7d0cd1254fae6a20db039c8cvboxsync/** Two byte opcode map with prefix 0x66 */
d80c85a1bc7317da7d0cd1254fae6a20db039c8cvboxsync/** Two byte opcode map with prefix 0xF2 */
5341459ca931b65de60b5af2a4cba6836b6b45cavboxsync/** Two byte opcode map with prefix 0xF3 */
5341459ca931b65de60b5af2a4cba6836b6b45cavboxsync/** Three byte opcode map (0xF 0x38) */
5341459ca931b65de60b5af2a4cba6836b6b45cavboxsyncextern PCDISOPCODE const g_apThreeByteMapX86_0F38[16];
5341459ca931b65de60b5af2a4cba6836b6b45cavboxsync/** Three byte opcode map with prefix 0x66 (0xF 0x38) */
5341459ca931b65de60b5af2a4cba6836b6b45cavboxsyncextern PCDISOPCODE const g_apThreeByteMapX86_660F38[16];
5341459ca931b65de60b5af2a4cba6836b6b45cavboxsync/** Three byte opcode map with prefix 0xF2 (0xF 0x38) */
5341459ca931b65de60b5af2a4cba6836b6b45cavboxsyncextern PCDISOPCODE const g_apThreeByteMapX86_F20F38[16];
5341459ca931b65de60b5af2a4cba6836b6b45cavboxsync/** Three byte opcode map with prefix 0x66 (0xF 0x3A) */
bbede9c189def47a9880f0ffb03c0c230c774185vboxsyncextern PCDISOPCODE const g_apThreeByteMapX86_660F3A[16];
bbede9c189def47a9880f0ffb03c0c230c774185vboxsync/** @name Opcode extensions (Group tables)
ee4d840f54fd2dcea8a73b1b86d5ec0db370b05dvboxsyncextern const DISOPCODE g_aMapX86_Group7_mod11_rm000[8];
ee4d840f54fd2dcea8a73b1b86d5ec0db370b05dvboxsyncextern const DISOPCODE g_aMapX86_Group7_mod11_rm001[8];
9496f2d398b49813176939d7a339ae513d5175efvboxsyncextern const DISOPCODE g_aMapX86_Group15_mod11_rm000[8];
21029597fc4b76d0db0c9542daee201447281781vboxsync/** 3DNow! map (0x0F 0x0F prefix) */
d80c85a1bc7317da7d0cd1254fae6a20db039c8cvboxsync/** Floating point opcodes starting with escape byte 0xDF
a0240ff4f7663045c848fdbc192ea3d4d9f70a11vboxsync * Wrapper which initializes an OPCODE.
1bf495e3eec00dd79cecb6b36ef2a97f422c3737vboxsync * We must use this so that we can exclude unused fields in order
a0240ff4f7663045c848fdbc192ea3d4d9f70a11vboxsync * to save precious bytes in the GC version.
a0240ff4f7663045c848fdbc192ea3d4d9f70a11vboxsync * @internal
d80c85a1bc7317da7d0cd1254fae6a20db039c8cvboxsync# define OP(pszOpcode, idxParse1, idxParse2, idxParse3, opcode, param1, param2, param3, optype) \
d80c85a1bc7317da7d0cd1254fae6a20db039c8cvboxsync { pszOpcode, idxParse1, idxParse2, idxParse3, 0, opcode, param1, param2, param3, optype }
d80c85a1bc7317da7d0cd1254fae6a20db039c8cvboxsync# define OP(pszOpcode, idxParse1, idxParse2, idxParse3, opcode, param1, param2, param3, optype) \
d80c85a1bc7317da7d0cd1254fae6a20db039c8cvboxsync { idxParse1, idxParse2, idxParse3, 0, opcode, param1, param2, param3, optype }