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

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

Daodan: TV code

File size: 2.8 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 *      0fbah
21 * ==================================================================== */
22void __bea_callspec__ G8_EvIb(PDISASM pMyDisasm)
23{
24    GV.REGOPCODE = ((*((UInt8*)(UIntPtr) (GV.EIP_+1))) >> 3) & 0x7;
25    EvIb(pMyDisasm);
26    if (GV.REGOPCODE == 4) {
27        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+BIT_UInt8;
28        #ifndef BEA_LIGHT_DISASSEMBLY
29           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "bt ");
30        #endif
31        (*pMyDisasm).Argument1.AccessMode = READ;
32        FillFlags(pMyDisasm, 11);
33    }
34    else if (GV.REGOPCODE == 5) {
35        if ((*pMyDisasm).Prefix.LockPrefix == InvalidPrefix) {
36            (*pMyDisasm).Prefix.LockPrefix = InUsePrefix;
37        }
38        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+BIT_UInt8;
39        #ifndef BEA_LIGHT_DISASSEMBLY
40           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "bts ");
41        #endif
42        (*pMyDisasm).Argument1.AccessMode = READ;
43        FillFlags(pMyDisasm, 11);
44    }
45    else if (GV.REGOPCODE == 6) {
46        if ((*pMyDisasm).Prefix.LockPrefix == InvalidPrefix) {
47            (*pMyDisasm).Prefix.LockPrefix = InUsePrefix;
48        }
49        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+BIT_UInt8;
50        #ifndef BEA_LIGHT_DISASSEMBLY
51           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "btr ");
52        #endif
53        (*pMyDisasm).Argument1.AccessMode = READ;
54        FillFlags(pMyDisasm, 11);
55    }
56    else if (GV.REGOPCODE == 7) {
57        if ((*pMyDisasm).Prefix.LockPrefix == InvalidPrefix) {
58            (*pMyDisasm).Prefix.LockPrefix = InUsePrefix;
59        }
60        (*pMyDisasm).Instruction.Category = GENERAL_PURPOSE_INSTRUCTION+BIT_UInt8;
61        #ifndef BEA_LIGHT_DISASSEMBLY
62           (void) strcpy ((*pMyDisasm).Instruction.Mnemonic, "btc ");
63        #endif
64        (*pMyDisasm).Argument1.AccessMode = READ;
65        FillFlags(pMyDisasm, 11);
66    }
67    else {
68        FailDecode(pMyDisasm);
69    }
70}
Note: See TracBrowser for help on using the repository browser.