windows-nt/Source/XPSP1/NT/base/wow64/mscpu/decoder/lds16tbl.c
2020-09-26 16:20:57 +08:00

620 lines
6.2 KiB
C

// Tables for DS: 32-bit instructions
// (ie. no FS:, but DATA: specified)
/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
lds16tbl.c
Abstract:
Dispatch tables for instructions with DATA: override and the LOCK
prefix. It is used for both DS: and FS: overrides.
Author:
23-Aug-1995 Ori Gershony (t-orig)
Revision History:
--*/
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h>
#include <stdio.h>
#include "threadst.h"
#include "instr.h"
#include "decoderp.h"
#include "bytefns.h"
#include "wordfns.h"
#include "miscfns.h"
#include "floatfns.h"
pfnDispatchInstruction LockDispatch16[256] = {
// 0
LOCKadd_m_r8,
LOCKadd_m_r16,
LOCKadd_r_m8,
LOCKadd_r_m16,
bad,
bad,
bad,
bad,
// 8
LOCKor_m_r8,
LOCKor_m_r16,
LOCKor_r_m8,
LOCKor_r_m16,
bad,
bad,
bad,
LOCKdispatch216,
// 10
LOCKadc_m_r8,
LOCKadc_m_r16,
LOCKadc_r_m8,
LOCKadc_r_m16,
bad,
bad,
bad,
bad,
// 18
LOCKsbb_m_r8,
LOCKsbb_m_r16,
LOCKsbb_r_m8,
LOCKsbb_r_m16,
bad,
bad,
bad,
bad,
// 20
LOCKand_m_r8,
LOCKand_m_r16,
LOCKand_r_m8,
LOCKand_r_m16,
bad,
bad,
bad,
bad,
// 28
LOCKsub_m_r8,
LOCKsub_m_r16,
LOCKsub_r_m8,
LOCKsub_r_m16,
bad,
bad,
bad,
bad,
// 30
LOCKxor_m_r8,
LOCKxor_m_r16,
LOCKxor_r_m8,
LOCKxor_r_m16,
bad,
bad,
bad,
bad,
// 38
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 40
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 48
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 50
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 58
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 60
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 68
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 70
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 78
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 80
LOCKGROUP_18,
LOCKGROUP_116,
bad,
LOCKGROUP_1WS16,
bad,
bad,
xchg_r_m8,
xchg_r_m16,
// 88
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 90
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 98
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// a0
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// a8
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// b0
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// b8
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// c0
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// c8
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// d0
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// d8
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// e0
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// e8
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// f0
bad,
bad,
bad,
bad,
bad,
bad,
LOCKGROUP_38,
LOCKGROUP_316,
// f8
bad,
bad,
bad,
bad,
bad,
bad,
bad,
LOCKGROUP_516,
};
pfnDispatchInstruction LockDispatch216[256] = {
// 0
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 8
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 10
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 18
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 20
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 28
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 30
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 38
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 40
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 48
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 50
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 58
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 60
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 68
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 70
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 78
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 80
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 88
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 90
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// 98
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// a0
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// a8
bad,
bad,
bad,
LOCKbts_m_r16,
bad,
bad,
bad,
bad,
// b0
LOCKcmpxchg_m_r8,
LOCKcmpxchg_m_r16,
bad,
LOCKbtr_m_r16,
bad,
bad,
bad,
bad,
// b8
bad,
bad,
LOCKGROUP_816,
LOCKbtc_m_r16,
bad,
bad,
bad,
bad,
// c0
LOCKxadd_m_r8,
LOCKxadd_m_r16,
bad,
bad,
bad,
bad,
bad,
bad,
// c8
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// d0
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// d8
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// e0
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// e8
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// f0
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad,
// f8
bad,
bad,
bad,
bad,
bad,
bad,
bad,
bad
};