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

Last change on this file since 986 was 984, checked in by alloc, 11 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.