source: Daodan/src/beaengine/Includes/instr_set/opcodes_Grp16.c @ 984

Last change on this file since 984 was 984, checked in by alloc, 8 years ago

Daodan: TV code

File size: 3.0 KB
Line 
1/* Copyright 2006-2009, BeatriX
2 * File coded by BeatriX
3 *
4 * This file is part of BeaEngine.
5 *
6 *    BeaEngine is free software: you can redistribute it and/or modify
7 *    it under the terms of the GNU Lesser General Public License as published by
8 *    the Free Software Foundation, either version 3 of the License, or
9 *    (at your option) any later version.
10 *
11 *    BeaEngine is distributed in the hope that it will be useful,
12 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
13 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 *    GNU Lesser General Public License for more details.
15 *
16 *    You should have received a copy of the GNU Lesser General Public License
17 *    along with BeaEngine.  If not, see <http://www.gnu.org/licenses/>. */
18
19/* ====================================================================
20 *
21 * ==================================================================== */
22void __bea_callspec__ G16_(PDISASM pMyDisasm)
23{
24    GV.REGOPCODE = ((*((UInt8*)(UIntPtr) (GV.EIP_+1))) >> 3) & 0x7;
25    if (GV.REGOPCODE == 0) {
26        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
27        if (GV.MOD_!= 0x3) {
28            GV.MemDecoration = Arg2byte;
29            (*pMyDisasm).Instruction.Category = SSE_INSTRUCTION+CACHEABILITY_CONTROL;
30            #ifndef BEA_LIGHT_DISASSEMBLY
31               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "prefetchNTA ");
32            #endif
33        }
34        else {
35            FailDecode(pMyDisasm);
36        }
37    }
38    else if (GV.REGOPCODE == 1) {
39        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
40        if (GV.MOD_!= 0x3) {
41            GV.MemDecoration = Arg2byte;
42            (*pMyDisasm).Instruction.Category = SSE_INSTRUCTION+CACHEABILITY_CONTROL;
43            #ifndef BEA_LIGHT_DISASSEMBLY
44               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "prefetchT0 ");
45            #endif
46        }
47        else {
48            FailDecode(pMyDisasm);
49        }
50
51    }
52    else if (GV.REGOPCODE == 2) {
53        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
54        if (GV.MOD_!= 0x3) {
55            GV.MemDecoration = Arg2byte;
56            (*pMyDisasm).Instruction.Category = SSE_INSTRUCTION+CACHEABILITY_CONTROL;
57            #ifndef BEA_LIGHT_DISASSEMBLY
58               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "prefetchT1 ");
59            #endif
60        }
61        else {
62            FailDecode(pMyDisasm);
63        }
64
65    }
66    else if (GV.REGOPCODE == 3) {
67        MOD_RM(&(*pMyDisasm).Argument2, pMyDisasm);
68        if (GV.MOD_!= 0x3) {
69            GV.MemDecoration = Arg2byte;
70            (*pMyDisasm).Instruction.Category = SSE_INSTRUCTION+CACHEABILITY_CONTROL;
71            #ifndef BEA_LIGHT_DISASSEMBLY
72               (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "prefetchT2 ");
73            #endif
74        }
75        else {
76            FailDecode(pMyDisasm);
77        }
78
79    }
80
81    else {
82        FailDecode(pMyDisasm);
83    }
84    GV.EIP_+= GV.DECALAGE_EIP+2;
85}
Note: See TracBrowser for help on using the repository browser.