-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdecode_table.c
140 lines (126 loc) · 15.8 KB
/
decode_table.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include "global.h"
#include "instruction.h"
#include "decode.h"
const InstructionCatergory Catergories[] = {
{CAT_UNCONDITIONAL, 0xf0000000, 0xf0000000},
{CAT_DATAPROC, 0x0C000000, 0x00000000},
{CAT_LOADSTORE1, 0x0E000000, 0x04000000},
{CAT_LOADSTORE2, 0x0E000010, 0x06000000},
{CAT_BRANCH, 0x0C000000, 0x08000000},
{CAT_SVC, 0x0C000000, 0x0C000000}};
const InstructionCatergory DataProcCats[] = {
{DP_MISC, 0x01000000, 0x0F900080},
{DP_HWMMA, 0x01000010, 0x0F900090},
{DP_EXTRALSUP, 0x002000B0, 0x0F2000F0},
{DP_EXTRALSUP, 0x002000D0, 0x0F2000D0},
{DP_EXTRALS, 0x002000B0, 0x0E0000F0},
{DP_EXTRALS, 0x002000D0, 0x0E0000D0},
{DP_SP, 0x01000090, 0x0F0000F0},
{DP_REGISTER, 0x00000000, 0x0E000010},
{DP_REGISTERSR, 0x00000010, 0x0E000090},
{DP_MULTIPLYMA, 0x00000090, 0x0F0000F0},
{DP_IMMLD, 0x03000000, 0x0FF00000},
{DP_IMMHILD, 0x03400000, 0x0FF00000},
{DP_MSRIMM, 0x03200000, 0x0FB00000},
{DP_IMM, 0x02000000, 0x0E000000}};
const instr_info_t DataProcessingInstructionsR[] = {
{OP_AND, 0x00000000, 0x0FE00010, "And", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_EOR, 0x00200000, 0x0FE00010, "Eor", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_SUB, 0x00400000, 0x0FE00010, "Sub", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_RSB, 0x00600000, 0x0FE00010, "Rsb", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_ADD, 0x00800000, 0x0FE00010, "Add", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_ADC, 0x00A00000, 0x0FE00010, "Adc", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_SBC, 0x00C00000, 0x0FE00010, "Sbc", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_RSC, 0x00E00000, 0x0FE00010, "Rsc", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_TST, 0x01100000, 0x0FF00010, "Tst", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_TEQ, 0x01300000, 0x0FF00010, "Teq", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_CMP, 0x01500000, 0x0FF00010, "Cmp", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_CMN, 0x01700000, 0x0FF00010, "Cmn", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_ORR, 0x01800000, 0x0FE00010, "Orr", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_MOV, 0x01A00000, 0x0FE00FF0, "Mov", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_LSL, 0x01A00000, 0x0FE00070, "Lsl", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, Immediate, 0x00000F80, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_LSR, 0x01A00020, 0x0FE00070, "Lsr", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, Immediate, 0x00000F80, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_ASR, 0x01A00040, 0x0FE00070, "Asr", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, Immediate, 0x00000F80, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_RRX, 0x01A00060, 0x0FE000F0, "Rrx", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_ROR, 0x01A00060, 0x0FE00070, "Ror", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, Immediate, 0x0000F800, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_BIC, 0x01C00000, 0x0FE00010, "Bic", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_MVN, 0x01E00000, 0x0FE00010, "Mvn", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_NULL, 0xFFFFFFFF, 0xFFFFFFFF, "NULL", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR}};
const instr_info_t DataProcessingInstructionsRSR[] = {
{OP_AND, 0x00000010, 0x0FE00090, "And", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x00000F00, UNKNOWN_APSR},
{OP_EOR, 0x00200010, 0x0FE00090, "Eor", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x00000F00, UNKNOWN_APSR},
{OP_SUB, 0x00400010, 0x0FE00090, "Sub", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x00000F00, UNKNOWN_APSR},
{OP_RSB, 0x00600010, 0x0FE00090, "Rsb", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x00000F00, UNKNOWN_APSR},
{OP_ADD, 0x00800010, 0x0FE00090, "Add", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x00000F00, UNKNOWN_APSR},
{OP_ADC, 0x00A00010, 0x0FE00090, "Adc", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x00000F00, UNKNOWN_APSR},
{OP_SBC, 0x00C00010, 0x0FE00090, "Sbc", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x00000F00, UNKNOWN_APSR},
{OP_RSC, 0x00E00010, 0x0FE00090, "Rsc", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x00000F00, UNKNOWN_APSR},
{OP_TST, 0x01100010, 0x0FF00090, "Tst", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x0000F000, UNKNOWN_APSR},
{OP_TEQ, 0x01300010, 0x0FF00090, "Teq", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x0000F000, UNKNOWN_APSR},
{OP_CMP, 0x01500010, 0x0FF00090, "Cmp", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x0000F000, UNKNOWN_APSR},
{OP_CMN, 0x01700010, 0x0FF00090, "Cmn", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x0000F000, UNKNOWN_APSR},
{OP_ORR, 0x01800010, 0x0FE00090, "Orr", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000F000, Reg, 0x0000000F, Reg, 0x0000F000, UNKNOWN_APSR},
{OP_LSL, 0x01A00010, 0x0FE000F0, "Lsl", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, Reg, 0x00000F00, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_LSR, 0x01A00030, 0x0FE000F0, "Lsr", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, Reg, 0x00000F00, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_ASR, 0x01A00050, 0x0FE000F0, "Asr", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, Reg, 0x00000F00, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_ROR, 0x01A00070, 0x0FE000F0, "Ror", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, Reg, 0x00000F00, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_BIC, 0x01C00010, 0x0FE00090, "Bic", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x0000F000, UNKNOWN_APSR},
{OP_MVN, 0x01E00010, 0x0FE00090, "Mvn", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, Reg, 0x00000F00, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_NULL, 0xFFFFFFFF, 0xFFFFFFFF, "NULL", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR}};
const instr_info_t DataProcessingInstructionsIMM[] = {
{OP_AND, 0x02000000, 0x0FE00000, "And", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_EOR, 0x02200000, 0x0FE00000, "Eor", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_ADR, 0x022F0000, 0x0FEF0000, "Adr", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_SUB, 0x02400000, 0x0FE00000, "Sub", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_RSB, 0x02600000, 0x0FE00000, "Rsb", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_ADR, 0x028F0000, 0x0FEF0000, "Adr", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_ADD, 0x02800000, 0x0FE00000, "Add", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_ADC, 0x02A00000, 0x0FE00000, "Adc", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_SBC, 0x02C00000, 0x0FE00000, "Sbc", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_RSC, 0x02E00000, 0x0FE00000, "Rsc", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_TST, 0x03100000, 0x0FF00000, "Tst", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_TEQ, 0x03300000, 0x0FF00000, "Teq", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_CMP, 0x03500000, 0x0FF00000, "Cmp", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_CMN, 0x03700000, 0x0FF00000, "Cmn", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_ORR, 0x03800000, 0x0FE00000, "Orr", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_MOV, 0x03A00000, 0x0FE00000, "Mov", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_BIC, 0x03C00000, 0x0FE00000, "Bic", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_MVN, 0x03E00000, 0x0FE00000, "Mvn", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_NULL, 0xFFFFFFFF, 0xFFFFFFFF, "NULL", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR}};
const instr_info_t MultipyAndMultiplyAcc[] = {
{OP_MUL, 0x00000090, 0x0FE000F0, "Mul", Reg, 0x000F0000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, Reg, 0x00000F00, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_MLA, 0x00200090, 0x0FE000F0, "Mla", Reg, 0x000F0000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, Reg, 0x00000F00, Reg, 0x0000F000, UNKNOWN_APSR},
{OP_UMAAL, 0x00400090, 0x0FF000F0, "Umaal", Reg, 0x0000F000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x00000F00, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_MLS, 0x00600090, 0x0FF000F0, "Mls", Reg, 0x000F0000, TYPE_NONE, 0x00000000, Reg, 0x0000000F, Reg, 0x00000F00, Reg, 0x0000F000, UNKNOWN_APSR},
{OP_UMULL, 0x00800090, 0x0FE000F0, "Umull", Reg, 0x0000F000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x00000F00, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_UMLAL, 0x00A00090, 0x0FE000F0, "Umlal", Reg, 0x0000F000, Reg, 0x000F0000, Reg, 0x0000000F, Reg, 0x00000F00, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_SMULL, 0x00C00090, 0x0FE000F0, "Smull", Reg, 0x0000F000, Reg, 0x0000F0000, Reg, 0x0000000F, Reg, 0x00000F00, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_SMLAL, 0x00E00090, 0x0FE000F0, "Smlal", Reg, 0x00000000, Reg, 0x00000000, Reg, 0x00000000, Reg, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_NULL, 0xFFFFFFFF, 0xFFFFFFFF, "NULL", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR}};
const instr_info_t BranchInstructions[] = {
{OP_B, 0x0A000000, 0x0F000000, "B", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Immediate, 0x00FFFFFF, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000 , UNKNOWN_APSR},
{OP_BL, 0x0B000000, 0x0F000000, "Bl", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Immediate, 0x00FFFFFF, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000 , UNKNOWN_APSR},
{OP_NULL, 0xFFFFFFFF, 0xFFFFFFFF, "NULL", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR}};
const instr_info_t loadStore[] = {
{OP_STRT, 0x04200000, 0x0F700000, "Strt", Reg,0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_STRT, 0x06200000, 0x0F700010, "Strt", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_STR, 0x04000000, 0x0E500000, "Str", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_STR, 0x06000000, 0x0E500010, "Str", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_LDRT, 0x04300000, 0x0F700000, "Ldrt", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_LDRT, 0x06300000, 0x0F700010, "Ldrt", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_LDR, 0x04100000, 0x0E500000, "Ldr", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_LDR, 0x06100000, 0x0E500010, "Ldr", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_STRBT, 0x04600000, 0x0F700000, "Strbt", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_STRBT, 0x06600000, 0x0F700010, "Strbt", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_STRB, 0x044000000, 0x0E500000, "Strb", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_STRB, 0x064000000, 0x0E500010, "Strb", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_LDRBT, 0x04700000, 0x0F700000, "Ldrbt", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000,
UNKNOWN_APSR},
{OP_LDRBT, 0x06700000, 0x0F700010, "Ldrbt", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_LDRB, 0x04500000, 0x0E5000000, "Ldrb", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Immediate, 0x00000FFF, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_LDRB, 0x06500000, 0x0E5000010, "Ldrb", Reg, 0x0000F000, TYPE_NONE, 0x00000000, Reg, 0x000F0000, Reg, 0x0000000F, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_NULL, 0xFFFFFFFF, 0xFFFFFFFF, "NULL", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR}};
const instr_info_t serviceCalls[] = {
{OP_SVC, 0x0F000000, 0x0F000000, "svc", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, Immediate, 0x00FFFFFF, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR},
{OP_NULL, 0xFFFFFFFF, 0xFFFFFFFF, "NULL", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR}};
const instr_info_t NullInstruction[] = {{OP_NULL, 0xFFFFFFFF, 0xFFFFFFFF, "NULL", TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, TYPE_NONE, 0x00000000, UNKNOWN_APSR}};