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

617 lines
6.1 KiB
C

/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
lds32tbl.c
Abstract:
Dispatch table for 32bit instructions with the LOCK prefix.
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 "dwordfns.h"
#include "miscfns.h"
#include "floatfns.h"
pfnDispatchInstruction LockDispatch32[256] = {
// 0
LOCKadd_m_r8,
LOCKadd_m_r32,
LOCKadd_r_m8,
LOCKadd_r_m32,
bad,
bad,
bad,
bad,
// 8
LOCKor_m_r8,
LOCKor_m_r32,
LOCKor_r_m8,
LOCKor_r_m32,
bad,
bad,
bad,
LOCKdispatch232,
// 10
LOCKadc_m_r8,
LOCKadc_m_r32,
LOCKadc_r_m8,
LOCKadc_r_m32,
bad,
bad,
bad,
bad,
// 18
LOCKsbb_m_r8,
LOCKsbb_m_r32,
LOCKsbb_r_m8,
LOCKsbb_r_m32,
bad,
bad,
bad,
bad,
// 20
LOCKand_m_r8,
LOCKand_m_r32,
LOCKand_r_m8,
LOCKand_r_m32,
bad,
bad,
bad,
bad,
// 28
LOCKsub_m_r8,
LOCKsub_m_r32,
LOCKsub_r_m8,
LOCKsub_r_m32,
bad,
bad,
bad,
bad,
// 30
LOCKxor_m_r8,
LOCKxor_m_r32,
LOCKxor_r_m8,
LOCKxor_r_m32,
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_132,
bad,
LOCKGROUP_1WS32,
bad,
bad,
xchg_r_m8,
xchg_r_m32,
// 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_332,
// f8
bad,
bad,
bad,
bad,
bad,
bad,
bad,
LOCKGROUP_532,
};
pfnDispatchInstruction LockDispatch232[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_r32,
bad,
bad,
bad,
bad,
// b0
LOCKcmpxchg_m_r8,
LOCKcmpxchg_m_r32,
bad,
LOCKbtr_m_r32,
bad,
bad,
bad,
bad,
// b8
bad,
bad,
LOCKGROUP_832,
LOCKbtc_m_r32,
bad,
bad,
bad,
bad,
// c0
LOCKxadd_m_r8,
LOCKxadd_m_r32,
bad,
bad,
bad,
bad,
bad,
LOCKcmpxchg8b,
// 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
};